From 11c83759d234a925868f8e755653145df2f39515 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 30 Oct 2023 10:29:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0HtmlPath?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/Controllers/UploadDownLoadController.cs | 4 ++-- IRaCIS.Core.API/IRaCIS.Core.API.xml | 4 ++-- IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 7 +++++++ .../Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs | 6 +++--- .../Service/Third-partyProject/UltrasonicDicomService.cs | 6 ++---- IRaCIS.Core.Domain/Image/DicomInstance.cs | 1 + 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index b0a275fb5..93ad59670 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -786,7 +786,7 @@ namespace IRaCIS.Core.API.Controllers } /// - /// New 项目入组 获取医生简历 + /// New 项目入组 勾选获取简历路径 /// /// /// @@ -812,7 +812,7 @@ namespace IRaCIS.Core.API.Controllers } /// - /// new 医生详情 下载指定简历 + /// new 医生详情 勾选或者下载文件路径 /// /// /// diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 5198124a0..23a29e1ea 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -293,7 +293,7 @@ - New 项目入组 获取医生简历 + New 项目入组 勾选获取简历路径 @@ -302,7 +302,7 @@ - new 医生详情 下载指定简历 + new 医生详情 勾选或者下载文件路径 diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 34f73ac12..1809aa067 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1947,6 +1947,13 @@ + + + 获取上一次FDGPET 评估 + + + + FDG-PET总体评估结果 diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index ab1beb6eb..a2ff95f1e 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -197,8 +197,6 @@ namespace IRaCIS.Core.Application.Contracts public bool IsDicomReUpload { get; set; } - - public int FileCount { get; set; } } @@ -312,6 +310,8 @@ namespace IRaCIS.Core.Application.Contracts public string WindowWidth { get; set; } public bool Anonymize { get; set; } - public string Path { get; set; } + public string Path { get; set; } = string.Empty; + + public string HtmlPath { get; set; } = string.Empty; } } diff --git a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs index 7e52257fb..98b33fd25 100644 --- a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs +++ b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs @@ -217,6 +217,8 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject [FromServices] IRepository _dicomSeriesRepository, [FromServices] IRepository _dicomInstanceRepository) { + + try { var trialId = incommand.TrialId; @@ -398,10 +400,6 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject - - - - return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Domain/Image/DicomInstance.cs b/IRaCIS.Core.Domain/Image/DicomInstance.cs index bce1777cf..0299bd657 100644 --- a/IRaCIS.Core.Domain/Image/DicomInstance.cs +++ b/IRaCIS.Core.Domain/Image/DicomInstance.cs @@ -53,6 +53,7 @@ namespace IRaCIS.Core.Domain.Models public Guid UpdateUserId { get; set; } public DateTime UpdateTime { get; set; } = DateTime.Now; + public string HtmlPath { get; set; }=string.Empty; } } From d36e3c0d91a12c1d788cc713466fcc7c73f0e12c Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 30 Oct 2023 14:40:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AE=BF=E8=A7=86=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E6=8B=B7=E8=B4=9D=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 159 ++++++++++-------- 1 file changed, 87 insertions(+), 72 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index cd1501d3f..b1b3b5f63 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -21,6 +21,7 @@ using System.Linq; using DocumentFormat.OpenXml.Bibliography; using Org.BouncyCastle.Crypto; using IRaCIS.Core.Domain.Share.Reading; +using MassTransit; namespace IRaCIS.Core.Application.Service.Allocation { @@ -1082,11 +1083,11 @@ namespace IRaCIS.Core.Application.Service.Allocation var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect /*&& x.TrialReadingCriterionId== inDto.TrialReadingCriterionId*/) - //前序 不存在 未生成任务的访视 - .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) ) + //前序 不存在 未生成任务的访视 + .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum)) // 前序 不存在 未一致性核查未通过的 - .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(critrion.IsAutoCreate == false, t => t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.IsGeneratedTask == false) ? //t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsGeneratedTask == false).Min(t => t.SubjectVisit.VisitNum) : true) //.Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum <= t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true) @@ -1416,7 +1417,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //添加申请记录 var visitTaskReReading = await _visitTaskReReadingRepository.AddAsync(new VisitTaskReReading() { - TrialId=applyReReadingCommand.TrialId, + TrialId = applyReReadingCommand.TrialId, RootReReadingTaskId = rootReReadingTaskId == Guid.Empty ? task.Id : rootReReadingTaskId, OriginalReReadingTaskId = task.Id, RequestReReadingTime = DateTime.Now, @@ -1550,7 +1551,7 @@ namespace IRaCIS.Core.Application.Service.Allocation //1.1 有附加评估,会影响其他标准的任务 if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment) { - // PM申请 SPM / CPM审批 + // PM申请 SPM / CPM审批 if (visitTaskReReadingAppply.RequestReReadingType == RequestReReadingType.TrialGroupApply && (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)) { filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == origenalTask.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB); @@ -1976,29 +1977,9 @@ namespace IRaCIS.Core.Application.Service.Allocation { if (origenalTask.ReadingCategory == ReadingCategory.Visit) { - var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + CopyForms(newTask, origenalTask); - 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; - //} - } @@ -2007,28 +1988,10 @@ namespace IRaCIS.Core.Application.Service.Allocation { 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; + CopyForms(newTask, origenalTask); } - //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; - //} } } @@ -2124,15 +2087,8 @@ namespace IRaCIS.Core.Application.Service.Allocation { if (origenalTask.ReadingCategory == ReadingCategory.Visit) { - var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + CopyForms(newTask, origenalTask); - foreach (var item in list) - { - item.Id = Guid.Empty; - item.VisitTaskId = newTask.Id; - } - - _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; } } @@ -2142,15 +2098,8 @@ namespace IRaCIS.Core.Application.Service.Allocation { if (origenalTask.ReadingCategory == ReadingCategory.Visit) { - var list = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + CopyForms(newTask, origenalTask); - foreach (var item in list) - { - item.Id = Guid.Empty; - item.VisitTaskId = newTask.Id; - } - - _ = _readingTaskQuestionAnswerRepository.AddRangeAsync(list).Result; } } @@ -2209,6 +2158,74 @@ namespace IRaCIS.Core.Application.Service.Allocation return ResponseOutput.Ok(); } + private void CopyForms(VisitTask newTask, VisitTask origenalTask) + { + + //自定义 + var readingCustomTagList = _repository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in readingCustomTagList) + { + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; + } + + _ = _repository.AddRangeAsync(readingCustomTagList).Result; + + + var readingTaskQuestionMarkList = _repository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in readingTaskQuestionMarkList) + { + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; + } + + _ = _repository.AddRangeAsync(readingTaskQuestionMarkList).Result; + + var readingTaskQuestionAnswerList = _repository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + foreach (var item in readingTaskQuestionAnswerList) + { + item.Id = Guid.Empty; + item.VisitTaskId = newTask.Id; + } + _ = _repository.AddRangeAsync(readingTaskQuestionAnswerList).Result; + + + + //ReadingTableAnswerRowInfo ReadingTableQuestionAnswer 一起加 + var readingTableAnswerRowInfoList = _repository.Where(t => t.VisitTaskId == origenalTask.Id).Include(t => t.LesionAnswerList).ToList(); + + foreach (var item in readingTableAnswerRowInfoList) + { + item.Id = NewId.NextSequentialGuid(); + item.VisitTaskId = newTask.Id; + + foreach (var item2 in item.LesionAnswerList) + { + item2.Id = Guid.Empty; + item2.RowId = item.Id; + item2.VisitTaskId = newTask.Id; + } + } + + _ = _repository.AddRangeAsync(readingTableAnswerRowInfoList).Result; + + + //var readingTableQuestionAnswerList = _repository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + //foreach (var item in readingTableQuestionAnswerList) + //{ + // item.Id = Guid.Empty; + // item.VisitTaskId = newTask.Id; + //} + + //_ = _repository.AddRangeAsync(readingTableQuestionAnswerList).Result; + + + } + /// /// PM 设置任务 退回 @@ -2256,7 +2273,7 @@ namespace IRaCIS.Core.Application.Service.Allocation Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == task.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated; - + if (criterionConfig.CriterionType == CriterionType.RECIST1Point1 && criterionConfig.IsAdditionalAssessment) { //影像退回,必定影响两个标准的任务 @@ -2590,8 +2607,6 @@ namespace IRaCIS.Core.Application.Service.Allocation var filterObj = (await _visitTaskRepository.FirstOrDefaultNoTrackingAsync(t => t.Id == taskId)).IfNullThrowException(); var trialId = filterObj.TrialId; - //var trialConfig = (await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.IsReadingTaskViewInOrder, t.ReadingType }).FirstOrDefaultAsync()).IfNullThrowException(); - var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == filterObj.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.CriterionType, x.IsAdditionalAssessment, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException(); Expression> filterExpression = t => t.TrialId == trialId && t.SubjectId == filterObj.SubjectId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.TaskAllocationState == TaskAllocationState.Allocated; @@ -2613,10 +2628,10 @@ namespace IRaCIS.Core.Application.Service.Allocation { // 1.1 基线任务影响BM任务 - if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && _subjectVisitRepository.Any(t=>t.Id==filterObj.SourceSubjectVisitId && t.IsBaseLine==true)) + if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && _subjectVisitRepository.Any(t => t.Id == filterObj.SourceSubjectVisitId && t.IsBaseLine == true)) { - isIR1Point1AdditionalAssessmentBaseline=true; + isIR1Point1AdditionalAssessmentBaseline = true; //filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB); @@ -2632,7 +2647,7 @@ namespace IRaCIS.Core.Application.Service.Allocation else { filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId || t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB); - + } } else @@ -2655,10 +2670,10 @@ namespace IRaCIS.Core.Application.Service.Allocation || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)) { - //当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务 + //当前任务及其之后的所有访视任务、全局任务、裁判任务、肿瘤学阅片任务 - //有序 - if (criterionConfig.IsReadingTaskViewInOrder) + //有序 + if (criterionConfig.IsReadingTaskViewInOrder) { switch (filterObj.ReadingCategory) @@ -2682,7 +2697,7 @@ namespace IRaCIS.Core.Application.Service.Allocation )) || t.Id == filterObj.Id) ; } - // IR 申请1.1 基线重阅,影响附加评估所有的任务 + // IR 申请1.1 基线重阅,影响附加评估所有的任务 else if (isIR1Point1AdditionalAssessmentBaseline) { filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum && @@ -2691,7 +2706,7 @@ namespace IRaCIS.Core.Application.Service.Allocation // 裁判 肿瘤学是另外的医生做 || t.ReadingCategory == ReadingCategory.Judge || t.ReadingCategory == ReadingCategory.Oncology - )&& t.TrialReadingCriterionId==filterObj.TrialReadingCriterionId )||( t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB)) + ) && t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId) || (t.TrialReadingCriterion.CriterionType == CriterionType.RECIST1Pointt1_MB)) ); } else