From c684760d43beaedae08f77c35e6e9ed2bfee59f8 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Sun, 9 Oct 2022 09:40:35 +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 --- .../Reading/Dto/ReadingImageTaskViewModel.cs | 3 + .../Reading/ReadingCalculateService.cs | 69 +++++++++++++++---- .../Reading/ReadingImageTaskService.cs | 1 + 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 21d11539f..37565d9f5 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -105,6 +105,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetReadingReportEvaluationOutDto { public string TumorEvaluate { get; set; } + + + public string IsExistDisease { get; set; } public ReadingTaskState ReadingTaskState { get; set; } public List VisitTaskList { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs index ed77df012..b017bdd06 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCalculateService.cs @@ -247,6 +247,16 @@ namespace IRaCIS.Core.Application.Service return await GetTumor(await GetReadingCalculateDto(visitTaskId)); } + /// + /// 获取报告是否存在疾病 + /// + /// + /// + public async Task GetReportIsExistDisease(Guid visitTaskId) + { + return await GetIsExistDisease(await GetReadingCalculateDto(visitTaskId)); + } + /// /// 验证访视提交 /// @@ -523,7 +533,7 @@ namespace IRaCIS.Core.Application.Service { return null; } - var decimalAnswerList = await GetVisitTaskAnswerList(inDto); + var decimalAnswerList = await GetLowSODVisit(inDto); var minSOD = decimalAnswerList.OrderBy(x => x.SOD).Select(x => x.SOD).FirstOrDefault(); return value.NullChange0() - minSOD; } @@ -545,7 +555,7 @@ namespace IRaCIS.Core.Application.Service { return null; } - var decimalAnswerList = await GetVisitTaskAnswerList(inDto); + var decimalAnswerList = await GetLowSODVisit(inDto); var minSOD = decimalAnswerList.OrderBy(x => x.SOD).Select(x => x.SOD).FirstOrDefault(); if (minSOD == 0) @@ -577,7 +587,7 @@ namespace IRaCIS.Core.Application.Service return nameof(YesOrNoOrNa.NA); } - var decimalAnswerList = await GetVisitTaskAnswerList(inDto); + var decimalAnswerList = await GetLowSODVisit(inDto); return decimalAnswerList.OrderBy(x => x.SOD).Select(x => x.BlindName).FirstOrDefault() ?? string.Empty; } #endregion @@ -724,8 +734,10 @@ namespace IRaCIS.Core.Application.Service public async Task ChangeAllLowestIncrease(ChangeAllTaskDto inDto) { var visitTaskList = await GetVisitTaskAnswerList(inDto.calculateDto); - var lowSod = visitTaskList.Select(x => x.SOD).OrderBy(x => x).FirstOrDefault(); - foreach (var item in visitTaskList.Where(x=>x.VisitTaskId!=inDto.calculateDto.BaseLineTaskId)) + + var lowSod = (await GetLowSODVisit(inDto.calculateDto)).Select(x => x.SOD).OrderBy(x => x).FirstOrDefault(); + + foreach (var item in visitTaskList.Where(x=>x.VisitTaskId!=inDto.calculateDto.BaseLineTaskId)) { await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.VisitTaskId == item.VisitTaskId && x.ReadingQuestionTrialId == inDto.QuestionId, x => new ReadingTaskQuestionAnswer() { @@ -747,7 +759,9 @@ namespace IRaCIS.Core.Application.Service public async Task ChangeAllLowPercent(ChangeAllTaskDto inDto) { var visitTaskList = await GetVisitTaskAnswerList(inDto.calculateDto); - var lowSod = visitTaskList.Select(x => x.SOD).OrderBy(x => x).FirstOrDefault(); + + var lowSod = (await GetLowSODVisit(inDto.calculateDto)).Select(x => x.SOD).OrderBy(x => x).FirstOrDefault(); + foreach (var item in visitTaskList.Where(x => x.VisitTaskId != inDto.calculateDto.BaseLineTaskId)) { decimal percent = 0; @@ -782,7 +796,7 @@ namespace IRaCIS.Core.Application.Service var visitTaskIds = await _visitTaskRepository.Where(x => !x.IsAnalysisCreate && x.ReadingCategory == ReadingCategory.Visit && x.TaskState == TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.DoctorUserId == inDto.calculateDto.DoctorUserId).Select(x => x.Id).ToListAsync(); - var answer = (await GetLowVisit(inDto.calculateDto)).ToString(); + var answer = (await GetLowSODVisit(inDto.calculateDto)).OrderBy(x=>x.SOD).Select(x=>x.BlindName).FirstOrDefault(); visitTaskIds = visitTaskIds.Where(x => x != inDto.calculateDto.BaseLineTaskId).ToList(); await this.ChangeAllVisitTaskAnswer(visitTaskIds, inDto.QuestionId, answer); @@ -834,15 +848,40 @@ namespace IRaCIS.Core.Application.Service var baseLineSOD =(await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0(); return baseLineSOD; } - #endregion + #endregion - #region 获取访视任务信息 - /// - /// 获取访视任务信息 - /// - /// - /// - public async Task> GetVisitTaskAnswerList(ReadingCalculateDto inDto) + + /// + /// 获取最低方式 + /// + /// + /// + public async Task> GetLowSODVisit(ReadingCalculateDto inDto) + { + var taskAnswerList = await GetVisitTaskAnswerList(inDto); + + taskAnswerList = taskAnswerList.Where(x => x.VisitTaskId != inDto.VisitTaskId).ToList(); + + var taskIds = taskAnswerList.Select(x => x.VisitTaskId).ToList(); + + var unableEvaluateTaskIds = await _readingTableQuestionAnswerRepository.Where(x => taskIds.Contains(x.VisitTaskId ) && + x.ReadingTableQuestionTrial.QuestionMark== QuestionMark.State + &&x.ReadingQuestionTrial.LesionType== LesionType.TargetLesion + &&x.Answer== TargetState.UnableEvaluate.GetEnumInt() + ) + .Select(x =>x.VisitTaskId).Distinct().ToListAsync(); + + taskAnswerList = taskAnswerList.Where(x => !unableEvaluateTaskIds.Contains(x.VisitTaskId)).ToList(); + return taskAnswerList.OrderBy(x => x.SOD).ToList(); + } + + #region 获取访视任务信息 + /// + /// 获取访视任务信息 + /// + /// + /// + public async Task> GetVisitTaskAnswerList(ReadingCalculateDto inDto) { if (visitTaskAnswerList == null) { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs index e46992d18..fcf857bf3 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTaskService.cs @@ -497,6 +497,7 @@ namespace IRaCIS.Application.Services GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto(); result.TumorEvaluate = await _readingCalculateService.GetReportTumor(indto.VisitTaskId); + result.IsExistDisease= await _readingCalculateService.GetReportIsExistDisease(indto.VisitTaskId); var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync(); result.ReadingTaskState = visitTaskInfo.ReadingTaskState; var taskInfoList = await _visitTaskRepository.Where(x => (x.SubjectId == visitTaskInfo.SubjectId && x.TaskState == TaskState.Effect