diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index b637b9a56..9741b8644 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -107,8 +107,4 @@ - - - - diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index eaea5299b..dcc53f8e9 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -8109,12 +8109,6 @@ - - - 完成阅片修改状态 - - - 添加阅片期任务 @@ -8127,6 +8121,12 @@ + + + 添加裁判任务 + + + 触发裁判任务(新) @@ -8141,12 +8141,6 @@ - - - 添加裁判任务 - - - 验证任务是否签名 @@ -8155,6 +8149,12 @@ + + + 完成阅片修改状态 + + + 阅片期配置 diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index 262c4158d..1d97f78fc 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -2052,7 +2052,7 @@ namespace IRaCIS.Application.Services #endregion - #region 提交问题 + #region 阅片任务 提交填写表单 /// /// 验证访视提交 @@ -2420,37 +2420,14 @@ namespace IRaCIS.Application.Services await _visitTaskRepository.SaveChangesAsync(); } + + #endregion - /// - /// 完成阅片修改状态 - /// - /// - private async Task FinishReadUpdateState(Guid visitTaskId) - { - //var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); - //if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned)) - //{ - // if (taskInfo.SouceReadModuleId != null) - // { - // await _readModuleRepository.UpdatePartialFromQueryAsync(taskInfo.SouceReadModuleId.Value, x => new ReadModule - // { - // ReadingStatus = ReadingStatusEnum.ReadCompleted - // }); - // } - // else if (taskInfo.SourceSubjectVisitId != null) - // { - // await _subjectVisitRepository.UpdatePartialFromQueryAsync(taskInfo.SourceSubjectVisitId.Value, x => new SubjectVisit - // { - // ReadingStatus = ReadingStatusEnum.ReadCompleted - // }); - // } - // await _subjectVisitRepository.SaveChangesAsync(); - //} - } + #region 阅片期 -全局和肿瘤学任务的生成 /// /// 添加阅片期任务 @@ -2477,39 +2454,39 @@ namespace IRaCIS.Application.Services switch (taskInfo.ReadingCategory) { case ReadingCategory.Visit: - needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId&&x.ReadingSetType==ReadingSetType.ImageReading) - .Select(x => new ReadingGenerataTaskDTO - { - IsUrgent = x.IsUrgent ?? false, - SubjectId = x.SubjectId, - VisitNum=x.VisitNum, - ReadingName = x.ModuleName, - ReadModuleId = x.Id, - ReadingCategory = typeChangeDic[x.ModuleType], - }).ToListAsync(); - if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Global)) - { - needReadList = needReadList.Where(x => x.ReadingCategory != ReadingCategory.Oncology).ToList(); - } + needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId && x.ReadingSetType == ReadingSetType.ImageReading) + .Select(x => new ReadingGenerataTaskDTO + { + IsUrgent = x.IsUrgent ?? false, + SubjectId = x.SubjectId, + VisitNum = x.VisitNum, + ReadingName = x.ModuleName, + ReadModuleId = x.Id, + ReadingCategory = typeChangeDic[x.ModuleType], + }).ToListAsync(); + if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.Global)) + { + needReadList = needReadList.Where(x => x.ReadingCategory != ReadingCategory.Oncology).ToList(); + } //needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList(); await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() { - OriginalVisitId= visitTaskId, + OriginalVisitId = visitTaskId, ReadingCategory = GenerateTaskCategory.Global, TrialId = taskInfo.TrialId, ReadingGenerataTaskList = needReadList - }) ; + }); break; - // 肿瘤学 + // 肿瘤学 case ReadingCategory.Global: var subjectVisitId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync(); - var oncologyReadId= await _readModuleRepository.Where(x => x.SubjectVisitId == subjectVisitId && x.ModuleType == ModuleTypeEnum.Oncology).Select(x => x.Id).FirstOrDefaultAsync(); + var oncologyReadId = await _readModuleRepository.Where(x => x.SubjectVisitId == subjectVisitId && x.ModuleType == ModuleTypeEnum.Oncology).Select(x => x.Id).FirstOrDefaultAsync(); await AddOncologyTask(oncologyReadId); break; } } - + @@ -2529,7 +2506,7 @@ namespace IRaCIS.Application.Services var readModuleInfo = await _readModuleRepository.Where(x => x.Id == oncologModuleId && x.ModuleType == ModuleTypeEnum.Oncology).FirstOrDefaultAsync(); - + // 如果当前是肿瘤学 if (readModuleInfo != null) @@ -2544,17 +2521,17 @@ namespace IRaCIS.Application.Services && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.JudgeVisitTaskId).FirstOrDefaultAsync(); // 获取系统配置 - var readingType = await _readingQuestionCriterionTrialRepository.Where(x=>x.Id== readModuleInfo.TrialReadingCriterionId).Select(x=>x.ReadingType).FirstOrDefaultAsync(); + var readingType = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == readModuleInfo.TrialReadingCriterionId).Select(x => x.ReadingType).FirstOrDefaultAsync(); // 判断阅片是否完成 if (judgeVisitTaskId == null && (await _visitTaskRepository.Where(x => x.SouceReadModuleId == globalreadModuleId && x.TaskState == TaskState.Effect && x.ReadingCategory == ReadingCategory.Global - && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate&&x.TrialReadingCriterionId== readModuleInfo.TrialReadingCriterionId + && x.ReadingTaskState == ReadingTaskState.HaveSigned && !x.IsAnalysisCreate && x.TrialReadingCriterionId == readModuleInfo.TrialReadingCriterionId ).CountAsync() == (int)readingType)) { finishReading = true; } - else if(judgeVisitTaskId!=null&& (await _visitTaskRepository.AnyAsync(x=>x.Id== judgeVisitTaskId.Value&&x.ReadingTaskState== ReadingTaskState.HaveSigned))) + else if (judgeVisitTaskId != null && (await _visitTaskRepository.AnyAsync(x => x.Id == judgeVisitTaskId.Value && x.ReadingTaskState == ReadingTaskState.HaveSigned))) { finishReading = true; } @@ -2596,11 +2573,38 @@ namespace IRaCIS.Application.Services } } - + } } + #endregion + + + + #region 阅片任务 -裁判任务的生成和触发 + + + + + + /// + /// 添加裁判任务 + /// + /// + private async Task SaveJudgeTask(SaveJudgeTaskDto inDto) + { + var trialId = await _visitTaskRepository.Where(x => inDto.VisitTaskIds.Contains(x.Id)).Select(x => x.TrialId).FirstOrDefaultAsync(); + + await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() + { + JudgeVisitTaskIdList = inDto.VisitTaskIds, + ReadingCategory = GenerateTaskCategory.Judge, + TrialId = trialId + }); + } + + /// /// 触发裁判任务(新) @@ -2610,23 +2614,23 @@ namespace IRaCIS.Application.Services private async Task TriggerJudgeQuestion(Guid visitTaskId) { List visitTaskids = new List(); - + var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).AsNoTracking().FirstNotNullAsync(); // 判断是否是一致性核查产生 if (visitTask.IsAnalysisCreate) { - visitTaskids=await _visitTaskRepository.Where(x=>x.ArmEnum== visitTask.ArmEnum&&x.TaskState==TaskState.Effect&&x.SourceSubjectVisitId== visitTask.SourceSubjectVisitId - &&x.SouceReadModuleId==visitTask.SouceReadModuleId && x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.Id).ToListAsync(); - + visitTaskids = await _visitTaskRepository.Where(x => x.ArmEnum == visitTask.ArmEnum && x.TaskState == TaskState.Effect && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId + && x.SouceReadModuleId == visitTask.SouceReadModuleId && x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).Select(x => x.Id).ToListAsync(); + } else { // 这里是非一致性分析产生的 - visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge - && x.TaskState== TaskState.Effect - && x.IsAnalysisCreate==false - && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync(); + visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory != ReadingCategory.Judge + && x.TaskState == TaskState.Effect + && x.IsAnalysisCreate == false + && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync(); } @@ -2728,7 +2732,7 @@ namespace IRaCIS.Application.Services else { // 这里判断一致性分析产生的全局阅片 - if (visitTask.ReadingCategory == ReadingCategory.Global && visitTask.IsAnalysisCreate&&(visitTask.IsSelfAnalysis??false)) + if (visitTask.ReadingCategory == ReadingCategory.Global && visitTask.IsAnalysisCreate && (visitTask.IsSelfAnalysis ?? false)) { var taskOneInfo = await this.GetGlobalReadingInfo(new GetGlobalReadingInfoInDto() { @@ -2743,12 +2747,13 @@ namespace IRaCIS.Application.Services { noteEqual = true; } - else { + else + { var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x => - x.VisitTask.IsAnalysisCreate==false&& - x.VisitTask.DoctorUserId==visitTask.DoctorUserId&& - x.VisitTask.TaskState== TaskState.Effect&& - (x.VisitTask.SourceSubjectVisitId??default(Guid))== lastTask.VisitId) + x.VisitTask.IsAnalysisCreate == false && + x.VisitTask.DoctorUserId == visitTask.DoctorUserId && + x.VisitTask.TaskState == TaskState.Effect && + (x.VisitTask.SourceSubjectVisitId ?? default(Guid)) == lastTask.VisitId) join question in _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion) on new { ReadingQuestionTrialId = questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId = question.Id } select new GlobalQuestionInfo() { @@ -2760,7 +2765,7 @@ namespace IRaCIS.Application.Services }; - var visitTaskQuestions =await query.ToListAsync(); + var visitTaskQuestions = await query.ToListAsync(); var newlist = visitTaskQuestions.Where(x => x.QuestionId != null).ToList().Union( lastTask.AfterQuestionList.Where(x => x.QuestionId != null).ToList() @@ -2777,14 +2782,14 @@ namespace IRaCIS.Application.Services noteEqual = noteEqual || ComputeJudgeResult(globalGroupTasks); } - + } } } - + if (noteEqual) @@ -2827,7 +2832,7 @@ namespace IRaCIS.Application.Services } - + /// /// 计算返回的结果 为True表示不相等 @@ -2892,23 +2897,10 @@ namespace IRaCIS.Application.Services return noteEqual; } - /// - /// 添加裁判任务 - /// - /// - private async Task SaveJudgeTask(SaveJudgeTaskDto inDto) - { - var trialId = await _visitTaskRepository.Where(x => inDto.VisitTaskIds.Contains(x.Id)).Select(x => x.TrialId).FirstOrDefaultAsync(); + #endregion - await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand() - { - JudgeVisitTaskIdList= inDto.VisitTaskIds, - ReadingCategory= GenerateTaskCategory.Judge, - TrialId= trialId - }); - } - #region 验证 + #region 阅片任务 签名验证 /// /// 验证任务是否签名 @@ -2926,5 +2918,39 @@ namespace IRaCIS.Application.Services } #endregion + + + #region 废弃 + + + /// + /// 完成阅片修改状态 + /// + /// + private async Task FinishReadUpdateState(Guid visitTaskId) + { + //var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + //if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned)) + //{ + // if (taskInfo.SouceReadModuleId != null) + // { + // await _readModuleRepository.UpdatePartialFromQueryAsync(taskInfo.SouceReadModuleId.Value, x => new ReadModule + // { + // ReadingStatus = ReadingStatusEnum.ReadCompleted + // }); + // } + // else if (taskInfo.SourceSubjectVisitId != null) + // { + // await _subjectVisitRepository.UpdatePartialFromQueryAsync(taskInfo.SourceSubjectVisitId.Value, x => new SubjectVisit + // { + // ReadingStatus = ReadingStatusEnum.ReadCompleted + // }); + // } + // await _subjectVisitRepository.SaveChangesAsync(); + //} + } + + #endregion + } }