任务阅片修改
parent
228254db09
commit
56e3bf64f2
|
@ -9460,11 +9460,11 @@
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SendVerifyCode(IRaCIS.Core.Application.Contracts.SiteSurveySendVerifyCode)">
|
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SendVerifyCode(IRaCIS.Core.Application.Contracts.SiteSurveySendVerifyCode)">
|
||||||
<summary>
|
<summary>
|
||||||
发送验证码
|
site 调研 发送验证码
|
||||||
</summary>
|
</summary>
|
||||||
<param name="userInfo"></param>
|
<param name="userInfo"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.VerifySendCode(IRaCIS.Core.Application.Contracts.LoginDto,IRaCIS.Core.Application.Auth.ITokenService)">
|
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.VerifySendCode(IRaCIS.Core.Application.Contracts.LoginDto,IRaCIS.Core.Application.Auth.ITokenService)">
|
||||||
<summary>
|
<summary>
|
||||||
|
@ -9520,14 +9520,6 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SubmissionRejection(System.Guid,System.Guid)">
|
|
||||||
<summary>
|
|
||||||
驳回
|
|
||||||
</summary>
|
|
||||||
<param name="trialId"></param>
|
|
||||||
<param name="trialSiteSurveyId"></param>
|
|
||||||
<returns></returns>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSurveySubmit(IRaCIS.Core.Application.Contracts.TrialSiteSurvyeSubmitDTO)">
|
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSurveySubmit(IRaCIS.Core.Application.Contracts.TrialSiteSurvyeSubmitDTO)">
|
||||||
<summary>
|
<summary>
|
||||||
提交 后台自动识别是谁提交
|
提交 后台自动识别是谁提交
|
||||||
|
|
|
@ -17,5 +17,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
Task<IResponseOutput> ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService);
|
Task<IResponseOutput> ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService);
|
||||||
|
|
||||||
Task<(int, List<IRUnReadSubjectView>)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto);
|
Task<(int, List<IRUnReadSubjectView>)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto);
|
||||||
|
|
||||||
|
Task<IQueryable<VisitTask>> GetNotOrderReadingQueryableAsync(Guid trialId, Guid trialReadingCriterionId);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -518,44 +518,17 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
var readingDivisionEnum = critrion.ReadingDivisionEnum;
|
|
||||||
|
|
||||||
var piReadingScopenEnum = critrion.PIReadingScopenEnum;
|
|
||||||
|
|
||||||
var taskQuery = _visitTaskRepository.Where(x => x.TrialId == iRUnReadSubjectQuery.TrialId /*&& x.DoctorUserId == _userInfo.Id*/ && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
|
|
||||||
|
|
||||||
.Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign)
|
|
||||||
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR, t => t.Subject.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
|
||||||
// 仅仅SR阅片 PI 没有任务列表
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.OnlySR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI, t => t.TrialId == Guid.Empty)
|
|
||||||
|
|
||||||
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
|
||||||
t => t.SourceSubjectVisit.IsBaseLine == true)
|
|
||||||
|
|
||||||
//PI 阅片所有
|
var taskQuery = await GetNotOrderReadingQueryableAsync(iRUnReadSubjectQuery.TrialId, trialReadingCriterionId);
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllBaselineandVisit,
|
|
||||||
t => true)
|
|
||||||
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
|
||||||
t => t.SourceSubjectVisit.IsBaseLine == false)
|
|
||||||
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
|
||||||
t => t.SourceSubjectVisit.IsBaseLine == false)
|
|
||||||
|
|
||||||
//SR 不阅片
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaselineandVisit,
|
|
||||||
t => t.TrialId == Guid.Empty)
|
|
||||||
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
|
||||||
t => t.SourceSubjectVisit.IsBaseLine == true);
|
|
||||||
|
|
||||||
IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
|
IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
|
||||||
{
|
{
|
||||||
FinishTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
|
FinishTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
|
||||||
SuggesteFinishedTime = await taskQuery.Where(x => x.ReadingTaskState != ReadingTaskState.HaveSigned).MaxAsync(x => x.SuggesteFinishedTime),
|
SuggesteFinishedTime = await taskQuery.Where(x => x.ReadingTaskState != ReadingTaskState.HaveSigned).MaxAsync(x => x.SuggesteFinishedTime),
|
||||||
|
|
||||||
|
|
||||||
UnReadTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
|
UnReadTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -586,6 +559,46 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<IQueryable<VisitTask>> GetNotOrderReadingQueryableAsync(Guid trialId, Guid trialReadingCriterionId)
|
||||||
|
{
|
||||||
|
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
||||||
|
|
||||||
|
var readingDivisionEnum = critrion.ReadingDivisionEnum;
|
||||||
|
|
||||||
|
var piReadingScopenEnum = critrion.PIReadingScopenEnum;
|
||||||
|
|
||||||
|
var taskQuery = _visitTaskRepository.Where(x => x.TrialId == trialId /*&& x.DoctorUserId == _userInfo.Id*/ && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
|
||||||
|
|
||||||
|
.Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign)
|
||||||
|
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR, t => t.Subject.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id))
|
||||||
|
// 仅仅SR阅片 PI 没有任务列表
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.OnlySR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI, t => t.TrialId == Guid.Empty)
|
||||||
|
|
||||||
|
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
||||||
|
t => t.SourceSubjectVisit.IsBaseLine == true)
|
||||||
|
|
||||||
|
//PI 阅片所有
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllBaselineandVisit,
|
||||||
|
t => true)
|
||||||
|
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
||||||
|
t => t.SourceSubjectVisit.IsBaseLine == false)
|
||||||
|
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
||||||
|
t => t.SourceSubjectVisit.IsBaseLine == false)
|
||||||
|
|
||||||
|
//SR 不阅片
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaselineandVisit,
|
||||||
|
t => t.TrialId == Guid.Empty)
|
||||||
|
|
||||||
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
||||||
|
t => t.SourceSubjectVisit.IsBaseLine == true);
|
||||||
|
|
||||||
|
return taskQuery;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取有序阅片IQuery对象
|
/// 获取有序阅片IQuery对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -609,11 +622,11 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
//PI 读基线的时候,subject 如果PI基线没阅片完,SR就不能看
|
//PI 读基线的时候,subject 如果PI基线没阅片完,SR就不能看
|
||||||
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
||||||
t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect && c.TrialReadingCriterionId==trialReadingCriterionId))
|
t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect && c.TrialReadingCriterionId == trialReadingCriterionId))
|
||||||
|
|
||||||
//PI 读随访的时候, subject 如果SR基线没阅片完,PI就不能看
|
//PI 读随访的时候, subject 如果SR基线没阅片完,PI就不能看
|
||||||
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
||||||
t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect && c.TrialReadingCriterionId == trialReadingCriterionId))
|
t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect && c.TrialReadingCriterionId == trialReadingCriterionId))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -630,7 +643,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
t => true)
|
t => true)
|
||||||
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit,
|
||||||
t => t.SourceSubjectVisit.IsBaseLine == false )
|
t => t.SourceSubjectVisit.IsBaseLine == false)
|
||||||
|
|
||||||
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
.WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline,
|
||||||
t => t.SourceSubjectVisit.IsBaseLine == false)
|
t => t.SourceSubjectVisit.IsBaseLine == false)
|
||||||
|
@ -644,7 +657,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
|
|
||||||
// 前序 不存在 未一致性核查未通过的 并且前序不存在未完成阅片的有效任务
|
// 前序 不存在 未一致性核查未通过的 并且前序不存在未完成阅片的有效任务
|
||||||
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum ))
|
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
||||||
|
|
||||||
//.WhereIf(piReadingScopenEnum == PIReadingScopenEnum.AllVisit,t =>
|
//.WhereIf(piReadingScopenEnum == PIReadingScopenEnum.AllVisit,t =>
|
||||||
// !t.Subject.SubjectVisitTaskList.Any(tk => tk.ReadingTaskState != ReadingTaskState.HaveSigned && tk.TaskState == TaskState.Effect && tk.VisitTaskNum < t.VisitTaskNum))
|
// !t.Subject.SubjectVisitTaskList.Any(tk => tk.ReadingTaskState != ReadingTaskState.HaveSigned && tk.TaskState == TaskState.Effect && tk.VisitTaskNum < t.VisitTaskNum))
|
||||||
|
@ -652,7 +665,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
.WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => (t.Subject.Code.Contains(inDto.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inDto.SubjectCode) && t.IsAnalysisCreate));
|
.WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => (t.Subject.Code.Contains(inDto.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inDto.SubjectCode) && t.IsAnalysisCreate));
|
||||||
|
|
||||||
|
|
||||||
var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode, x.SubjectCriterionClaimUserId ,x.SubjectCriterionClaimUser.UserName });
|
var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode, x.SubjectCriterionClaimUserId, x.SubjectCriterionClaimUser.UserName });
|
||||||
|
|
||||||
var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
|
var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
|
||||||
{
|
{
|
||||||
|
@ -660,7 +673,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
|
SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
|
||||||
|
|
||||||
ClaimUserId = x.Key.SubjectCriterionClaimUserId,
|
ClaimUserId = x.Key.SubjectCriterionClaimUserId,
|
||||||
ClaimUserName=x.Key.UserName,
|
ClaimUserName = x.Key.UserName,
|
||||||
|
|
||||||
SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
|
SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
|
||||||
|
|
||||||
|
@ -857,13 +870,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
{
|
{
|
||||||
// 针对同一个subject 不同阅片人 针对同一个访视申请重阅,是允许的,所以同一阅片人,针对同一suject 有访视申请重阅还未处理,不允许申请重阅
|
// 针对同一个subject 不同阅片人 针对同一个访视申请重阅,是允许的,所以同一阅片人,针对同一suject 有访视申请重阅还未处理,不允许申请重阅
|
||||||
if (await _visitTaskReReadingRepository.AnyAsync(t => t.OriginalReReadingTask.TrialId == task.TrialId && t.OriginalReReadingTask.SubjectId == task.SubjectId && t.OriginalReReadingTask.TaskState == TaskState.Effect
|
if (await _visitTaskReReadingRepository.AnyAsync(t => t.OriginalReReadingTask.TrialId == task.TrialId && t.OriginalReReadingTask.SubjectId == task.SubjectId && t.OriginalReReadingTask.TaskState == TaskState.Effect
|
||||||
&& t.OriginalReReadingTask.TrialReadingCriterionId == task.TrialReadingCriterionId
|
&& t.OriginalReReadingTask.TrialReadingCriterionId == task.TrialReadingCriterionId
|
||||||
&& t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default))
|
&& t.OriginalReReadingTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default))
|
||||||
{
|
{
|
||||||
//---当前为有序阅片,该受试者已有访视已申请重阅还未处理,暂不能继续申请重阅
|
//---当前为有序阅片,该受试者已有访视已申请重阅还未处理,暂不能继续申请重阅
|
||||||
throw new BusinessValidationFailedException(_localizer["VisitTask_SequentialReading"]);
|
throw new BusinessValidationFailedException(_localizer["VisitTask_SequentialReading"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1101,7 +1114,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
await SetMedicalReviewInvalidAsync(influenceTaskList, false);
|
await SetMedicalReviewInvalidAsync(influenceTaskList, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1486,7 +1499,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
if (influenceTask.Id == task.Id)
|
if (influenceTask.Id == task.Id)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await SetReReadingOrBackInfluenceAnalysisAsync(influenceTask.SubjectId);
|
await SetReReadingOrBackInfluenceAnalysisAsync(influenceTask.SubjectId);
|
||||||
|
|
||||||
|
@ -1564,7 +1577,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//包括临床数据签名状态
|
//包括临床数据签名状态
|
||||||
private async Task VisitBackAsync(Guid? subjectVisitId)
|
private async Task VisitBackAsync(Guid? subjectVisitId)
|
||||||
|
|
|
@ -178,7 +178,7 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<List<ReadingCustomTagDto>> GetCustomTag(GetCustomTagInDto inQuery)
|
public async Task<List<ReadingCustomTagDto>> GetCustomTag(GetCustomTagInDto inQuery)
|
||||||
{
|
{
|
||||||
var result= await _readingCustomTagRepository.Where(x => x.VisitTaskId == inQuery.VisitTaskId).ProjectTo<ReadingCustomTagDto>(_mapper.ConfigurationProvider).ToListAsync();
|
var result = await _readingCustomTagRepository.Where(x => x.VisitTaskId == inQuery.VisitTaskId).ProjectTo<ReadingCustomTagDto>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -664,7 +664,7 @@ namespace IRaCIS.Application.Services
|
||||||
throw new BusinessValidationFailedException(_localizer["ReadingImage_BeSigned"]);
|
throw new BusinessValidationFailedException(_localizer["ReadingImage_BeSigned"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(await _visitTaskRepository.AnyAsync(x=> x.Id == visitTaskid && x.DoctorUserId != _userInfo.Id && x.SubjectCriterionClaimUserId != _userInfo.Id))
|
if (await _visitTaskRepository.AnyAsync(x => x.Id == visitTaskid && x.DoctorUserId != _userInfo.Id && x.SubjectCriterionClaimUserId != _userInfo.Id))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("当前任务领取人不是你,不允许提交签名");
|
throw new BusinessValidationFailedException("当前任务领取人不是你,不允许提交签名");
|
||||||
}
|
}
|
||||||
|
@ -2111,7 +2111,7 @@ namespace IRaCIS.Application.Services
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
public async Task<IResponseOutput> SubmitDicomVisitTask(SubmitDicomVisitTaskInDto inDto)
|
public async Task<IResponseOutput> SubmitDicomVisitTask(SubmitDicomVisitTaskInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
await this.SubmitTaskChangeState(inDto.VisitTaskId);
|
await this.SubmitTaskChangeState(inDto.VisitTaskId);
|
||||||
return ResponseOutput.Ok(true);
|
return ResponseOutput.Ok(true);
|
||||||
}
|
}
|
||||||
|
@ -2209,7 +2209,7 @@ namespace IRaCIS.Application.Services
|
||||||
SubjectId = taskInfo.SubjectId,
|
SubjectId = taskInfo.SubjectId,
|
||||||
TrialId = taskInfo.TrialId,
|
TrialId = taskInfo.TrialId,
|
||||||
VisitTaskId = taskInfo.Id,
|
VisitTaskId = taskInfo.Id,
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var isBaseLine = false;
|
var isBaseLine = false;
|
||||||
|
@ -2330,16 +2330,37 @@ namespace IRaCIS.Application.Services
|
||||||
if (task != null)
|
if (task != null)
|
||||||
{
|
{
|
||||||
// 有序 自动领取该Subject
|
// 有序 自动领取该Subject
|
||||||
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, SubejctId = task.SubjectId, TrialReadingCriterionId=task.TrialReadingCriterionId, VisitTaskId=task.VisitTaskId, IsInOrder = true });
|
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, SubejctId = task.SubjectId, TrialReadingCriterionId = task.TrialReadingCriterionId, VisitTaskId = task.VisitTaskId, IsInOrder = true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//无序取数据
|
|
||||||
task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned /*&& x.DoctorUserId == _userInfo.Id*/
|
#region 这里多了分配,删除之前的逻辑
|
||||||
&& x.TrialReadingCriterionId == trialReadingCriterionId
|
////无序取数据
|
||||||
&& x.TaskState == TaskState.Effect)
|
//task = await _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == trialReadingCriterionId && x.ReadingTaskState != ReadingTaskState.HaveSigned /*&& x.DoctorUserId == _userInfo.Id*/
|
||||||
.Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign)
|
//&& x.TrialReadingCriterionId == trialReadingCriterionId
|
||||||
|
//&& x.TaskState == TaskState.Effect)
|
||||||
|
// .Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign)
|
||||||
|
// .Select(x => new GetReadingTaskDto()
|
||||||
|
// {
|
||||||
|
// VisitTaskId = x.Id,
|
||||||
|
// ArmEnum = x.ArmEnum,
|
||||||
|
// TaskBlindName = x.TaskBlindName,
|
||||||
|
// ReadingCategory = x.ReadingCategory,
|
||||||
|
// VisistId = x.SourceSubjectVisitId != null ? x.SourceSubjectVisitId.Value : x.ReadModule == null ? default(Guid) : x.ReadModule.SubjectVisitId,
|
||||||
|
// VisitNum = x.VisitTaskNum,
|
||||||
|
// SubjectId = x.SubjectId,
|
||||||
|
// SubjectCode = x.Subject.Code,
|
||||||
|
// TrialReadingCriterionId = x.TrialReadingCriterionId,
|
||||||
|
// }).OrderByDescending(t => t.TaskBlindName).FirstOrDefaultAsync();
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
var taskQuery = await _visitTaskService.GetNotOrderReadingQueryableAsync(inDto.TrialId,(Guid) trialReadingCriterionId);
|
||||||
|
|
||||||
|
var list = taskQuery.ToList();
|
||||||
|
|
||||||
|
task = await taskQuery.OrderByDescending(t => t.TaskBlindName)
|
||||||
.Select(x => new GetReadingTaskDto()
|
.Select(x => new GetReadingTaskDto()
|
||||||
{
|
{
|
||||||
VisitTaskId = x.Id,
|
VisitTaskId = x.Id,
|
||||||
|
@ -2351,12 +2372,12 @@ namespace IRaCIS.Application.Services
|
||||||
SubjectId = x.SubjectId,
|
SubjectId = x.SubjectId,
|
||||||
SubjectCode = x.Subject.Code,
|
SubjectCode = x.Subject.Code,
|
||||||
TrialReadingCriterionId = x.TrialReadingCriterionId,
|
TrialReadingCriterionId = x.TrialReadingCriterionId,
|
||||||
}).OrderByDescending(t => t.TaskBlindName).FirstOrDefaultAsync();
|
}).OrderByDescending(t => t.TaskBlindName).FirstOrDefaultAsync();
|
||||||
|
|
||||||
if (task != null)
|
if (task != null)
|
||||||
{
|
{
|
||||||
// 无序
|
// 无序
|
||||||
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, VisitTaskId = task.VisitTaskId, IsInOrder = false });
|
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, VisitTaskId = task.VisitTaskId, IsInOrder = false });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2506,14 +2527,14 @@ namespace IRaCIS.Application.Services
|
||||||
if (claimSubjectDto.IsClaim)
|
if (claimSubjectDto.IsClaim)
|
||||||
{
|
{
|
||||||
//每个subject 每个标准的领取放在 任务上 免得加表
|
//每个subject 每个标准的领取放在 任务上 免得加表
|
||||||
if(_visitTaskRepository.Any(t=>t.Id== claimSubjectDto.SubejctId && t.TrialReadingCriterionId==claimSubjectDto.TrialReadingCriterionId
|
if (_visitTaskRepository.Any(t => t.Id == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId
|
||||||
&& t.SubjectCriterionClaimUserId != _userInfo.Id && t.SubjectCriterionClaimUserId != null))
|
&& t.SubjectCriterionClaimUserId != _userInfo.Id && t.SubjectCriterionClaimUserId != null))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("当前任务已被其他人领取,请进行其他的阅片任务");
|
throw new BusinessValidationFailedException("当前任务已被其他人领取,请进行其他的阅片任务");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId , u => new VisitTask() { SubjectCriterionClaimUserId = _userInfo.Id });
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId, u => new VisitTask() { SubjectCriterionClaimUserId = _userInfo.Id });
|
||||||
|
|
||||||
//列表可以看到当前阅片人是谁
|
//列表可以看到当前阅片人是谁
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.Id == claimSubjectDto.VisitTaskId, u => new VisitTask() { DoctorUserId = _userInfo.Id });
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.Id == claimSubjectDto.VisitTaskId, u => new VisitTask() { DoctorUserId = _userInfo.Id });
|
||||||
|
@ -2524,7 +2545,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
// 创建一个任务
|
// 创建一个任务
|
||||||
IJobDetail job = JobBuilder.Create<CancelTaskQuartZJob>()
|
IJobDetail job = JobBuilder.Create<CancelTaskQuartZJob>()
|
||||||
|
|
||||||
.UsingJobData("SubjectId", claimSubjectDto.SubejctId) // 传递GUID参数给任务
|
.UsingJobData("SubjectId", claimSubjectDto.SubejctId) // 传递GUID参数给任务
|
||||||
.UsingJobData("TrialReadingCriterionId", claimSubjectDto.TrialReadingCriterionId)
|
.UsingJobData("TrialReadingCriterionId", claimSubjectDto.TrialReadingCriterionId)
|
||||||
.UsingJobData("IsInOrder", claimSubjectDto.IsInOrder)
|
.UsingJobData("IsInOrder", claimSubjectDto.IsInOrder)
|
||||||
|
@ -2543,7 +2564,7 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId , u => new VisitTask() { SubjectCriterionClaimUserId = null });
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == claimSubjectDto.SubejctId && t.TrialReadingCriterionId == claimSubjectDto.TrialReadingCriterionId, u => new VisitTask() { SubjectCriterionClaimUserId = null });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//无序 直接用DoctorUserId 当做领取人
|
//无序 直接用DoctorUserId 当做领取人
|
||||||
|
@ -2563,7 +2584,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
IJobDetail job = JobBuilder.Create<CancelTaskQuartZJob>()
|
IJobDetail job = JobBuilder.Create<CancelTaskQuartZJob>()
|
||||||
.UsingJobData("VisitTaskId",(Guid) claimSubjectDto.VisitTaskId) // 传递GUID参数给任务
|
.UsingJobData("VisitTaskId", (Guid)claimSubjectDto.VisitTaskId) // 传递GUID参数给任务
|
||||||
.UsingJobData("IsInOrder", claimSubjectDto.IsInOrder).Build();
|
.UsingJobData("IsInOrder", claimSubjectDto.IsInOrder).Build();
|
||||||
|
|
||||||
// 创建一个触发器,设置任务执行时间为24小时后
|
// 创建一个触发器,设置任务执行时间为24小时后
|
||||||
|
@ -2590,7 +2611,7 @@ namespace IRaCIS.Application.Services
|
||||||
await VerifyTaskIsSign(visitTaskId);
|
await VerifyTaskIsSign(visitTaskId);
|
||||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
|
await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
|
||||||
{
|
{
|
||||||
DoctorUserId=_userInfo.Id,
|
DoctorUserId = _userInfo.Id,
|
||||||
ReadingTaskState = ReadingTaskState.HaveSigned,
|
ReadingTaskState = ReadingTaskState.HaveSigned,
|
||||||
SignTime = DateTime.Now,
|
SignTime = DateTime.Now,
|
||||||
});
|
});
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace IRaCIS.Application.Services
|
||||||
// 最开始过滤site已经选择的用户 现在又改回去。。。
|
// 最开始过滤site已经选择的用户 现在又改回去。。。
|
||||||
|
|
||||||
var query = _trialUseRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
|
var query = _trialUseRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
|
||||||
.Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA)
|
.Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA ||t.User.UserTypeEnum==UserTypeEnum.SR)
|
||||||
.WhereIf(param.UserTypeId != null, t => t.User.UserTypeId == param.UserTypeId)
|
.WhereIf(param.UserTypeId != null, t => t.User.UserTypeId == param.UserTypeId)
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName), t => (t.User.FullName).Contains(param.UserRealName))
|
.WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName), t => (t.User.FullName).Contains(param.UserRealName))
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName), t => t.User.OrganizationName.Contains(param.OrganizationName))
|
.WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName), t => t.User.OrganizationName.Contains(param.OrganizationName))
|
||||||
|
|
Loading…
Reference in New Issue