From 095be8aa1a34bf647d2eceb98834092c6d416d07 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 6 Apr 2023 17:16:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E9=98=85=20=E9=80=80=E5=9B=9E?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8F=90=E4=BA=A4=E4=B8=80=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 7 + .../Service/Allocation/VisitTaskService.cs | 912 ++++++++---------- 2 files changed, 428 insertions(+), 491 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index a0eebe9de..0a901c2db 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1443,6 +1443,13 @@ + + + 获取新靶病灶评估 + + + + diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 955496151..65bff5b7e 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -807,7 +807,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //var defalutSortArray = new string[] { nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.SubjectId), nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.VisitTaskNum) }; - var defalutSortArray = new string[] { + var defalutSortArray = new string[] { nameof(ReReadingTaskView.RequestReReadingResultEnum) , nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.TaskState), @@ -1515,7 +1515,7 @@ namespace IRaCIS.Core.Application.Service.Allocation var origenalTask = (await _visitTaskRepository.Where(t => item.OriginalReReadingTaskId == t.Id).FirstOrDefaultAsync()).IfNullThrowException(); - if ( (origenalTask.TaskState != TaskState.Effect && origenalTask.TaskState != TaskState.Freeze)) + if ((origenalTask.TaskState != TaskState.Effect && origenalTask.TaskState != TaskState.Freeze)) { //---当前申请重阅任务的状态,已被其他任务重阅已影响,不允许对该状态下的任务进行重阅同意与否操作 return ResponseOutput.NotOk(_localizer["VisitTask_ReapplyStatusConflict"]); @@ -1607,13 +1607,6 @@ namespace IRaCIS.Core.Application.Service.Allocation { ReReadingTaskTrackingDeal(influenceTask, agreeReReadingCommand); - //influenceTaskList.ForEach(t => - //{ - // //记录实际影像的任务 - - // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); - //}); - await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask, influenceTaskList.Where(t => t.Id != origenalTask.Id).Where(t => t.SourceSubjectVisitId != null).Select(t => (Guid)t.SourceSubjectVisitId).Distinct().ToList()); await SetReReadingOrBackInfluenceAnalysisAsync(origenalTask.SubjectId); @@ -1622,47 +1615,67 @@ namespace IRaCIS.Core.Application.Service.Allocation } - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 - if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != origenalTask.VisitTaskNum) + + if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.TaskState = TaskState.HaveReturned; + influenceTask.TaskState = TaskState.HaveReturned; - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); - } - else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) - { - influenceTask.TaskState = TaskState.Adbandon; - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); - } - else - { - influenceTask.DoctorUserId = null; - influenceTask.AllocateTime = null; - influenceTask.SuggesteFinishedTime = null; - influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; - - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.CancelAssign }); - } + trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); } - //当前访视 else { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.TaskState = TaskState.HaveReturned; - - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); - } - else - { - influenceTask.TaskState = TaskState.Adbandon; - - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); - } + influenceTask.TaskState = TaskState.Adbandon; + trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); } + + #region 废弃 分配 留存 + + ////申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + //if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != origenalTask.VisitTaskNum) + //{ + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.TaskState = TaskState.HaveReturned; + + // trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); + // } + // else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) + // { + // influenceTask.TaskState = TaskState.Adbandon; + // trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); + // } + // else + // { + // influenceTask.DoctorUserId = null; + // influenceTask.AllocateTime = null; + // influenceTask.SuggesteFinishedTime = null; + // influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; + + // trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.CancelAssign }); + // } + //} + ////当前访视 + //else + //{ + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.TaskState = TaskState.HaveReturned; + + // trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); + // } + // else + // { + // influenceTask.TaskState = TaskState.Adbandon; + + // trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); + // } + + //} + + #endregion + + } #endregion } @@ -1690,12 +1703,6 @@ namespace IRaCIS.Core.Application.Service.Allocation { ReReadingTaskTrackingDeal(influenceTask, agreeReReadingCommand); - //influenceTaskList.ForEach(t => - //{ - // //记录实际影像的任务 - - // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); - //}); await SetReReadingOrBackInfluenceAnalysisAsync(origenalTask.SubjectId); @@ -1741,77 +1748,12 @@ namespace IRaCIS.Core.Application.Service.Allocation RequestReReadingResultEnum = RequestReReadingResult.Agree, }); - //await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == origenalTask.Id, u => new VisitTask() - //{ - // ReReadingApplyState = ReReadingApplyState.Agree - //}); + #endregion - #region 申请任务 重新生成 拷贝表单 必须放在影响的访视生成任务之前,因为会影响 IsConvertedTask 标志 - - - await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() - { - TrialId = trialId, - - ReadingCategory = GenerateTaskCategory.ReReading, - - ReReadingTask = origenalTask, - - //同步才可以 - Action = (newTask) => - { - //申请表 设置新任务Id - visitTaskReReadingAppply.NewReReadingTaskId = newTask.Id; - - ////生成的任务分配给原始医生 - newTask.DoctorUserId = origenalTask.DoctorUserId; - newTask.TaskAllocationState = TaskAllocationState.Allocated; - newTask.AllocateTime = DateTime.Now; - newTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); - - - //裁判任务 需要进行特殊处理 在重阅逻辑里面处理 - - - //拷贝表单 - if (visitTaskReReadingAppply.IsCopyOrigenalForms) - { - if (origenalTask.ReadingCategory == ReadingCategory.Visit) - { - var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); - - foreach (var item in list) - { - item.Id = Guid.Empty; - item.VisitTaskId = newTask.Id; - } - - _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; - } - //else if (origenalTask.ReadingCategory == ReadingCategory.Global) - //{ - // var list = _repository.Where(t => t.GlobalTaskId == origenalTask.Id).ToList(); - - // foreach (var item in list) - // { - // item.Id = Guid.Empty; - // item.GlobalTaskId = newTask.Id; - // } - - // _ = _repository.AddRangeAsync(list).Result; - //} - - - } - - } - }); - - #endregion //有序阅片 if (criterionConfig.IsReadingTaskViewInOrder) @@ -1846,7 +1788,7 @@ namespace IRaCIS.Core.Application.Service.Allocation filterExpression = filterExpression.And(t => (t.VisitTaskNum > origenalTask.VisitTaskNum && ( - (((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == origenalTask.DoctorUserId) + ((t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == origenalTask.DoctorUserId) // 裁判 肿瘤学是另外的医生做 || t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology @@ -1857,7 +1799,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { filterExpression = filterExpression.And(t => t.VisitTaskNum >= origenalTask.VisitTaskNum && ( - (((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == origenalTask.DoctorUserId) + ((t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == origenalTask.DoctorUserId) // 裁判 肿瘤学是另外的医生做 || t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology @@ -1913,9 +1855,9 @@ namespace IRaCIS.Core.Application.Service.Allocation foreach (var influenceTask in influenceTaskList) { //已签名的任务 设置转变后的标志 - if (criterionConfig.CriterionType == CriterionType.IRECIST1Point1 && influenceTask.ReadingTaskState==ReadingTaskState.HaveSigned) + if (criterionConfig.CriterionType == CriterionType.IRECIST1Point1 && influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { - var isConvertedTask= _visitTaskRepository.Where(t => t.Id == influenceTask.Id).Select(t => t.IsConvertedTask).FirstOrDefault(); + var isConvertedTask = _visitTaskRepository.Where(t => t.Id == influenceTask.Id).Select(t => t.IsConvertedTask).FirstOrDefault(); if (isConvertedTask) { @@ -1934,106 +1876,138 @@ namespace IRaCIS.Core.Application.Service.Allocation await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask, influenceTaskList.Where(t => t.Id != origenalTask.Id).Where(t => t.SourceSubjectVisitId != null).Select(t => (Guid)t.SourceSubjectVisitId).Distinct().ToList(), false); + } + + + var beforeTaskState = influenceTask.TaskState; + + if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + { + influenceTask.TaskState = TaskState.HaveReturned; + trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); } - //处理其他任务 else { + influenceTask.TaskState = TaskState.Adbandon; - var beforeTaskState = influenceTask.TaskState; + trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); + } - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // 影响的任务 仅仅访视类别的才生成 + if (influenceTask.ReadingCategory == ReadingCategory.Visit) + { + + + // 影响的其他标准的附加评估的任务不立即生成 比如1.1基线 重阅 PM 同意仅仅生成1.1任务,不生成BM任务 + if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment && influenceTask.TrialReadingCriterionId != origenalTask.TrialReadingCriterionId) { - influenceTask.TaskState = TaskState.HaveReturned; - - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); - } - else - { - influenceTask.TaskState = TaskState.Adbandon; - - trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); + //BM标准的不生成任务 + continue; } - // 影响的任务 仅仅访视类别的才生成 - if (influenceTask.ReadingCategory == ReadingCategory.Visit) + + //当前任务是转变任务,并且影响列表里有转变之前的任务 那么该访视任务就不生成 + if (criterionConfig.CriterionType == CriterionType.IRECIST1Point1 && influenceTask.BeforeConvertedTaskId != null && influenceTaskList.Any(t => t.Id == influenceTask.BeforeConvertedTaskId)) { + continue; + } + #region 影响的任务生成 - // 影响的其他标准的附加评估的任务不立即生成 比如1.1基线 重阅 PM 同意仅仅生成1.1任务,不生成BM任务 - if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment && influenceTask.TrialReadingCriterionId != origenalTask.TrialReadingCriterionId) + await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() + { + TrialId = trialId, + + ReadingCategory = GenerateTaskCategory.ReReading, + + ReReadingTask = influenceTask, + + //同步才可以 + Action = (newTask) => { - //BM标准的不生成任务 - continue; - } + //申请表 设置新任务Id + visitTaskReReadingAppply.NewReReadingTaskId = newTask.Id; + + //生成的任务分配给原始医生 + newTask.DoctorUserId = origenalTask.DoctorUserId; + newTask.TaskAllocationState = TaskAllocationState.Allocated; + newTask.AllocateTime = DateTime.Now; + newTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); - //当前任务是转变任务,并且影响列表里有转变之前的任务 那么该访视任务就不生成 - if (criterionConfig.CriterionType == CriterionType.IRECIST1Point1 && influenceTask.BeforeConvertedTaskId != null && influenceTaskList.Any(t => t.Id == influenceTask.BeforeConvertedTaskId)) - { - continue; - } - - - await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() - { - TrialId = trialId, - - ReadingCategory = GenerateTaskCategory.ReReading, - - ReReadingTask = influenceTask, - - //同步才可以 - Action = (newTask) => + if (visitTaskReReadingAppply.IsCopyOrigenalForms && influenceTask.Id==origenalTask.Id) { - //申请表 设置新任务Id - visitTaskReReadingAppply.NewReReadingTaskId = newTask.Id; - - //生成的任务分配给原始医生 - newTask.DoctorUserId = origenalTask.DoctorUserId; - newTask.TaskAllocationState = TaskAllocationState.Allocated; - newTask.AllocateTime = DateTime.Now; - newTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); - - //拷贝后续表单 - if (visitTaskReReadingAppply.IsCopyFollowForms && origenalTask.VisitTaskNum != influenceTask.VisitTaskNum) + if (origenalTask.ReadingCategory == ReadingCategory.Visit) { - if (origenalTask.ReadingCategory == ReadingCategory.Visit) + var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in list) { - var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); - - foreach (var item in list) - { - item.Id = Guid.Empty; - item.VisitTaskId = newTask.Id; - } - - _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; } - //else if (origenalTask.ReadingCategory == ReadingCategory.Global) - //{ - // var list = _repository.Where(t => t.GlobalTaskId == origenalTask.Id).ToList(); - // foreach (var item in list) - // { - // item.Id = Guid.Empty; - // item.GlobalTaskId = newTask.Id; - // } - - // _ = _repository.AddRangeAsync(list).Result; - //} + _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; } + //else if (origenalTask.ReadingCategory == ReadingCategory.Global) + //{ + // var list = _repository.Where(t => t.GlobalTaskId == origenalTask.Id).ToList(); + + // foreach (var item in list) + // { + // item.Id = Guid.Empty; + // item.GlobalTaskId = newTask.Id; + // } + + // _ = _repository.AddRangeAsync(list).Result; + //} + } - }); + + //拷贝后续表单 + if (visitTaskReReadingAppply.IsCopyFollowForms && origenalTask.VisitTaskNum != influenceTask.VisitTaskNum) + { + if (origenalTask.ReadingCategory == ReadingCategory.Visit) + { + var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in list) + { + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; + } + + _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; + } + //else if (origenalTask.ReadingCategory == ReadingCategory.Global) + //{ + // var list = _repository.Where(t => t.GlobalTaskId == origenalTask.Id).ToList(); + + // foreach (var item in list) + // { + // item.Id = Guid.Empty; + // item.GlobalTaskId = newTask.Id; + // } + + // _ = _repository.AddRangeAsync(list).Result; + //} + } + + } + }); - } + #endregion + } + + } #endregion @@ -2083,6 +2057,73 @@ namespace IRaCIS.Core.Application.Service.Allocation } } + + if (influenceTask.ReadingCategory == ReadingCategory.Visit) + { + await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() + { + TrialId = trialId, + + ReadingCategory = GenerateTaskCategory.ReReading, + + ReReadingTask = origenalTask, + + //同步才可以 + Action = (newTask) => + { + //申请表 设置新任务Id + visitTaskReReadingAppply.NewReReadingTaskId = newTask.Id; + + ////生成的任务分配给原始医生 + newTask.DoctorUserId = origenalTask.DoctorUserId; + newTask.TaskAllocationState = TaskAllocationState.Allocated; + newTask.AllocateTime = DateTime.Now; + newTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); + + + //裁判任务 需要进行特殊处理 在重阅逻辑里面处理 + + + if (visitTaskReReadingAppply.IsCopyOrigenalForms && influenceTask.Id == origenalTask.Id) + { + if (origenalTask.ReadingCategory == ReadingCategory.Visit) + { + var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in list) + { + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; + } + + _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; + } + + } + + //拷贝后续表单 + if (visitTaskReReadingAppply.IsCopyFollowForms && origenalTask.VisitTaskNum != influenceTask.VisitTaskNum) + { + if (origenalTask.ReadingCategory == ReadingCategory.Visit) + { + var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in list) + { + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; + } + + _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; + } + } + + + } + }); + + } + } } @@ -2149,7 +2190,7 @@ namespace IRaCIS.Core.Application.Service.Allocation var task = (await _visitTaskRepository.Where(t => t.Id == taskId).FirstOrDefaultAsync()).IfNullThrowException(); - var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == task.TrialReadingCriterionId).Select(x => new { x.ReadingTool,x.CriterionType, x.IsAutoCreate, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException(); + var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == task.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.CriterionType, x.IsAutoCreate, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException(); if (criterionConfig.IsAutoCreate == false) { @@ -2197,6 +2238,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { //Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated; + filterExpression = filterExpression.And(t => t.IsAnalysisCreate == false); @@ -2209,107 +2251,6 @@ namespace IRaCIS.Core.Application.Service.Allocation - - #region 方式一 - //foreach (var influenceTask in influenceTaskList) - //{ - // //申请任务的阅片人 后续任务肯定没做, 只有访视任务,没有其他任务 取消分配 - // if (influenceTask.DoctorUserId == task.DoctorUserId) - // { - - // switch (influenceTask.ReadingCategory) - // { - // case ReadingCategory.Visit: - - // influenceTask.DoctorUserId = null; - // influenceTask.AllocateTime = null; - // influenceTask.SuggesteFinishedTime = null; - // influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; - // break; - - // case ReadingCategory.Global: - // case ReadingCategory.Judge: - // case ReadingCategory.Oncology: - - // throw new BusinessValidationFailedException("不支持回退任务类型"); - // } - // } - // //另外一个阅片人 - // else - // { - // //另外一个阅片人 有序PM 申请重阅流程 - // if (otherReviewerTask.ReadingTaskState == ReadingTaskState.HaveSigned) - // { - // switch (influenceTask.ReadingCategory) - // { - // case ReadingCategory.Visit: - - // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - // { - // influenceTask.TaskState = TaskState.HaveReturned; - // } - // else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) - // { - // influenceTask.TaskState = TaskState.Adbandon; - // } - // else - // { - // influenceTask.DoctorUserId = null; - // influenceTask.AllocateTime = null; - // influenceTask.SuggesteFinishedTime = null; - // influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; - // } - // break; - // case ReadingCategory.Global: - // case ReadingCategory.Oncology: - - // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - // { - // influenceTask.TaskState = TaskState.HaveReturned; - // } - // else - // { - // influenceTask.TaskState = TaskState.Adbandon; - // } - - // break; - - // case ReadingCategory.Judge: - // default: - - // throw new BusinessValidationFailedException("不支持回退任务类型"); - // } - // } - // //另外一个阅片人 有序 PM 回退流程 - // else - // { - // switch (influenceTask.ReadingCategory) - // { - // case ReadingCategory.Visit: - - // influenceTask.DoctorUserId = null; - // influenceTask.AllocateTime = null; - // influenceTask.SuggesteFinishedTime = null; - // influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; - // break; - - // case ReadingCategory.Global: - // case ReadingCategory.Judge: - // case ReadingCategory.Oncology: - - // throw new BusinessValidationFailedException("不支持回退任务类型"); - // } - // } - - // } - //} - - - - #endregion - - - #region 方式二 var origenalTask = influenceTaskList.Where(t => t.Id == task.Id).FirstOrDefault(); @@ -2328,17 +2269,9 @@ namespace IRaCIS.Core.Application.Service.Allocation } } - - //同意的访视 因为要记录具体的操作,所以废弃 if (influenceTask.Id == task.Id) { - //influenceTaskList.ForEach(t => - //{ - // //记录实际影像的任务 - - // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); - //}); await InfluenceAddtioncalEvaluationCritrionAsync(task, influenceTaskList.Where(t => t.Id != task.Id).Where(t => t.SourceSubjectVisitId != null).Select(t => (Guid)t.SourceSubjectVisitId).Distinct().ToList()); @@ -2350,48 +2283,64 @@ namespace IRaCIS.Core.Application.Service.Allocation influenceTask.IsPMSetBack = true; } - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 - if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != task.VisitTaskNum) + if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { - //后续访视处理访视 - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.TaskState = TaskState.HaveReturned; - - origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); - } - else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) - { - influenceTask.TaskState = TaskState.Adbandon; - origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); - } - else - { - influenceTask.DoctorUserId = null; - influenceTask.AllocateTime = null; - influenceTask.SuggesteFinishedTime = null; - influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; - - origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.CancelAssign }); - } + influenceTask.TaskState = TaskState.HaveReturned; + origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); } else { - //申请的访视 全局肿瘤学 - - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.TaskState = TaskState.HaveReturned; - origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); - } - else - { - influenceTask.TaskState = TaskState.Adbandon; - origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); - } - + influenceTask.TaskState = TaskState.Adbandon; + origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); } + #region 废弃取消分配留存 + + ////申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + //if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != task.VisitTaskNum) + //{ + // //后续访视处理访视 + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.TaskState = TaskState.HaveReturned; + + // origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); + // } + // else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) + // { + // influenceTask.TaskState = TaskState.Adbandon; + // origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); + // } + // else + // { + // influenceTask.DoctorUserId = null; + // influenceTask.AllocateTime = null; + // influenceTask.SuggesteFinishedTime = null; + // influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate; + + // origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.CancelAssign }); + // } + //} + //else + //{ + // //申请的访视 全局肿瘤学 + + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.TaskState = TaskState.HaveReturned; + // origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); + // } + // else + // { + // influenceTask.TaskState = TaskState.Adbandon; + // origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); + // } + + //} + #endregion + + + } #endregion @@ -2404,25 +2353,6 @@ namespace IRaCIS.Core.Application.Service.Allocation { //无序 无序阅片没有 全局 肿瘤学 - - //// 当前任务标为失效 - //task.TaskState = TaskState.Adbandon; - - ////考虑该访视 另外一个阅片人的任务 - //var otherReviewerTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.Id != task.Id && t.TaskState == TaskState.Effect); - - - //if (otherReviewerTask.ReadingTaskState == ReadingTaskState.HaveSigned) - //{ - // //另外阅片人完成阅片了 就设置为重阅重置 - // otherReviewerTask.TaskState = TaskState.HaveReturned; - //} - //else - //{ - // otherReviewerTask.TaskState = TaskState.Adbandon; - //} - - // 申请该访视的任务 申请人失效 另外一个人重阅重置或者失效 var currentVisitList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.ReadingCategory == ReadingCategory.Visit && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.VisitTaskNum == task.VisitTaskNum, true).ToListAsync(); @@ -2447,16 +2377,6 @@ namespace IRaCIS.Core.Application.Service.Allocation origenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Abandon }); } - ////同意的访视 - //if (influenceTask.Id == task.Id) - //{ - // currentVisitList.ForEach(t => - // { - // //记录实际影像的任务 - - // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); - // }); - //} } } @@ -2686,7 +2606,7 @@ namespace IRaCIS.Core.Application.Service.Allocation filterExpression = filterExpression.And(t => (t.VisitTaskNum > filterObj.VisitTaskNum && ( - (((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == filterObj.DoctorUserId) + ((t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == filterObj.DoctorUserId) // 裁判 肿瘤学是另外的医生做 || t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology @@ -2697,7 +2617,7 @@ namespace IRaCIS.Core.Application.Service.Allocation { filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && ( - (((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState != ReadingTaskState.WaitReading) || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == filterObj.DoctorUserId) + ((t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global) && t.DoctorUserId == filterObj.DoctorUserId) // 裁判 肿瘤学是另外的医生做 || t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology @@ -2869,138 +2789,148 @@ namespace IRaCIS.Core.Application.Service.Allocation foreach (var influenceTask in list) { + influenceTask.OptType = influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned ? ReReadingOrBackOptType.Return : ReReadingOrBackOptType.Abandon; - if (isReReading) - { - if ((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId != null) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)) - { - //有序 - if (criterionConfig.IsReadingTaskViewInOrder) - { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - //else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) - //{ - // influenceTask.OptType = ReReadingOrBackOptType.Abandon; - //} - //else - //{ - // throw new BusinessValidationFailedException("IR 申请重阅,不会影响到后续未读的任务,当前影响列表有未读的任务,请核查"); - //} - } - else - { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - } - } - if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) && applyId != null) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId == null)) - { - //有序 - if (criterionConfig.IsReadingTaskViewInOrder) - { - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 - if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != filterObj.VisitTaskNum) - { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.CancelAssign; - } - } - else - { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - } - } - else - { - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - } - } + #region 变更前 注释 - } - //PM退回 - else - { + //if (isReReading) + //{ - //有序 - if (criterionConfig.IsReadingTaskViewInOrder) - { - //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 - if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != filterObj.VisitTaskNum) - { - //后续访视处理访视 - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.CancelAssign; - } - } - else - { - //申请的访视 全局肿瘤学 + // if ((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId != null) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)) + // { + // //有序 + // if (criterionConfig.IsReadingTaskViewInOrder) + // { + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // //else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) + // //{ + // // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // //} + // //else + // //{ + // // throw new BusinessValidationFailedException("IR 申请重阅,不会影响到后续未读的任务,当前影响列表有未读的任务,请核查"); + // //} + // } + // else + // { + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // } + // } + // if (((_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) && applyId != null) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && applyId == null)) + // { + // //有序 + // if (criterionConfig.IsReadingTaskViewInOrder) + // { + // //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + // if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != filterObj.VisitTaskNum) + // { + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.CancelAssign; + // } + // } + // else + // { + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // } + // } + // else + // { + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // } + // } - if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) - { - influenceTask.OptType = ReReadingOrBackOptType.Return; - } - else - { - influenceTask.OptType = ReReadingOrBackOptType.Abandon; - } - } - } - //无序 - else - { - //重阅重置或者失效 - influenceTask.OptType = influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned ? ReReadingOrBackOptType.Return : ReReadingOrBackOptType.Abandon; - } - } + //} + ////PM退回 + //else + //{ + + // //有序 + // if (criterionConfig.IsReadingTaskViewInOrder) + // { + // //申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配 + // if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != filterObj.VisitTaskNum) + // { + // //后续访视处理访视 + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.CancelAssign; + // } + // } + // else + // { + // //申请的访视 全局肿瘤学 + + // if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) + // { + // influenceTask.OptType = ReReadingOrBackOptType.Return; + // } + // else + // { + // influenceTask.OptType = ReReadingOrBackOptType.Abandon; + // } + // } + // } + // //无序 + // else + // { + // //重阅重置或者失效 + // influenceTask.OptType = influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned ? ReReadingOrBackOptType.Return : ReReadingOrBackOptType.Abandon; + // } + + + //} + + + #endregion + } #endregion