From 62f28cbe6c8d0d38a2d06182c1ba4af1b5b0d0bb Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 1 Nov 2022 16:13:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 6 ++ .../ReadingImageTaskService.cs | 55 ++++++++++++++++++- .../RECIST1Point1CalculateService.cs | 2 +- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index be35e1bef..a0a1ba509 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -8420,6 +8420,12 @@ + + + 添加默认值到任务里面 + + + 根据任务ID获取ReadingTool diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 5fbb3c60b..11a337b00 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -113,6 +113,40 @@ namespace IRaCIS.Application.Services } + /// + /// 添加默认值到任务里面 + /// + /// + [NonDynamicMethod] + public async Task AddDefaultValueToTask(Guid visitTaskId) + { + var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + + var questions = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == visitTaskInfo.TrialReadingCriterionId).ToListAsync(); + questions = questions.Where(x => !x.DefaultValue.IsNullOrEmpty()).ToList(); + + var taskAnswerIds = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).Select(x => x.ReadingQuestionTrialId).ToListAsync(); + questions = questions.Where(x => !taskAnswerIds.Contains(x.Id)).ToList(); + + List questionAnswers = questions.Select(x => new ReadingTaskQuestionAnswer() + { + + Answer=x.DefaultValue, + Id= NewId.NextGuid(), + ReadingQuestionCriterionTrialId= visitTaskInfo.TrialReadingCriterionId, + ReadingQuestionTrialId= x.Id, + SubjectId= visitTaskInfo.SubjectId, + TrialId= visitTaskInfo.TrialId, + VisitTaskId=visitTaskId, + + }).ToList(); + + await _readingTaskQuestionAnswerRepository.AddRangeAsync(questionAnswers); + await _readingTaskQuestionAnswerRepository.SaveChangesAsync(); + + } + + #region 阅片页面 关联信息查询 以及基本验证 /// @@ -299,6 +333,7 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task<(List, object)> GetDicomReadingQuestionAnswer(GetDicomReadingQuestionAnswerInDto inDto) { + await AddDefaultValueToTask(inDto.VisitTaskId); var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); var criterionId = taskInfo.TrialReadingCriterionId; @@ -328,7 +363,7 @@ namespace IRaCIS.Application.Services private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List questions, List answers) { var answer = answers.Where(x => x.ReadingQuestionTrialId == item.Id).Select(x => x.Answer).FirstIsNullReturnEmpty(); - item.Answer = answer.IsNullOrEmpty()?item.DefaultValue: answer; + item.Childrens = questions.Where(x => x.ParentId == item.Id || ((item.Type == ReadingQestionType.Group && x.Type != ReadingQestionType.Group && x.ParentId == null && x.GroupName == item.GroupName))).ToList(); if (item.Childrens != null && item.Childrens.Count > 0) { @@ -348,6 +383,21 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task GetReadingReportEvaluation(GetReadingReportEvaluationInDto indto) { + var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync(); + if (visitTaskInfo.ReadingTaskState == ReadingTaskState.WaitReading) + { + await this._readingCalculateService.CalculateTask(new CalculateTaskInDto() + { + IsChangeOtherTask = false, + VisitTaskId = indto.VisitTaskId, + }); + await _visitTaskRepository.UpdatePartialFromQueryAsync(indto.VisitTaskId, x => new VisitTask() + { + ReadingTaskState=ReadingTaskState.Reading + }); + await _visitTaskRepository.SaveChangesAsync(); + } + return await _readingCalculateService.GetReadingReportEvaluation(indto); } @@ -383,6 +433,7 @@ namespace IRaCIS.Application.Services public async Task<(GetReadingQuestionAndAnswerOutDto, object)> GetReadingQuestionAndAnswer(GetReadingQuestionAndAnswerInDto inDto) { + await AddDefaultValueToTask(inDto.VisitTaskId); var result = new GetReadingQuestionAndAnswerOutDto(); var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); @@ -413,7 +464,7 @@ namespace IRaCIS.Application.Services qusetionList.ForEach(x => { - x.Answer = answers.Where(y => y.ReadingQuestionTrialId == x.Id).Select(x => x.Answer).FirstOrDefault() ?? x.DefaultValue; + x.Answer = answers.Where(y => y.ReadingQuestionTrialId == x.Id).Select(x => x.Answer).FirstOrDefault() ?? string.Empty; }); #endregion diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index a128d6e35..64189528d 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -1234,7 +1234,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 比整体访视期间SOD最低点SOD绝对增加值≥5 mm LowChangeBigger5 = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) >= 5 - && inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) <=- 5 + || inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.LowestIncrease).Sum(x => x.Answer.IsNullOrEmptyReturn0()) <=- 5 , // 被评估为NE的单个靶病灶 是否存在状态为不可评估的靶病灶