From 1a8bd17f01fb4f2ecce9f5eb89b32999624631a5 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 20 Dec 2023 10:08:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=82=BF=E7=98=A4=E5=AD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 2 + .../ReadingImageTaskService.cs | 45 +++++++++++++------ .../ReadingOncologyTaskService.cs | 43 ++++++++++++++---- irc_api.drone.yml | 3 +- 4 files changed, 69 insertions(+), 24 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 5658932cf..1e53ba805 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1130,6 +1130,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid OncologyTaskId { get; set; } + public Guid GlobalTaskId { get; set; } + public List OncologyQuestionList { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 21b355e6b..a0509dd5b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2713,20 +2713,37 @@ namespace IRaCIS.Application.Services if (isReadingTaskViewInOrder) { - pastResultTaskIdList = await _visitTaskRepository.Where(x => - x.TrialId == taskInfo.TrialId && - x.SubjectId == taskInfo.SubjectId && - x.VisitTaskNum < taskInfo.VisitTaskNum && - x.ArmEnum == taskInfo.ArmEnum && - x.DoctorUserId == taskInfo.DoctorUserId && - x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && - x.ReadingTaskState == ReadingTaskState.HaveSigned && - x.TaskState == TaskState.Effect && - x.IsSelfAnalysis == taskInfo.IsSelfAnalysis && - x.IsAnalysisCreate == taskInfo.IsAnalysisCreate && - x.ReadingCategory == taskInfo.ReadingCategory && - x.Id != taskInfo.Id - ).OrderBy(x=>x.VisitTaskNum).ThenBy(x=>x.TaskState).Select(x => x.Id).ToListAsync(); + + + + + switch (taskInfo.ReadingCategory) + { + case ReadingCategory.Visit: + case ReadingCategory.Global: + pastResultTaskIdList = await _visitTaskRepository.Where(x => + x.TrialId == taskInfo.TrialId && + x.SubjectId == taskInfo.SubjectId && + x.VisitTaskNum < taskInfo.VisitTaskNum && + x.ArmEnum == taskInfo.ArmEnum && + x.DoctorUserId == taskInfo.DoctorUserId && + x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && + x.ReadingTaskState == ReadingTaskState.HaveSigned && + x.TaskState == TaskState.Effect && + x.IsSelfAnalysis == taskInfo.IsSelfAnalysis && + x.IsAnalysisCreate == taskInfo.IsAnalysisCreate && + x.ReadingCategory == taskInfo.ReadingCategory && + x.Id != taskInfo.Id + ).OrderBy(x => x.VisitTaskNum).ThenBy(x => x.TaskState).Select(x => x.Id).ToListAsync(); + break; + case ReadingCategory.Oncology: + // 肿瘤学这里很特殊 因为没有裁判的时候 可能取R1可能取R2 为了和之前阅片的时候保持统一 + // 所以在保存肿瘤学答案的时候就存起来 现在签名的时候 创建关系 + relatedVisitTaskIdList = await _visitTaskRepository.Where(x =>x.Id== visitTaskId).Select(x => x.RelatedVisitTaskIdList).FirstNotNullAsync(); + break; + } + + reportRelatedTaskIdList = await _visitTaskRepository.Where(x => diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs index d86847130..1f56be193 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs @@ -52,14 +52,28 @@ namespace IRaCIS.Application.Services // 先找到是R1还是R2的阅片 先找到全局阅片 - var globalTaskInfo = await _visitTaskRepository - .Where(x => x.SubjectId == taskInfo.SubjectId && - x.TaskState == TaskState.Effect && - x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && - x.ReadingCategory == ReadingCategory.Global && - x.VisitTaskNum < taskInfo.VisitTaskNum - ).OrderByDescending(x => x.VisitTaskNum) - .FirstNotNullAsync(); + VisitTask? globalTaskInfo = null; + var relatedVisitTaskIdList = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.RelatedVisitTaskIdList).FirstNotNullAsync(); + if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned && relatedVisitTaskIdList.Count() > 0) + { + if (relatedVisitTaskIdList.Count() > 0) + { + globalTaskInfo = await _visitTaskRepository.Where(x => x.Id == relatedVisitTaskIdList[0]).FirstNotNullAsync(); + } + } + else + { + globalTaskInfo = await _visitTaskRepository + .Where(x => x.SubjectId == taskInfo.SubjectId && + x.TaskState == TaskState.Effect && + x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && + x.ReadingCategory == ReadingCategory.Global && + x.VisitTaskNum < taskInfo.VisitTaskNum + ).OrderByDescending(x => x.VisitTaskNum) + .FirstNotNullAsync(); + } + + // 最后取哪组的数据 @@ -72,6 +86,7 @@ namespace IRaCIS.Application.Services if (globalTaskInfo.JudgeVisitTaskId == null) { visitTask = globalTaskInfo; + visitTaskIdList = await _visitTaskRepository.Where(x => x.Id == visitTask.Id).Select(x => x.RelatedVisitTaskIdList).FirstNotNullAsync(); } else { @@ -184,7 +199,17 @@ namespace IRaCIS.Application.Services await _readingOncologyTaskInfoRepository.AddRangeAsync(readingOncologies); - await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == inDto.OncologyTaskId, u => new VisitTask() { ReadingTaskState = ReadingTaskState.Reading }); + var relatedVisitTaskIdList=new List(); + relatedVisitTaskIdList.Add(inDto.GlobalTaskId); + + var relatedVisitTaskIds = JsonConvert.SerializeObject(relatedVisitTaskIdList); + + // 这里先保存 签名的时候 会统一创建关系 + await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == inDto.OncologyTaskId, u => new VisitTask() + { + ReadingTaskState = ReadingTaskState.Reading, + RelatedVisitTaskIds = relatedVisitTaskIds + }) ; var result = await _readingOncologyTaskInfoRepository.SaveChangesAsync(); diff --git a/irc_api.drone.yml b/irc_api.drone.yml index b24005c63..3184c1f71 100644 --- a/irc_api.drone.yml +++ b/irc_api.drone.yml @@ -100,7 +100,8 @@ steps: commands: - echo start publish test-irc-api - cd /opt/cicd/irc-test - - sh test-irc.sh v${DRONE_BUILD_NUMBER} + - echo sh test-irc.sh v${DRONE_BUILD_NUMBER} + - sh test-irc.sh trigger: branch: