From 8ca740bae39c946df9e7f791e6ace0a5317da00b Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 6 Jan 2026 13:39:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../General/ReadingCalculateService.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs index a120a38f2..f96cbb832 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs @@ -486,11 +486,23 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate Evaluation = new List>() { } }; + var baseLineAnswerType= QuestionType.ExistDisease; + var visitAnswerType = QuestionType.Tumor; - if (criterion.CriterionType == CriterionType.PCWG3) + switch (criterion.CriterionType) { - visitAnswerType = QuestionType.SiteVisitForTumorEvaluation; + case CriterionType.PCWG3: + baseLineAnswerType= QuestionType.SiteVisitForTumorEvaluation; + visitAnswerType = QuestionType.SiteVisitForTumorEvaluation; + break; + case CriterionType.Lugano2014WithoutPET: + visitAnswerType = QuestionType.CTandMRI; + break; + case CriterionType.Lugano2014: + visitAnswerType = QuestionType.ImgOncology; + break; } + result.Evaluation.Add(visitTaskName.Select(x=> new EvaluationValue() { @@ -499,7 +511,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var r1baseLine= r1.TaskQuestions .SelectMany(x => x.Childrens) - .Where(x => x.QuestionType == QuestionType.ExistDisease) + .Where(x => x.QuestionType == baseLineAnswerType) .SelectMany(x => x.Answer.Select(a => new EvaluationValue { DictionaryCode = x.DictionaryCode, @@ -530,7 +542,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { var r2baseLine = r2.TaskQuestions .SelectMany(x => x.Childrens) - .Where(x => x.QuestionType == QuestionType.ExistDisease) + .Where(x => x.QuestionType == baseLineAnswerType) .SelectMany(x => x.Answer.Select(a => new EvaluationValue { DictionaryCode = x.DictionaryCode, From e17b26b41d39eff151876651b8a4aab34c63b32b Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 6 Jan 2026 14:14:15 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 7 ++ .../General/ReadingCalculateService.cs | 117 +++++++++++++++++- 2 files changed, 118 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index fb95d88cd..6abd62171 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -3841,6 +3841,13 @@ + + + 获取报表数据 + + + + 获取阅片报告 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs index f96cbb832..ba703b0eb 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs @@ -23,8 +23,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IHttpContextAccessor httpContext, IOSSService oSSService, IRepository _readingQuestionCriterionTrialRepository, - IStringLocalizer _localizer, IUserInfo _userInfo + IStringLocalizer _localizer, IUserInfo _userInfo, + IRepository _readingTableQuestionAnswerRepository, + IRepository _readingTableQuestionTrialRepository, + IRepository _readingTableAnswerRowInfoRepository, + IRepository _readingQuestionTrialRepository, + IRepository _organInfoRepository, + IRepository _readingGlobalTaskInfoRepository, + IRepository _subjectVisitRepository, + IRepository _tumorAssessmentRepository, + IGeneralCalculateService _generalCalculateService, + IRepository _readingTaskQuestionAnswerRepository, + IVisitTaskHelpeService _visitTaskHelpeService, + IMapper _mapper ) : BaseService, IReadingCalculateService { private ICriterionCalculateService _useCriterion; @@ -469,7 +481,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate ).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync(); if (task != null) { - data = await GetReadingReportEvaluation(new GetReadingReportEvaluationInDto() + data = await GetReportsChartData(new GetReadingReportEvaluationInDto() { TrialId = task.TrialId, VisitTaskId = task.Id, @@ -594,10 +606,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }; if (negativeToString.Contains(item.QuestionType)) { - cd.Value.ForEach(item1 => - { - item1 = item1 == "-1" ? string.Empty : item1; - }); + cd.Value = cd.Value.Select(item => item == "-1" ? string.Empty : item).ToList(); } chartList.Add(cd); } @@ -666,6 +675,102 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } + + /// + /// 获取报表数据 + /// + /// + /// + private async Task GetReportsChartData(GetReadingReportEvaluationInDto indto) + { + GetReadingReportEvaluationOutDto result = new GetReadingReportEvaluationOutDto(); + var isConvertTask = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).Select(x => x.IsConvertedTask).FirstNotNullAsync(); + var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync(); + result.CalculateResult = await this.GetReportVerify(new GetReportVerifyInDto() + { + VisitTaskId = indto.VisitTaskId, + IsConvertTask = isConvertTask, + BeforeConvertedTaskId = visitTaskInfo.BeforeConvertedTaskId, + }); + + + + + + + + + result.ReadingTaskState = visitTaskInfo.ReadingTaskState; + var taskInfoList = await _generalCalculateService.GetReadingReportTaskList(indto.VisitTaskId); + + result.VisitTaskList = taskInfoList; + + var visitTaskIds = taskInfoList.Select(x => x.VisitTaskId).ToList(); + + var criterionId = visitTaskInfo.TrialReadingCriterionId; + var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId) + .ToListAsync(); + var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == criterionId).OrderBy(x => x.ShowOrder).ToListAsync(); + var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + result.LesionCountList = tableAnsweRowInfos.GroupBy(x => x.LesionType).Select(x => new LesionDto + { + LesionType = x.Key!.Value, + Count = x.ToList().Count() + }).ToList(); + + var lesionsIndexs = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).GroupBy(x => new { x.QuestionId }).Select(x => new lesionsIndexDto() + { + QuestionId = x.Key.QuestionId, + Rowindexs = x.Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList() + + }).ToListAsync(); + + var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var globalanswerList = await _readingGlobalTaskInfoRepository.Where(x => visitTaskIds.Contains(x.TaskId) && x.GlobalVisitTask.TaskState == TaskState.Effect && x.Answer != string.Empty).Select(x => new Globalanswer() + { + TaskId = x.TaskId, + VisitTaskNum = x.GlobalVisitTask.VisitTaskNum, + QuestionId = x.QuestionId, + Answer = x.Answer + }).ToListAsync(); + var alltableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var organIds = alltableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); + var organInfos = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); + + var needChangeType = new List() { + QuestionMark.Organ, + QuestionMark.Location, + QuestionMark.Part, + }; + + // 第一级 + + List questions = await _generalCalculateService.GetReadingReportQuestion + ( + questionList, + taskInfoList, + globalanswerList, + answers, + tableAnsweRowInfos, + tableQuestionList, + alltableAnsweRowInfos, + tableAnswers, + organInfos, + needChangeType + ); + + + + result.TaskQuestions = questions; + + + + return result; + + } + /// /// 获取阅片报告 /// From bb36240c3ce4c2440179ad4e3599df5cfabbcb98 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 6 Jan 2026 14:32:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingCalculate/General/ReadingCalculateService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs index ba703b0eb..c05532e08 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs @@ -387,12 +387,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate if (item.Childrens.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer[i].Answer.EqEnum(ReadingYesOrNo.Yes))) { chartData.Value.Add(item.Childrens.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer[i].Answer).FirstOrDefault()); - result.Unit = item.Childrens.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Unit).FirstOrDefault(); + result.Unit = item.Childrens.Where(x => x.QuestionMark == QuestionMark.MajorAxis).Select(x => x.Unit).FirstOrDefault(); } else { chartData.Value.Add(item.Childrens.Where(x => x.QuestionMark == QuestionMark.MajorAxis).Select(x => x.Answer[i].Answer).FirstOrDefault()); - result.Unit = item.Childrens.Where(x => x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Unit).FirstOrDefault(); + result.Unit = item.Childrens.Where(x => x.QuestionMark == QuestionMark.MajorAxis).Select(x => x.Unit).FirstOrDefault(); } break; @@ -606,7 +606,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }; if (negativeToString.Contains(item.QuestionType)) { - cd.Value = cd.Value.Select(item => item == "-1" ? string.Empty : item).ToList(); + cd.Value = cd.Value.Select(item => item == "-1"|| item == "-2" ? string.Empty : item).ToList(); } chartList.Add(cd); }