From 53043eae506449a61794439068994b3f6e6f5146 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Fri, 13 Jan 2023 13:25:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingClinicalDataService.cs | 4 +- .../Reading/Dto/ReadingClinicalDataDto.cs | 2 + .../ReadingGlobalTaskService.cs | 38 ++++++++++++++++++- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 2a8180e03..acc608aaf 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -172,7 +172,9 @@ namespace IRaCIS.Application.Services List cRCClinicalDataList = await _readingClinicalDataRepository.Where(x => x.ReadingId == inDto.SubjectVisitId) - .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.ImageRead && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.OncologyRead) + .WhereIf(inDto.IsBaseline,x=>x.ClinicalDataTrialSet.ClinicalDataLevel==ClinicalLevel.Subject) + .WhereIf(!inDto.IsBaseline, x => x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit) + .Where(x => x.ClinicalDataTrialSet.TrialId == inDto.TrialId && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC) .Select(x => new GetCRCClinicalDataOutDto() { Id = x.Id, diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index 9d9a3893d..2be2e2e4c 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -139,6 +139,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto [NotDefault] public Guid SubjectId { get; set; } + + public bool IsBaseline { get; set; } } /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs index ed97bc82b..95072a758 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs @@ -280,13 +280,49 @@ namespace IRaCIS.Application.Services if (criterionType == CriterionType.PCWG3) { + // PCWG3 访视点肿瘤评估 采用上一次全局阅片的答案 如果没有 就采用访视的答案 + + + // 找到上一个全局阅片 + + var lastGlobalTask = await _visitTaskRepository.Where(x => x.ReadingCategory == ReadingCategory.Global && + x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && + x.SubjectId == taskInfo.SubjectId && x.IsAnalysisCreate == taskInfo.IsAnalysisCreate && x.TaskState == TaskState.Effect && x.VisitTaskNum < taskInfo.VisitTaskNum) + .Where(x => x.DoctorUserId == taskInfo.DoctorUserId) + .FirstOrDefaultAsync(); + List? globalAnswers = new List (); + if (lastGlobalTask != null) + { + globalAnswers= await _readingGlobalTaskInfoRepository.Where(x => x.GlobalTaskId == lastGlobalTask.Id).ToListAsync(); + } result.TaskList.ForEach(x => { foreach (var item in x.AfterQuestionList.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation)) { - item.Answer = item.Answer.IsNullOrEmpty() ? (x.BeforeQuestionList.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.Answer).FirstOrDefault()??string.Empty) : item.Answer; + var answer = item.Answer; + + var globalanswer = globalAnswers.Where(y => y.TaskId == x.VisitTaskId && y.QuestionId == item.QuestionId).FirstOrDefault(); + + if (globalanswer != null) + { + answer = globalanswer.Answer; + } + else + { + answer = x.BeforeQuestionList.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.Answer).FirstOrDefault() ?? string.Empty; + } + + if (item.Answer.IsNullOrEmpty()) + { + item.Answer = answer; + } + + item.VisitAnswer = answer; + } + + // 在修改前 去除这个问题 x.BeforeQuestionList = x.BeforeQuestionList.Where(x => x.QuestionType != QuestionType.SiteVisitForTumorEvaluation).ToList(); });