From 156e9df954cd187625b0694c7c26b47204584d75 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 23 Mar 2023 16:42:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E9=98=85=E7=94=9F=E6=88=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 11 +++-- .../SubjectCriteriaEvaluationService.cs | 44 ++++++++++++++----- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 1795c6945..55ba404e7 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -1439,7 +1439,7 @@ namespace IRaCIS.Core.Application.Service.Allocation visitTaskReReadingAppply.RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason; - Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == origenalTask.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; + Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == origenalTask.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated; //是否是一致性分析任务 正常申请 会影响一致性分析任务 filterExpression = filterExpression.And(t => t.IsAnalysisCreate == origenalTask.IsAnalysisCreate); @@ -2001,6 +2001,7 @@ namespace IRaCIS.Core.Application.Service.Allocation return ResponseOutput.NotOk("一致性分析的任务,不允许设置退回"); } + Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated; //PM 才允许操作 if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) { @@ -2019,7 +2020,9 @@ namespace IRaCIS.Core.Application.Service.Allocation if (criterionConfig.IsReadingTaskViewInOrder) { - Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated; + //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); + //另一个阅片人的任务根据任务进度自动进入PM退回或PM申请重阅 @@ -2230,7 +2233,7 @@ namespace IRaCIS.Core.Application.Service.Allocation // 申请该访视的任务 申请人失效 另外一个人重阅重置或者失效 - var currentVisitList = await _visitTaskRepository.Where(t => t.SourceSubjectVisitId == task.SourceSubjectVisitId && t.ReadingCategory == ReadingCategory.Visit && t.TaskState == TaskState.Effect && t.VisitTaskNum == task.VisitTaskNum, true).ToListAsync(); + 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(); await SetMedicalReviewInvalidAsync(currentVisitList); @@ -2389,7 +2392,7 @@ namespace IRaCIS.Core.Application.Service.Allocation var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == filterObj.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException(); - Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated; + Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && (t.TaskState == TaskState.Effect||t.TaskState==TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated; //是否是一致性分析任务 (一致性分析的任务 不会产生裁判 肿瘤学 仅仅有生成的访视和全局) diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs index 5d6297496..0c79afa69 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs @@ -43,11 +43,12 @@ namespace IRaCIS.Core.Application.Service private readonly IVisitTaskHelpeService _IVisitTaskHelpeService; private readonly IRepository _taskMedicalReviewRepository; + private readonly IRepository _visitTaskReReadingRepository; public SubjectCriteriaEvaluationService(IRepository subjectCriteriaEvaluationRepository, IRepository subjectRepository, IRepository subjectCriteriaEvaluationVisitFilterRepository, IRepository subjectVisitRepository, IRepository subjectCriteriaEvaluationVisitStudyFilterRepository, - IRepository trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository trialReadingQuestionRepository, IRepository visitTaskRepository, IRepository taskMedicalReviewRepository) + IRepository trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository trialReadingQuestionRepository, IRepository visitTaskRepository, IRepository taskMedicalReviewRepository, IRepository visitTaskReReadingRepository) { _subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository; _subjectRepository = subjectRepository; @@ -61,6 +62,7 @@ namespace IRaCIS.Core.Application.Service _trialReadingQuestionRepository = trialReadingQuestionRepository; _visitTaskRepository = visitTaskRepository; _taskMedicalReviewRepository = taskMedicalReviewRepository; + _visitTaskReReadingRepository = visitTaskReReadingRepository; } @@ -427,7 +429,7 @@ namespace IRaCIS.Core.Application.Service SubjectVisitId = subjectVisit.Id, TrialId = subjectVisit.TrialId, SubjectId = subjectVisit.SubjectId, - SubjectCode= subjectVisit.Subject.Code, + SubjectCode = subjectVisit.Subject.Code, TrialReadingCriterionId = inQuery.TrialReadingCriterionId, LatestScanDate = subjectVisit.LatestScanDate, EarliestScanDate = subjectVisit.LatestScanDate, @@ -581,15 +583,26 @@ namespace IRaCIS.Core.Application.Service /// [HttpPost] - public async Task> GetCriteriaVisitBackInfluenceTaskList(CriteriaVisitBackCommand command) + public async Task<(List, object)> GetCriteriaVisitBackInfluenceTaskList(CriteriaVisitBackCommand command) { + + var isIRAppyTaskInfluenced = false; + var filterExpression = await GetTaskExpressionAsync(command); + var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId); + + if (await _visitTaskReReadingRepository.AnyAsync(t => t.RequestReReadingType == RequestReReadingType.DocotorApply && t.RequestReReadingResultEnum == RequestReReadingResult.Default && + t.OriginalReReadingTask.VisitTaskNum >= subjectVisit.VisitNum && t.OriginalReReadingTask.SubjectId == subjectVisit.SubjectId && t.OriginalReReadingTask.TrialReadingCriterionId == command.TrialReadingCriterionId)) + { + isIRAppyTaskInfluenced = true; + } + var list = await _visitTaskRepository.Where(filterExpression) .OrderBy(t => t.VisitTaskNum).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - return list; + return (list, new { IsIRAppyTaskInfluenced = isIRAppyTaskInfluenced }); } private async Task>> GetTaskExpressionAsync(CriteriaVisitBackCommand command) @@ -622,12 +635,21 @@ namespace IRaCIS.Core.Application.Service /// public async Task ConfirmBackCriteriaVisitTask(CriteriaVisitBackCommand command) { + + + + var filterExpression = await GetTaskExpressionAsync(command); + + + var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync(); var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId); + + foreach (var influenceTask in influenceTaskList) { @@ -679,15 +701,15 @@ namespace IRaCIS.Core.Application.Service //将筛选的访视 序列状态重置 //重置访视数据 - await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId== command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId) , - t=>new SubjectCriteriaEvaluationVisitFilter() - { - ImageFilterState=ImageFilterState.None, - ImageDeterminationResultState=ImageDeterminationResultState.None - }); + await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId), + t => new SubjectCriteriaEvaluationVisitFilter() + { + ImageFilterState = ImageFilterState.None, + ImageDeterminationResultState = ImageDeterminationResultState.None + }); //删除序列数据 - await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId)); + await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId)); await _visitTaskRepository.SaveChangesAsync(); }