From f96e0168a0e181c20c1ca6cb6a8187d7c81ce5e3 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Jul 2022 10:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BD=B1=E5=93=8D=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Allocation/DTO/VisitTaskViewModel.cs | 2 + .../Service/Allocation/VisitTaskService.cs | 53 +++++++++++++------ .../Service/Allocation/_MapConfig.cs | 3 +- IRaCIS.Core.Domain/Visit/Subject.cs | 2 + 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index 1d3ff86b6..d354428fc 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -98,6 +98,8 @@ namespace IRaCIS.Core.Application.ViewModel public class AnalysisTaskView : ReadingTaskView { public bool? IsSelfAnalysis { get; set; } + + public bool IsReReadingOrBackInfluenceAnalysis { get; set; } } //public class IRReReadingTaskView: ReReadingTaskView diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 425e565f8..7f5c5357d 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -1305,6 +1305,21 @@ namespace IRaCIS.Core.Application.Service.Allocation } } + /// + /// PM 申请重阅 被同意 或者 PM 直接退回的时候影响 + /// + /// + /// + private async Task SetReReadingOrBackInfluenceAnalysisAsync(Guid subjectId) + { + if (await _repository.AnyAsync(t => t.IsAnalysisCreate && t.SubjectId == subjectId)) + { + await _repository.UpdatePartialFromQueryAsync(t => t.Id == subjectId, u => new Subject() { IsReReadingOrBackInfluenceAnalysis = true }); + + } + + } + /// /// 确认重阅与否 1同意 2 拒绝 /// @@ -1359,6 +1374,8 @@ namespace IRaCIS.Core.Application.Service.Allocation Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == origenalTask.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; + //是否是一致性分析任务 正常申请 会影响一致性分析任务 + filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate); if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree) @@ -1422,6 +1439,7 @@ namespace IRaCIS.Core.Application.Service.Allocation // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); //}); + await SetReReadingOrBackInfluenceAnalysisAsync(origenalTask.SubjectId); await SetMedicalReviewInvalidAsync(influenceTaskList); @@ -1544,6 +1562,8 @@ namespace IRaCIS.Core.Application.Service.Allocation // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); //}); + await SetReReadingOrBackInfluenceAnalysisAsync(origenalTask.SubjectId); + await SetMedicalReviewInvalidAsync(influenceTaskList); trakingOrigenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); @@ -1574,9 +1594,7 @@ namespace IRaCIS.Core.Application.Service.Allocation else if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.DocotorApply && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) { - //是否是一致性分析任务 正常申请 会影响一致性分析任务 - filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate); //有序阅片 if (trialConfig.IsReadingTaskViewInOrder) @@ -1591,18 +1609,17 @@ namespace IRaCIS.Core.Application.Service.Allocation case ReadingCategory.Visit: //影响后续访视已经读完的,未读的不做处理 以及其他类型任务 filterExpression = filterExpression.And(t => t.VisitTaskNum >= origenalTask.VisitTaskNum && - ((t.DoctorUserId == origenalTask.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned) || t.ReadingCategory == ReadingCategory.Global)) - || - t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology) - ) - ; + ((t.DoctorUserId == origenalTask.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned) || t.ReadingCategory == ReadingCategory.Global)) + || + t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology) + ); break; case ReadingCategory.Global: //全局不影响后续访视任务 filterExpression = filterExpression.And(t => t.VisitTaskNum >= origenalTask.VisitTaskNum && - ((t.DoctorUserId == origenalTask.DoctorUserId && t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned) || (t.ReadingCategory == ReadingCategory.Oncology) || (t.ReadingCategory == ReadingCategory.Judge))); + ((t.DoctorUserId == origenalTask.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned) || t.ReadingCategory == ReadingCategory.Global)) || (t.ReadingCategory == ReadingCategory.Oncology) || (t.ReadingCategory == ReadingCategory.Judge))); break; case ReadingCategory.Oncology: @@ -1651,13 +1668,14 @@ namespace IRaCIS.Core.Application.Service.Allocation //}); - await SetMedicalReviewInvalidAsync(influenceTaskList,false); + await SetMedicalReviewInvalidAsync(influenceTaskList, false); trakingOrigenalTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return }); } //处理其他任务 else { + if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned) { influenceTask.TaskState = TaskState.HaveReturned; @@ -1954,7 +1972,7 @@ namespace IRaCIS.Core.Application.Service.Allocation var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync(); - await SetMedicalReviewInvalidAsync(influenceTaskList); + #region 方式一 @@ -2074,6 +2092,10 @@ namespace IRaCIS.Core.Application.Service.Allocation // influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id }); //}); + await SetReReadingOrBackInfluenceAnalysisAsync(influenceTask.SubjectId); + + await SetMedicalReviewInvalidAsync(influenceTaskList); + influenceTask.IsPMSetBack = true; } @@ -2262,6 +2284,9 @@ namespace IRaCIS.Core.Application.Service.Allocation Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; + //是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的访视和全局) + + filterExpression = filterExpression.And(t => t.IsAnalysisCreate == filterObj.IsAnalysisCreate); //重阅影响 if (isReReading) @@ -2274,9 +2299,6 @@ namespace IRaCIS.Core.Application.Service.Allocation || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)) { - //是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的访视和全局) - - filterExpression = filterExpression.And(t => t.IsAnalysisCreate == filterObj.IsAnalysisCreate); //当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务 @@ -2294,8 +2316,7 @@ namespace IRaCIS.Core.Application.Service.Allocation ((t.DoctorUserId == filterObj.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned) || t.ReadingCategory == ReadingCategory.Global)) || t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology) - ) - ; + ); break; case ReadingCategory.Global: @@ -2307,7 +2328,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //全局不影响后续访视任务 filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && - ((t.DoctorUserId == filterObj.DoctorUserId && t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState==ReadingTaskState.HaveSigned) || (t.ReadingCategory == ReadingCategory.Oncology) || (t.ReadingCategory == ReadingCategory.Judge))); + ((t.DoctorUserId == filterObj.DoctorUserId && ((t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned) || t.ReadingCategory == ReadingCategory.Global)) || (t.ReadingCategory == ReadingCategory.Oncology) || (t.ReadingCategory == ReadingCategory.Judge))); break; //1、后续任务如果是访视任务、全局任务或裁判任务,均不处理; diff --git a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs index d5d119bec..716ec965f 100644 --- a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs @@ -118,7 +118,8 @@ namespace IRaCIS.Core.Application.Service CreateMap().IncludeBase(); - CreateMap().IncludeBase(); + CreateMap().IncludeBase() + .ForMember(o => o.IsReReadingOrBackInfluenceAnalysis, t => t.MapFrom(u => u.Subject.IsReReadingOrBackInfluenceAnalysis)); diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs index 5979670ca..a40876077 100644 --- a/IRaCIS.Core.Domain/Visit/Subject.cs +++ b/IRaCIS.Core.Domain/Visit/Subject.cs @@ -91,6 +91,8 @@ namespace IRaCIS.Core.Domain.Models public Guid? DeleteUserId { get; set; } + public bool IsReReadingOrBackInfluenceAnalysis { get; set; } + //是否分配了读片医生 //public bool IsAssignDoctorUser{get;set;} }