From 15b50e39f1df5f4129016c9a60f52ec2cf917f0d Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 14:43:19 +0800 Subject: [PATCH 1/7] =?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.API/IRaCIS.Core.API.csproj | 6 + .../TumorEvaluation_IRECIST1.1_CN_V1.docx | Bin 23725 -> 25575 bytes .../IRaCIS.Core.Application.xml | 162 +++++++++- .../Reading/Dto/ExportTumorEvaluationDto.cs | 214 ++++++++++++++ .../IRECIST1Point1CalculateService.cs | 276 +++++++++++++++++- .../MRECISTHCCCalculateService.cs | 2 +- .../RECIST1Point1CalculateService.cs | 2 +- .../RECIST1Point1_BMCalculateService.cs | 10 +- 8 files changed, 663 insertions(+), 9 deletions(-) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 31b011e55..d615d12d2 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -122,6 +122,12 @@ Always + + Always + + + Always + Always diff --git a/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_CN_V1.docx b/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_CN_V1.docx index 36d557f5fe93690abebc31e3e88bf33d43d895fb..7c29d5e4bd938bedc178cc8586d1a8ed52a06782 100644 GIT binary patch delta 13690 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 + + + 非靶病灶信息 + + + + + 非靶病灶信息 + + + + + 有明确新病灶 + + + + + 有触发iRECST后的新病灶 + + + + + 新靶病灶结果 + + + + + 新非靶病灶结果 + + + + + 其他既往新病灶结果 + + + + + 存在触发iRECIST后新病灶结果 + + + + + 新病灶整体评估 + + + + + 有明确新病灶 + + + + + 有触发iRECST后的新病灶 + + + + + 新靶病灶结果 + + + + + 新非靶病灶结果 + + + + + 其他既往新病灶结果 + + + + + 存在触发iRECIST后新病灶结果 + + + + + 新病灶整体评估 + + + + + 有明确新病灶 + + + + + 有触发iRECST后的新病灶 + + + + + 新靶病灶结果 + + + + + 新非靶病灶结果 + + + + + 其他既往新病灶结果 + + + + + 存在触发iRECIST后新病灶结果 + + + + + 新病灶整体评估 + + 访视名称 @@ -7150,6 +7265,16 @@ 是否有新病灶 + + + 是否有明确既往新病灶 + + + + + 是否有触发iRECIST后新病灶 + + 靶病灶结果 @@ -7160,6 +7285,31 @@ 非靶病灶结果 + + + 新靶病灶结果 + + + + + 新非靶病灶结果 + + + + + 其他既往新病灶结果 + + + + + 存在触发iRECIST后新病灶结果 + + + + + 新病灶整体评估 + + 总体结果 @@ -7195,6 +7345,16 @@ 非靶病灶信息 + + + 新靶病灶信息 + + + + + 新非靶病灶信息 + + 序号 @@ -7210,7 +7370,7 @@ 部位 - + 检查号 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs index 15799f085..a275d7557 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs @@ -141,6 +141,66 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } } + + /// + /// 非靶病灶信息 + /// + public List NewTargetInfoList + { + get + { + List targets = new List(); + + var index = 0; + foreach (var item in VisitList.Last().NewVisitTargetInfoList) + { + TargetInfo targetInfo = new TargetInfo() + { + Title = item.Title, + VisitOneImgNum = item.VisitImgNum, + VisitOneLength = item.VisitLength != null ? item.VisitLength.Value.ToString() : string.Empty, + VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.NewVisitTargetInfoList[index].VisitImgNum : string.Empty, + VisitTwoLength = VisitList.Count >= 2 && VisitTwo.NewVisitTargetInfoList[index].VisitLength != null ? VisitTwo.NewVisitTargetInfoList[index].VisitLength.Value.ToString() : string.Empty, + VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.NewVisitTargetInfoList[index].VisitImgNum : string.Empty, + VisitThreeLength = VisitList.Count >= 3 && VisitThree.NewVisitTargetInfoList[index].VisitLength != null ? VisitThree.NewVisitTargetInfoList[index].VisitLength.Value.ToString() : string.Empty + }; + targets.Add(targetInfo); + index++; + } + return targets; + + } + } + + /// + /// 非靶病灶信息 + /// + public List NewNoTargetInfoList + { + get + { + List targets = new List(); + + var index = 0; + foreach (var item in VisitList.Last().NewVisitNoTargetInfoList) + { + TargetInfo targetInfo = new TargetInfo() + { + Title = item.Title, + VisitOneImgNum = item.VisitImgNum, + VisitOneLength = item.VisitLength != null ? item.VisitLength.Value.ToString() : string.Empty, + VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.NewVisitNoTargetInfoList[index].VisitImgNum : string.Empty, + VisitTwoLength = VisitList.Count >= 2 && VisitTwo.NewVisitNoTargetInfoList[index].VisitLength != null ? VisitTwo.NewVisitNoTargetInfoList[index].VisitLength.Value.ToString() : string.Empty, + VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.NewVisitNoTargetInfoList[index].VisitImgNum : string.Empty, + VisitThreeLength = VisitList.Count >= 3 && VisitThree.NewVisitNoTargetInfoList[index].VisitLength != null ? VisitThree.NewVisitNoTargetInfoList[index].VisitLength.Value.ToString() : string.Empty + }; + targets.Add(targetInfo); + index++; + } + return targets; + + } + } } @@ -174,10 +234,47 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string OneHaveNewLesion { get; set; } = string.Empty; + /// + /// 有明确新病灶 + /// + public string OneHavePreviousNewLesions { get; set; } = string.Empty; + + /// + /// 有触发iRECST后的新病灶 + /// + public string OneHaveTriggeringIRECSITNewLesions { get; set; } = string.Empty; + + /// + /// 新靶病灶结果 + /// + public string OneNewTargetResult { get; set; } = string.Empty; + + /// + /// 新非靶病灶结果 + /// + public string OneNewNoTargetResult { get; set; } = string.Empty; + + /// + /// 其他既往新病灶结果 + /// + public string OneOtherPreviousNewLesionResult { get; set; } = string.Empty; + + /// + /// 存在触发iRECIST后新病灶结果 + /// + public string OneTriggeringIRECSITResult { get; set; } = string.Empty; + + /// + /// 新病灶整体评估 + /// + public string OneNewLesionEvaluationResult { get; set; } = string.Empty; + + public string OneTargetResult { get; set; } = string.Empty; public string OneNoTargetResult { get; set; } = string.Empty; + public string OneOverallResult { get; set; } = string.Empty; public string OneDoctorSignTime { get; set; } = string.Empty; @@ -195,6 +292,41 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string TwoHaveNewLesion { get; set; } = string.Empty; + /// + /// 有明确新病灶 + /// + public string TwoHavePreviousNewLesions { get; set; } = string.Empty; + + /// + /// 有触发iRECST后的新病灶 + /// + public string TwoHaveTriggeringIRECSITNewLesions { get; set; } = string.Empty; + + /// + /// 新靶病灶结果 + /// + public string TwoNewTargetResult { get; set; } = string.Empty; + + /// + /// 新非靶病灶结果 + /// + public string TwoNewNoTargetResult { get; set; } = string.Empty; + + /// + /// 其他既往新病灶结果 + /// + public string TwoOtherPreviousNewLesionResult { get; set; } = string.Empty; + + /// + /// 存在触发iRECIST后新病灶结果 + /// + public string TwoTriggeringIRECSITResult { get; set; } = string.Empty; + + /// + /// 新病灶整体评估 + /// + public string TwoNewLesionEvaluationResult { get; set; } = string.Empty; + public string TwoTargetResult { get; set; } = string.Empty; public string TwoNoTargetResult { get; set; } = string.Empty; @@ -215,6 +347,41 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string ThreeHaveNewLesion { get; set; } = string.Empty; + /// + /// 有明确新病灶 + /// + public string ThreeHavePreviousNewLesions { get; set; } = string.Empty; + + /// + /// 有触发iRECST后的新病灶 + /// + public string ThreeHaveTriggeringIRECSITNewLesions { get; set; } = string.Empty; + + /// + /// 新靶病灶结果 + /// + public string ThreeNewTargetResult { get; set; } = string.Empty; + + /// + /// 新非靶病灶结果 + /// + public string ThreeNewNoTargetResult { get; set; } = string.Empty; + + /// + /// 其他既往新病灶结果 + /// + public string ThreeOtherPreviousNewLesionResult { get; set; } = string.Empty; + + /// + /// 存在触发iRECIST后新病灶结果 + /// + public string ThreeTriggeringIRECSITResult { get; set; } = string.Empty; + + /// + /// 新病灶整体评估 + /// + public string ThreeNewLesionEvaluationResult { get; set; } = string.Empty; + public string ThreeTargetResult { get; set; } = string.Empty; public string ThreeNoTargetResult { get; set; } = string.Empty; @@ -258,6 +425,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string HaveNewLesion { get; set; } = string.Empty; + /// + /// 是否有明确既往新病灶 + /// + public string HavePreviousNewLesions { get; set; } = string.Empty; + + /// + /// 是否有触发iRECIST后新病灶 + /// + public string HaveTriggeringIRECSITNewLesions { get; set; } = string.Empty; + /// /// 靶病灶结果 /// @@ -268,6 +445,32 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string NoTargetResult { get; set; } = string.Empty; + + /// + /// 新靶病灶结果 + /// + public string NewTargetResult { get; set; } = string.Empty; + + /// + /// 新非靶病灶结果 + /// + public string NewNoTargetResult { get; set; } = string.Empty; + + /// + /// 其他既往新病灶结果 + /// + public string OtherPreviousNewLesionResult { get; set; } = string.Empty; + + /// + /// 存在触发iRECIST后新病灶结果 + /// + public string TriggeringIRECSITResult { get; set; } = string.Empty; + + /// + /// 新病灶整体评估 + /// + public string NewLesionEvaluationResult { get; set; } = string.Empty; + /// /// 总体结果 /// @@ -316,6 +519,17 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public List VisitNoTargetInfoList { get; set; } = new List(); + + /// + /// 新靶病灶信息 + /// + public List NewVisitTargetInfoList { get; set; } = new List(); + + /// + /// 新非靶病灶信息 + /// + public List NewVisitNoTargetInfoList { get; set; } = new List(); + } public class VisitLesionInfo diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs index e57f54617..3da75228e 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs @@ -23,6 +23,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate [ApiExplorerSettings(GroupName = "Reading")] public class IRECIST1Point1CalculateService(IRepository _readingTableQuestionAnswerRepository, IRepository _visitTaskRepository, + IRepository _dicomInstanceRepository, IRepository _hIRHospitalRepository, IRepository _readingQuestionCriterionTrialRepository, IRepository _readingTableQuestionTrialRepository, @@ -65,7 +66,280 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// public async Task DownLoadTumorEvaluationStream(DownLoadReadReportInDto inDto) { - throw new BusinessValidationFailedException(_localizer["ReadingCalculate_DownLoadReadReport"]); + var downFile = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"wwwroot/ReadReoprtTemplate/downLoad/{inDto.DownLoadGuid}"); + Directory.CreateDirectory(downFile); + + var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId && x.ReadingCategory == ReadingCategory.Visit) + .Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync(); + var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.Trial).Include(x => x.SubjectPatientList).FirstNotNullAsync(); + var subjectPatientList = await _subjectPatientRepository.Where(x => x.SubjectId == subjectInfo.Id).Include(x => x.Patient).ToListAsync(); + var patientIdStrList = await _dicomStudyRepository.Where(x => x.SubjectVisitId == taskinfo.SourceSubjectVisitId).Select(x => x.PatientIdStr).Distinct().ToListAsync(); + var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); + var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); + var dicotionCode = trialQuestion.Where(x => x.DictionaryCode != string.Empty).Select(x => x.DictionaryCode).Distinct().ToList(); + dicotionCode.AddRange(tableQuestion.Where(x => x.DictionaryCode != string.Empty).Select(x => x.DictionaryCode).Distinct()); + var dictionList = await _dictionaryRepository.Where(x => dicotionCode.Contains(x.Code)).Include(x => x.ChildList).ToListAsync(); + var unitDictionary = await _dictionaryRepository.Where(x => x.Code == "ValueUnit").Include(x => x.ChildList).ToListAsync(); + + var relatedVisitTask = await ServiceProvider.GetService().GetRelatedVisitTask(new GetRelatedVisitTaskInDto() + { + VisitTaskId = inDto.VisitTaskId + }); + + var relatedTaskIds = relatedVisitTask.Item1.Select(x => x.VisitTaskId).ToList(); + + var answerList = await _readingTaskQuestionAnswerRepository.Where(x => relatedTaskIds.Contains(x.VisitTaskId)).Include(x => x.ReadingQuestionTrial).ToListAsync(); + + var rowinfoList = await _readingTableAnswerRowInfoRepository.Where(x => relatedTaskIds.Contains(x.VisitTaskId)).Include(x => x.VisitTask).Include(x => x.ReadingQuestionTrial).ToListAsync(); + + var instanceIdList = rowinfoList.Select(x => x.InstanceId).ToList(); + var instanceList = await _dicomInstanceRepository.Where(x => instanceIdList.Contains(x.Id)).Include(x => x.DicomSerie.DicomStudy).ToListAsync(); + + var tableAnswerList = await _readingTableQuestionAnswerRepository.Where(x => relatedTaskIds.Contains(x.VisitTaskId)).Include(x => x.ReadingQuestionTrial).Include(x => x.ReadingTableQuestionTrial).ToListAsync(); + var taskinfoList = await _visitTaskRepository.Where(x => relatedTaskIds.Contains(x.Id)) + .Include(x => x.SourceSubjectVisit).Include(x => x.SourceSubjectVisit.StudyList) + .Include(x => x.DoctorUser).ToListAsync(); + + + + string getHavePreviousNewLesions(Guid visitId) + { + var answer = answerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.OtherNewTargetLesion && x.Id == visitId).Select(x => x.Answer).FirstIsNullReturnEmpty(); + if (answer == ((int)(OtherPreviousNewLesionAssessment.iUPD)).ToString()) + { + return _localizer["CriterionCalculateExport_Yes"]; + } + else + { + return _localizer["CriterionCalculateExport_No"]; + } + } + + List exportVisitDatas = taskinfoList + .Select(x => new ExportVisitData() + { + VisitName = x.SourceSubjectVisit.VisitName, + VisitNum = x.VisitTaskNum, + CheckDate = string.Join(",", x.SourceSubjectVisit.StudyList.Where(x => x.StudyTime != null).Select(x => x.StudyTime.Value.ToString("yyyy-MM-dd"))), + CheckInfoList = x.SourceSubjectVisit.StudyList.Select(x => new DicomStudyInfo() + { + BodyPartExamined = x.BodyPartExamined, + Modalities = x.Modalities + }).ToList(), + HaveNewLesion = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.NewLesions), + // 是否有明确既往新病灶 // 结果为IPUD就是有 其他的是无 + HavePreviousNewLesions = getHavePreviousNewLesions(x.Id), + + // 是否有明确既往新病灶 + HaveTriggeringIRECSITNewLesions = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.IRECISTNewTargetLesion), + + NewTargetResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.NewTargetLesion), + NewNoTargetResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.NewNoTargetLesion), + OtherPreviousNewLesionResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.OtherNewTargetLesion), + TriggeringIRECSITResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.IRECISTNewTargetLesion), + NewLesionEvaluationResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.NewLesionEvaluation), + + TargetResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.TargetLesion), + NoTargetResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.NoTargetLesion), + OverallResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.Tumor), + DoctorName = x.DoctorUser.LastName + x.DoctorUser.FirstName, + SignTime = x.SignTime?.ToString("yyyy-MM-dd HH:mm:ss"), + VisitTargetInfoList = getLesionInfo(LesionType.TargetLesion, x.Id,5), + VisitNoTargetInfoList = getLesionInfo(LesionType.NonTargetLesions, x.Id), + NewVisitTargetInfoList = getLesionInfo(LesionType.NewTargetLesion, x.Id,5), + NewVisitNoTargetInfoList = getLesionInfo(LesionType.NewNonTargetLesion, x.Id), + }).OrderBy(x => x.VisitNum).ToList(); + + + #region 两个函数 + List getLesionInfo(LesionType lesionType, Guid Visittaskid, int? minNum = null) + { + var targetFocus = rowinfoList.Where(x => x.VisitTaskId == Visittaskid && x.ReadingQuestionTrial.LesionType == lesionType).OrderBy(x => x.RowIndex).ToList(); + + + var targetInfo = new List(); + + int num = 1; + foreach (var item in targetFocus) + { + + VisitLesionInfo target = new VisitLesionInfo + { + RowMark = rowinfoList.Where(x => x.VisitTaskId == Visittaskid && x.RowIndex == item.RowIndex && x.ReadingQuestionTrial.LesionType == lesionType).Select(x => x.RowMark).FirstIsNullReturnEmpty(), + Organ = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Organ, item.RowIndex), + Part = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Part, item.RowIndex), + Number = num, + StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstIsNullReturnEmpty(), + RowId = item.Id, + SeriesNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.SeriesNumber).FirstOrDefault(), + InstanceNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.InstanceNumber).FirstOrDefault(), + VisitLength = getStateInfo(item.VisitTaskId, item.RowIndex, lesionType), + }; + targetInfo.Add(target); + num++; + + } + if (minNum != null) + { + for (int i = num; i <= minNum.Value; i++) + { + VisitLesionInfo target = new VisitLesionInfo + { + Number = i, + }; + targetInfo.Add(target); + + } + + } + + return targetInfo; + } + + decimal getStateInfo(Guid visitTaskid, decimal item, LesionType lesionType) + { + // 非淋巴结取长径 淋巴结取长短径 + var state = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, visitTaskid, lesionType, QuestionMark.State, item); + var majorAxis = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, visitTaskid, lesionType, QuestionMark.MajorAxis, item, false); + + var isLymph = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, visitTaskid, lesionType, QuestionMark.IsLymph, item); + var shortAxis = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, visitTaskid, lesionType, QuestionMark.ShortAxis, item, false); + + var result = string.Empty; + + if (!majorAxis.IsNullOrEmpty()) + { + result = majorAxis; + + } + + if (isLymph.EqEnum(YesOrNoOrNa.Yes) && !shortAxis.IsNullOrEmpty()) + { + result = shortAxis; + } + + return result.IsNullOrEmptyReturn0(); + + } + #endregion + + var researchProgramNo = subjectInfo.Trial.ResearchProgramNo; + var subjectName = subjectInfo.ShortName; + var subjectCode = string.Join(",", patientIdStrList); //患者编号; + + + + List resultdata = new List(); + List times = new List() { "One", "Two", "Three" }; + List columns = new List() { + "VisitName", + "CheckDate", + "CheckInfoStr", + "HaveNewLesion", + "TargetResult", + "NoTargetResult", + "OverallResult", + "DoctorSignTime", + "HavePreviousNewLesions", + "HaveTriggeringIRECSITNewLesions", + "NewTargetResult", + "NewNoTargetResult", + "OtherPreviousNewLesionResult", + "TriggeringIRECSITResult", + "NewLesionEvaluationResult", + }; + + var forCount = (int)Math.Ceiling((double)exportVisitDatas.Count() / 3); + for (int i = 0; i < forCount; i++) + { + ExportTumorEvaluationInfo export = new ExportTumorEvaluationInfo + { + ResearchProgramNo = researchProgramNo, + SubjectName = subjectName, + SubjectCode = subjectCode, + VisitList = exportVisitDatas.Skip(i * 3).Take(3).ToList(), + }; + + export.Lesion = new ExportData() + { + OneTargetSum = export.VisitOne.TargetSum.ToString(), + TwoTargetSum = export.VisitTwo.VisitTargetInfoList.Count() > 0 ? export.VisitTwo.TargetSum.ToString() : string.Empty, + ThreeTargetSum = export.VisitThree.VisitTargetInfoList.Count() > 0 ? export.VisitThree.TargetSum.ToString() : string.Empty, + + + }; + foreach (var time in times) + { + foreach (var column in columns) + { + _generalCalculateService.SetPropertyDynamically(export.Lesion, column, export, time); + } + + } + + if (i >= forCount - 1) + { + export.IsLastPage = true; + // 之后最后一个任务需要签名 + var thisVisitListNum = export.VisitList.Count(); + switch (thisVisitListNum) + { + case 1: + export.Lesion.OneDoctorSign = _localizer["CriterionCalculateExport_Sign"]; + break; + case 2: + export.Lesion.TwoDoctorSign = _localizer["CriterionCalculateExport_Sign"]; + break; + case 3: + export.Lesion.ThreeDoctorSign = _localizer["CriterionCalculateExport_Sign"]; + break; + } + + } + resultdata.Add(export); + } + + + + + + var value = new + { + VisitTaskList = resultdata, + IsLastPage = false, + }; + + + var templatePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"wwwroot/ReadReoprtTemplate/TumorEvaluation_RECIST1.1_{(_userInfo.IsEn_Us ? "EN" : "CN")}_V1.docx"); + var isConvertedTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.IsConvertedTask).FirstOrDefaultAsync(); + if (isConvertedTask) + { + templatePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_{(_userInfo.IsEn_Us ? "EN" : "CN")}_V1.docx"); + + } + var outputFilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $@"wwwroot/ReadReoprtTemplate/downLoad/{inDto.DownLoadGuid}.docx"); + + + MiniWord.SaveAsByTemplate(outputFilePath, templatePath, value); + + + //// 获取文件夹中的所有文件路径 + Directory.Delete(downFile, true); + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + Stream stream = _generalCalculateService.ReadAndReturnStream(outputFilePath); + return stream; + } + else + { + + var pdfurl = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"wwwroot/ReadReoprtTemplate/downLoad"); + FileConvertHelper.ConvertWordToPdf(outputFilePath, pdfurl); + Stream stream = _generalCalculateService.ReadAndReturnStream(pdfurl + $"/{inDto.DownLoadGuid}.pdf"); + return stream; + } } /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs index 2834e3aa3..97275b3ef 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs @@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate Organ = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Organ, item.RowIndex), Part = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Part, item.RowIndex), Number = num, - StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstOrDefault(), + StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstIsNullReturnEmpty(), RowId = item.Id, SeriesNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.SeriesNumber).FirstOrDefault(), InstanceNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.InstanceNumber).FirstOrDefault(), diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index 6e8304586..2bb142b3e 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -139,7 +139,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate Organ = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Organ, item.RowIndex), Part = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Part, item.RowIndex), Number = num, - StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstOrDefault(), + StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstIsNullReturnEmpty(), RowId = item.Id, SeriesNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.SeriesNumber).FirstOrDefault(), InstanceNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.InstanceNumber).FirstOrDefault(), diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1_BMCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1_BMCalculateService.cs index 7f4ec06f6..f3eff861c 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1_BMCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1_BMCalculateService.cs @@ -112,13 +112,13 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate OverallResult = _generalCalculateService.GetTaskanswer(answerList, dictionList, unitDictionary, x.Id, QuestionType.Tumor), DoctorName = x.DoctorUser.LastName + x.DoctorUser.FirstName, SignTime = x.SignTime?.ToString("yyyy-MM-dd HH:mm:ss"), - VisitTargetInfoList = getLesionInfo(LesionType.TargetLesion, x.Id), + VisitTargetInfoList = getLesionInfo(LesionType.TargetLesion, x.Id,5), VisitNoTargetInfoList = getLesionInfo(LesionType.NonTargetLesions, x.Id), }).OrderBy(x => x.VisitNum).ToList(); #region 两个函数 - List getLesionInfo(LesionType lesionType, Guid Visittaskid) + List getLesionInfo(LesionType lesionType, Guid Visittaskid,int? minNum=null) { var targetFocus = rowinfoList.Where(x => x.VisitTaskId == Visittaskid && x.ReadingQuestionTrial.LesionType == lesionType).OrderBy(x => x.RowIndex).ToList(); @@ -135,7 +135,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate Organ = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Organ, item.RowIndex), Part = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Part, item.RowIndex), Number = num, - StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstOrDefault(), + StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstIsNullReturnEmpty(), RowId = item.Id, SeriesNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.SeriesNumber).FirstOrDefault(), InstanceNumber = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.InstanceNumber).FirstOrDefault(), @@ -145,9 +145,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate num++; } - if (lesionType == LesionType.TargetLesion) + if (minNum!=null) { - for (int i = num; i <= 5; i++) + for (int i = num; i <= minNum.Value; i++) { VisitLesionInfo target = new VisitLesionInfo { From 5ade2135ee752eca4e9a125e5024f6bcb492cced Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 15:11:34 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=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 | 12 ++++- .../Reading/Dto/ExportTumorEvaluationDto.cs | 44 +++++++++++++++++-- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index d6394366c..6332842f8 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -7087,7 +7087,7 @@ - 所有访视的靶病灶列表 + 所有访视的靶病灶列表 最多有三个 @@ -7115,6 +7115,16 @@ 靶病灶信息 + + + + + + + + + + 非靶病灶信息 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs index a275d7557..b7f5f02d0 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs @@ -1,6 +1,10 @@ -using System; +using DocumentFormat.OpenXml.Wordprocessing; +using MassTransit.Caching.Internals; +using System; +using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; @@ -17,7 +21,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class ExportTumorEvaluationInfo { /// - /// 所有访视的靶病灶列表 + /// 所有访视的靶病灶列表 最多有三个 /// public List VisitList { get; set; } @@ -97,8 +101,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto TargetInfo targetInfo = new TargetInfo() { Title = item.Title, - VisitOneImgNum = item.VisitImgNum, - VisitOneLength = item.VisitLength.ToString(), + VisitOneImgNum = GetVisitAnswer(0, "VisitTargetInfoList", index, "VisitImgNum"), + VisitOneLength = GetVisitAnswer(0, "VisitTargetInfoList", index, "VisitLength"), VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.VisitTargetInfoList[index].VisitImgNum : string.Empty, VisitTwoLength = VisitList.Count >= 2 ? VisitTwo.VisitTargetInfoList[index].VisitLength.ToString() : string.Empty, VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.VisitTargetInfoList[index].VisitImgNum : string.Empty, @@ -112,6 +116,38 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } } + /// + /// 获取访视答案 + /// + /// 访视Index 第几个访视 + /// 病灶字段名 数组 + /// 第几个病灶 + /// 要取的字段名 + /// + private string GetVisitAnswer(int visitIndex, string lesionName , int num, string fieldName) + { + var result= string.Empty; + try + { + PropertyInfo listProp = VisitList[visitIndex].GetType().GetProperty(lesionName); + IList list = listProp.GetValue(VisitList[visitIndex]) as IList; + object listItem = list[num]; + FieldInfo field = listItem.GetType().GetField(fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + if (field != null) + return field.GetValue(listItem).ToString(); + PropertyInfo prop = listItem.GetType().GetProperty(fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + if (prop != null) + return prop.GetValue(listItem).ToString(); + } + catch (Exception) + { + + + } + + return result; + } + /// /// 非靶病灶信息 /// From 87709f01221abdbbe2c166dfc196cca09415f2b7 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 15:25:03 +0800 Subject: [PATCH 3/7] =?UTF-8?q?Ires=E8=82=BF=E7=98=A4=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 21 ++- .../Reading/Dto/ExportTumorEvaluationDto.cs | 134 +++++++----------- .../IRECIST1Point1CalculateService.cs | 4 + 3 files changed, 68 insertions(+), 91 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 6332842f8..09e3a70f2 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -7115,14 +7115,21 @@ 靶病灶信息 + + + 病灶名称 + + + + - + 获取访视答案 - - - - + 访视Index 第几个访视 + 病灶字段名 数组 + 第几个病灶 + 要取的字段名 @@ -7132,12 +7139,12 @@ - 非靶病灶信息 + 新靶病灶信息 - 非靶病灶信息 + 新非靶病灶信息 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs index b7f5f02d0..ab01bd991 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs @@ -93,29 +93,51 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { get { - List targets=new List(); - - var index = 0; - foreach (var item in VisitList.Last().VisitTargetInfoList) - { - TargetInfo targetInfo = new TargetInfo() - { - Title = item.Title, - VisitOneImgNum = GetVisitAnswer(0, "VisitTargetInfoList", index, "VisitImgNum"), - VisitOneLength = GetVisitAnswer(0, "VisitTargetInfoList", index, "VisitLength"), - VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.VisitTargetInfoList[index].VisitImgNum : string.Empty, - VisitTwoLength = VisitList.Count >= 2 ? VisitTwo.VisitTargetInfoList[index].VisitLength.ToString() : string.Empty, - VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.VisitTargetInfoList[index].VisitImgNum : string.Empty, - VisitThreeLength = VisitList.Count >= 3 ? VisitThree.VisitTargetInfoList[index].VisitLength.ToString() : string.Empty - }; - targets.Add(targetInfo); - index++; - } - return targets; - + return GetTargetInfoList("VisitTargetInfoList"); } } + /// + /// 病灶名称 + /// + /// + /// + public List GetTargetInfoList(string lesionName) + { + List targets = new List(); + var index = 0; + + PropertyInfo? listProp = VisitList.Last().GetType().GetProperty(lesionName); + + if (listProp != null) + { + List? lesionList = listProp.GetValue(VisitList.Last()) as List; + + if (lesionList != null) + { + foreach (var item in lesionList) + { + TargetInfo targetInfo = new TargetInfo() + { + Title = item.Title, + VisitOneImgNum = GetVisitAnswer(0, lesionName, index, "VisitImgNum"), + VisitOneLength = GetVisitAnswer(0, lesionName, index, "VisitLength"), + VisitTwoImgNum = GetVisitAnswer(1, lesionName, index, "VisitImgNum"), + VisitTwoLength = GetVisitAnswer(1, lesionName, index, "VisitLength"), + VisitThreeImgNum = GetVisitAnswer(2, lesionName, index, "VisitImgNum"), + VisitThreeLength = GetVisitAnswer(2, lesionName, index, "VisitLength"), + }; + targets.Add(targetInfo); + index++; + } + } + + } + + + return targets; + } + /// /// 获取访视答案 /// @@ -129,9 +151,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto var result= string.Empty; try { - PropertyInfo listProp = VisitList[visitIndex].GetType().GetProperty(lesionName); - IList list = listProp.GetValue(VisitList[visitIndex]) as IList; - object listItem = list[num]; + PropertyInfo? listProp = VisitList[visitIndex].GetType().GetProperty(lesionName); + IList? list = listProp.GetValue(VisitList[visitIndex]) as IList; + object? listItem = list[num]; FieldInfo field = listItem.GetType().GetField(fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); if (field != null) return field.GetValue(listItem).ToString(); @@ -155,86 +177,30 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { get { - List targets = new List(); - - var index = 0; - foreach (var item in VisitList.Last().VisitNoTargetInfoList) - { - TargetInfo targetInfo = new TargetInfo() - { - Title = item.Title, - VisitOneImgNum = item.VisitImgNum, - VisitOneLength = item.VisitLength!=null? item.VisitLength.Value.ToString():string.Empty, - VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.VisitNoTargetInfoList[index].VisitImgNum : string.Empty, - VisitTwoLength = VisitList.Count >= 2&& VisitTwo.VisitNoTargetInfoList[index].VisitLength!=null ? VisitTwo.VisitNoTargetInfoList[index].VisitLength.Value.ToString() : string.Empty, - VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.VisitNoTargetInfoList[index].VisitImgNum : string.Empty, - VisitThreeLength = VisitList.Count >= 3&& VisitThree.VisitNoTargetInfoList[index].VisitLength!=null ? VisitThree.VisitNoTargetInfoList[index].VisitLength.Value.ToString() : string.Empty - }; - targets.Add(targetInfo); - index++; - } - return targets; + return GetTargetInfoList("VisitNoTargetInfoList"); ; } } /// - /// 非靶病灶信息 + /// 新靶病灶信息 /// public List NewTargetInfoList { get { - List targets = new List(); - - var index = 0; - foreach (var item in VisitList.Last().NewVisitTargetInfoList) - { - TargetInfo targetInfo = new TargetInfo() - { - Title = item.Title, - VisitOneImgNum = item.VisitImgNum, - VisitOneLength = item.VisitLength != null ? item.VisitLength.Value.ToString() : string.Empty, - VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.NewVisitTargetInfoList[index].VisitImgNum : string.Empty, - VisitTwoLength = VisitList.Count >= 2 && VisitTwo.NewVisitTargetInfoList[index].VisitLength != null ? VisitTwo.NewVisitTargetInfoList[index].VisitLength.Value.ToString() : string.Empty, - VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.NewVisitTargetInfoList[index].VisitImgNum : string.Empty, - VisitThreeLength = VisitList.Count >= 3 && VisitThree.NewVisitTargetInfoList[index].VisitLength != null ? VisitThree.NewVisitTargetInfoList[index].VisitLength.Value.ToString() : string.Empty - }; - targets.Add(targetInfo); - index++; - } - return targets; - + return GetTargetInfoList("NewVisitTargetInfoList"); ; } } /// - /// 非靶病灶信息 + /// 新非靶病灶信息 /// public List NewNoTargetInfoList { get { - List targets = new List(); - - var index = 0; - foreach (var item in VisitList.Last().NewVisitNoTargetInfoList) - { - TargetInfo targetInfo = new TargetInfo() - { - Title = item.Title, - VisitOneImgNum = item.VisitImgNum, - VisitOneLength = item.VisitLength != null ? item.VisitLength.Value.ToString() : string.Empty, - VisitTwoImgNum = VisitList.Count >= 2 ? VisitTwo.NewVisitNoTargetInfoList[index].VisitImgNum : string.Empty, - VisitTwoLength = VisitList.Count >= 2 && VisitTwo.NewVisitNoTargetInfoList[index].VisitLength != null ? VisitTwo.NewVisitNoTargetInfoList[index].VisitLength.Value.ToString() : string.Empty, - VisitThreeImgNum = VisitList.Count >= 3 ? VisitThree.NewVisitNoTargetInfoList[index].VisitImgNum : string.Empty, - VisitThreeLength = VisitList.Count >= 3 && VisitThree.NewVisitNoTargetInfoList[index].VisitLength != null ? VisitThree.NewVisitNoTargetInfoList[index].VisitLength.Value.ToString() : string.Empty - }; - targets.Add(targetInfo); - index++; - } - return targets; - + return GetTargetInfoList("NewVisitTargetInfoList"); ; } } } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs index 3da75228e..ea9053b45 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs @@ -106,6 +106,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate string getHavePreviousNewLesions(Guid visitId) { var answer = answerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.OtherNewTargetLesion && x.Id == visitId).Select(x => x.Answer).FirstIsNullReturnEmpty(); + if(answer==string.Empty) + { + return string.Empty; + } if (answer == ((int)(OtherPreviousNewLesionAssessment.iUPD)).ToString()) { return _localizer["CriterionCalculateExport_Yes"]; From ad62ad7ae0642287272990c8e42ad6ccf904f68c Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 15:48:35 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TumorEvaluation_IRECIST1.1_EN_V1.docx | Bin 22435 -> 25937 bytes .../MRECISTHCCCalculateService.cs | 10 +++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_EN_V1.docx b/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_EN_V1.docx index 31f5388c9e244cb20a3371ecd5adb5b1163a7c6e..8852ba1b6a3403091a177d3cf58b646c07439e02 100644 GIT binary patch delta 14145 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 VEQ>O^juI<5Rtp*G$mqX){|`&1DwqHO delta 10595 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 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs index 97275b3ef..ce5bd993f 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs @@ -117,12 +117,20 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate int num = 1; foreach (var item in targetFocus) { + // 以最后一个为准 + var typicalIntrahepaticLesions = tableAnswerList.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.ReadingQuestionTrial.LesionType == lesionType && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.TypicalIntrahepaticLesion && x.RowIndex == item.RowIndex).Select(x => x.Answer).FirstIsNullReturnEmpty(); + + var typicalIntrahepaticLesionsText = string.Empty; + if (typicalIntrahepaticLesions == ((int)ReadingYesOrNo.Yes).ToString()) + { + typicalIntrahepaticLesionsText = $"\n{_localizer["CriterionCalculateExport_TIL"]}"; + } VisitLesionInfo target = new VisitLesionInfo { RowMark = rowinfoList.Where(x => x.VisitTaskId == Visittaskid && x.RowIndex == item.RowIndex && x.ReadingQuestionTrial.LesionType == lesionType).Select(x => x.RowMark).FirstIsNullReturnEmpty(), Organ = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Organ, item.RowIndex), - Part = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Part, item.RowIndex), + Part = _generalCalculateService.GetTaskTableAnswer(tableAnswerList, dictionList, unitDictionary, Visittaskid, lesionType, QuestionMark.Part, item.RowIndex)+ typicalIntrahepaticLesionsText, Number = num, StudyIdStr = instanceList.Where(x => x.Id == item.InstanceId).Select(x => x.DicomSerie.DicomStudy.StudyId).FirstIsNullReturnEmpty(), RowId = item.Id, From 4187673b7a3a55ec3f3e9c3cbf74b5b92b1fc8a6 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 15:59:41 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/ReadingCalculate/MRECISTHCCCalculateService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs index ce5bd993f..1d0929520 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/MRECISTHCCCalculateService.cs @@ -123,7 +123,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var typicalIntrahepaticLesionsText = string.Empty; if (typicalIntrahepaticLesions == ((int)ReadingYesOrNo.Yes).ToString()) { - typicalIntrahepaticLesionsText = $"\n{_localizer["CriterionCalculateExport_TIL"]}"; + typicalIntrahepaticLesionsText = $",{_localizer["CriterionCalculateExport_TIL"]}"; } VisitLesionInfo target = new VisitLesionInfo From ec45d80b9b93f571abda49d5d2d1a45fffee2a32 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 16:35:52 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TumorEvaluation_IRECIST1.1_CN_V1.docx | Bin 25575 -> 25639 bytes .../IRaCIS.Core.Application.xml | 2 +- .../Reading/Dto/ExportTumorEvaluationDto.cs | 4 ++-- .../IRECIST1Point1CalculateService.cs | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_CN_V1.docx b/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_CN_V1.docx index 7c29d5e4bd938bedc178cc8586d1a8ed52a06782..f30ffe8e5bc0df54b0cdd81c8059227591127da9 100644 GIT binary patch delta 13811 zcmZ8|Q+QrM)OBpzHX1ih+So>8+h%iO`;8jgwrw^xo5r^D_rtI6T%6}z%*?sivuCZn z_N>DZ@RCvRcrNHU{%bhP1U_P*PvMjmty4Gx2zOSrrIn|%v{CE-b2nJA@GWlCxj9DM zSf}~>-K7&9!|u49g#^je1)lxZ2)UQ&Ve)K6(qB$_CE0oUpFfJ?&VM$`VUh-43>tD) z&r!bIg&MpC#Bku~DII|<^WGWGMQfLXJy-wG`I49sCwDm&z@fK8vb}ZziJlhwr{R3@ zfph6QKHoNtQdb*{yq!D!5PP`Jqcd-wOCBsu3{jY4-O<3G2e2$g`7tHPEO5T=`Ddqo zQ-C~+J{73ZLf+>TnMb5G4Nu)OQ|2J!fcT&%&XK&~6yv8wQCRr^Ws+OUqls2X>_=7L z?L-?g4*AO?O+6Z4!R==NX=es+1$I-Ljs2~qFB8-L;t%cxf0$;or}J9E^;It}AV1&vOUdTN!Hx@n_zIkcXNHm41l3vKwh zy>d4nc5EiZuK~|ZmytI}C0R%)EHE%IIIu8B!^&QD(8U|_YNd2l+QDmqW~8deh_ z5PL{Zs@kMhS{8%Yf?g;9b#FR(hBDB>XwB+0eDCHU`*qVLalZq#J@TTDPdx)aA2X1G zH9uv1(&DI7AhLwcIh$~-Vyzd6xi4?i*o6`o8M7%wRfpTK3j!B9(MgVz!}ZV40ao`t z7)}pRE^D5bp3c-yx^p6cTX*AzcPBXBuCmW%OmKvm)n0<)Bta#5^k7>v|Tlb=I*buq6_^#&u~-bJG%6ir0U~uC;KvG>W?z z!AnPrj+WSr0(|0?!D<)V^IQ^0h*Bg=rQkMW>0>~ZRQR$Uc;uP@FNxZ_FQRUpwT`b) zmv5&~caLC8{dMEd#7KSsL;q4cV8Z~%M}-meXFKM*k99KqMPL|Jlr#ZtBNhF6dbPlv zOOWMc;VbfIsC5888#VQ>dQKCaRqax6rA8s9jf#g?>_!*96utY~IBbLeKMct}3aHfJ zAbul+h9Jm8Bm~zciA-cTFfax@kSm%3(A^=-+52(+NGk5MQ*;WxwtpmYU8=PyWdtJ zq2|hgc#|77+OoRd3eLw;%V9{>rTe;-Hnz^X`2^FBpy zQdg~7S1{G6TGl#25iSsW*E~Z>bV|NJ&}{A+x?TIbBdY#2!*)G-EwZNqS!5$x<^sST z{FxBv>m%bgR&6 zkP(N_Scvoaxaep!=^cR02x5a${ikx&)icj6bTmtpE}|kNX%06(F#5r3M;6r=zqq^U zosTctSQw$UUNS@7BTA^MpK}Z^f~$~PlNA$ZegiRr-5X})a@RXDmC4jz4aDXXUc8ux>we)zDk8)4JT-46G&Gbb)^_NeKN)9{A_bX?;^b~Wcb(qoRC@v@Bsgr;S8M%pI)I? z=gJlA*(*E4={hy^+k-ryh#Bm5;36+|x*|CP%u3TD4%XUs1n}H?s1WDg(|?q{6R|TW|sQ$=vbjEY@6kTQx5ewyN&v& zIqWT$Ca^xuafEpfD5ZU7)Y*2qbEye6RAq=}jGkC;A9@`rd@fu(`+Z$#8t?9H3l^z>6#7wMRIQgF?)#q;z0U|?@u;OXfCSnt@MD4^b^v~N1_F6VMn z-Ce3ElU&+L(i%~z=qe)Kfv?LH17k^5CzWY=f+O}GWG7c^@IUU0i1jW+8yB5YiX>x@ zag0=n&c`w!2wInJL@<#HeOZ%QK*5~j5TY4?poc#JKhzyV1MNnhf;A0@;_q}{hd)n> zHVrXgp-Z3xD&kb%=)0-l(`}^HMp2g+=3k@~Oh{8Bq)TU`8OqIqUy6Cih0?ieNvXoJ z9~U68Ww^GQfm}SC!P2ktrr(fKAmyQvf1g=S7m59ujkH9)mxpDiv2=GG{n=TZokI1^ z<|IVriB6<57)^j*KYsx19+|H0+n;MB@@SJ)a2c@=AUIz-P{p?&K3h5G7_TOdg;UcK z+t&b=#F~~&PMXufs1i;UC8J%-6tFvbrFlYyV1 zOSI&i;joL>&3-t>`#Djv@v@KYsC4snjf58EVl6rn3J^UbOUy(Q4jCun6_&uL8a$ znIWk{&iGKe$R~*cCCeZ;gyF^#fmpQwCxdt~ay&DPcuYqsm12SZpOpx5A=%&9#(fDe z^Vv{+N#GUd4oi&#uESFeNrKhr84{*PF!mbYfKyne2uf@vsOw3`DT>HvbBs8ppiF25 zsMg$s7stF1e-VMWuqeC(!XIIO`#p6HTWC`C3u7b{ST(^QbI6k+WuUqcc(nwm3}H_T zHhQN_jm0Etsn9|xe@a@mTJfe3?@oL>MjLCAG9ELD$>f#Z9dtTlk{X6arleZNAQQo0 z0{9bsvSpB*WeUlD|A7wVrWgCYxiP~?n`|m#xG5eg<8(sl6+{ciX&d2LMK`Z)H5i-! zd%N(PnOv_)dXR-^+N zGD+xE!=};s!D4VCoVQ2v5g zzy5@I>$(~Iu^76dCS5hwvUsrFlBeE1_+mcs@?~;7q1%-;&$%RN$etIYWIo_G)>mK# zSWw1EKAOf+wEu@)~!@s*QO^f&X8&?*YvQMS>@-1 zF;~Y*K0*W!_4T_W5~WUJSW3Q~rzO(e+-$jI-)6dGzc%D-pI9=ML|T=FZj~-*R3u}I zr^cj|lX5fEkaRolI-3pEQ+EN>R-x6L3@z9dH@D}&TUgG0i+1S7DP4OPM9J@}DnCto zwYBEW&34b(#B~|TdJX<^TY?lP)0%OK!+a;#!twE;ZlmTeOBGEFubRu8rbG2RukKXu zYV{1$$9w}89PN=P+is?5#AD4G$hS|%lI)7!n~07N)ut8l>Z<4Kju*g5C{N66>7Crq ziMCwC3+P?R<|k<0orTPVxg zeTTB*a?FoqC%^5l$ z%k9N`D1^34kw`i}_h%*FI?~SwtN8c$PEOxi-7H{x()BWUiltxbc#4m3^#yxb?i74V zei~Vj3jdsKgMI=whjjY3=Qq4$c@w?Uvw8@_oap9m&m30Qd%!eHrJQ~KUTgx&%!@)v zl_0^zdf-{sck(OnG%s*tCU<@nJay-Si5pe$ey1s1U0In4yck^F9xq?^&d{Rv1OOk$ z4#I+OZaV>{FDWlN((;H~Z<`(5*s=+7Z9fM%W97>l9DrbRqhg1(Pa?qkNq@(x&t}qi zO&%E;?rrZ2_=l6>_7av+2(bxrm_d-}yM)=h^E<+t^s76ruaahS8&??j*$MMU3Sw#} zccZ=Z1>r;Cy2OmTuutKZiuOeme`IkN1)GgIp`IT_@A+QT#;xTzdNxFLp$0Ub@SXR3 zZQoez2hdqY(lU|>HVkb))P?s^!q3T)ZjBgrisyHUNAQ`_bmE=7EwSU+g|a;2Yp~;J zM|pE(UPW?$FhSTPEswI_xA+dkis(>DTF6z4Hwoa7Fb+5*`m5N?|4q!o1}agyJyI_InNM; zGEeLZOM{jqmYjU%(=j)p;s;5)FRA|QYR9=o_H=^Plg3@9S;~7O%Jm4hz1F=@vsm_@ zErxMy=%FS|2M5ntXh43OZ-=Z%c`slbbM&&U-wW|NGzP8_Z-Yj<*Vte9{n6z`O*mFX z0Z=Q_b7SOiVuOU5rw-T%WUupxG47DPX0&SZ`$)~17~AHxi$*D|=yUY&?6qMjPs)O3 z?-d(f`wxfOUh)7!tOn25GtJNEyD1M?;N9|S9ra%zwR$VC+`;Dd!knXH0dJzabO*Zn zE*7^W=MCTXGW7lg%kQl%j-6tKHKkR61Jkyq|ClZ1ZxaQ{B`^}nr%Xz9$ngL#GV=n( z8taofn`l7>h>LZ10SeyieGd2%WRLZzLhzKoo*$QCw~8027e5vC!){$;#?i=OCgAgz zobk5cY8p%$M^DK@_>HZjZ}}`Ey~I*)Tc=T=EuzJxFw+;y-AF;Z(1891l;|*!zkvmg zhvzeGTKICtnMdmH3Y_uDZ=@k09u3~R{kkE;Elkut=rPPP)9gFm(@~4MPT%9}rM+U`Nm*HTkH_k-wt;=}uP+6Q`N%<^ z-wl?rQ!HqQr|AJ{41P9&y_b+YU+EQ_Y2=6$n4sxr38$u|Cm042-AK?z^WdY=nKqKk^Cb&nj4Y_ z$MRgn9>bhUlc|dCisjS_h9wIAwleMn<&D*=So$$TCM1jBOZpH)F>-~~OWA(~*D%`Y zX?g>Kc;bEdWE#6y1~UL6<^{yRu);i0;?ik@bMRpJ)rUenHGV;pP!7JBRWG?`R3;YQ z1rsV4HIi6lOHxo=20FfdW)P(gG#0qN?0MI52;#y;CLu;P%A4`!3;r<--n(x6_i~CH z=~Mrk6Qzg}J_?_RIS9tYr%F32&snK}uRNSZCcbZ#m5Z71hXptp4Zt=+tP4gb<}InA zJE&vSGG@pTw;SnTr;rEI2*8~d7>i4NV)d$MqVK0(6MSLb@VoRXPfDM zx_JBOICS{=xIY_q7)Judo*`9X+dyf;KUO9l8mIiy#8tPF%3y0u`RmvereJ9gg2C1^ z{rU|6@O+;?c7UxOL7!KLTB0(;G=$JuD-O&_ar~Ru<9YG=B09XS#kgq5btE3clf;2t zN4cIZVlB4;LuSRVu`;~Vx#lbKgfIN(n?b* zciQL@p#rS>T;;6G#1!Z9#uf+ims#uXnDe5`lwbmp$9HI^cgD$hYfc1d%9=g-JSpqH@+l(nokQp3WVZ500mgV2oGoDtuq0tz5|)iolM? z#BYbQ7wYQ{MvSI>kGeg(<<9x}_GjmsKVXQr|I5@|i2;|oG~C?u>RO=1aF=}xQ}?nG zZsaxAty-CFjjnEl%lb3R8;Zd7BebE$4?fa9W()k-Cz*5!&DbzsSTgNz?!COZn^p+2;y&pXq|&2)Qchda z<8928uzzbw61m|GN>O2^70KKAHJ@T}z;Qu_m0k+Nor=m!jIbGf7iWYe!(VhYg^ppb zE(KI$gr{i1G(@euYksqJ#h53Xk$ zh!es90zRc{+Pki}pbReE)v~q3vWNJpSg&T7zhnL3MdJ21_IXt_ZDa3O7rjQ@tDMoG zSkr8x+#3Qi{iemz+R2VDZb=e%3yeH)#fzI-P{G?a?pPmf&Q2p)Ar4n?3Cz zv7`pm&t<^qZ7Q)O_~SsE**S5aiUZI6`494V?uA@osLLha8){}k*A5kZ?;R(t3a_-a zK(3l~!JI?IS5+?z8zjFHYul;Z9H}s#vc2$EL<&=v3E8NoGaAWXY7`;Ks(`ngHC;Xv z9hQ3SCo6RH3tDfkLY^-J4g;^=c;La(dSQ?jwV|_ePFnwhrvfe$**$h1d|KnYH3d$_ zOJuWGJZV9VWg9_dJ@~ObIL#Z{A2Bw!$0xLtR;Jjqo#K0uEo3(y4+p40pHGHuDgbcXxmhXwHg&5%A5pH9F*?~cWt<_2)Jvq4a=hPJITShF4*X$|>)oU4@%Gz3wBAz|0rB`q3<(AF1A z(a0dMirD+jAy1fvrvpp_%S=;#KmLJvbVbh3>mr?z+y6eue*}A?gJJt&G1W57h-5T~ z_fdb{wC8K&=6!08mInK>iaYH!oj>KVHzrnRHl9vGTNVySqxPG_fpHM$uuBn^)c5A@ z)FWHq?ci*yt3=qZ!I^CbTs)09vi49slW8Yg@=TTFuo{pwpLBjc+ssP(px3u^h|PI^ z5QZgj5cnZ^PuNho{UdkY{|G#rbsn7|mF@HWPv80@%wxAA$EtK!By<)$qqL<)gK~x@ z7uNSAnPoMmApv!Ub;bZQL5MVTF=fJJ-TpdGv=AABmGm@Yi*#s$E9ziRD8SKg(7Ha~ zE+bWelNoSiPWdWE)*aTX*7i)|2&X3dtqF>GsL>HCMM)M-qcxkl?qt2(SO2@0wi5o4 z{`4aX+AFo?*IeX4qkMkZrXA#-#_zSSnW}CtD&W5xIpqxO@ZX6=TmF&D=o^8brfDRZ zj3M${H($JDFiS_3wRk87*BK_!C-4C}n9DIO;>UqB8btr}XD}tyBKO_6H1R=M&UM9ej z{B^p%F(FX%wY*4XCFIaQ1c~Cw^&m;t5)UO2u}S$}KyiQ-t8>o1XH=7qgTD%~D9~y+ zg9czqqcM=~R#`lk5KpKiiVohE`(54Bc*=6gWc)KPB3%>_GF&wzL#kA8Qo&A5lYIKC-~obep| zjNV`FrmI%BlsJ4XAY}!mvA0=MN*B2-nhn4Kw%T=S$Jr^$o8#BT3m~C}p5HxYwqIhM zgadg70}MZ#&AN}C6!lB?FP^n@);pt*U0>Zbt<>7u@2AP;gI@Z?ip{8IH;^0)fhRv%-Z}c=l~@A z{_%CgUsxKOGUKWWl3iqfA$-+x^}Yxk^M0o!TJeb{M@A zf1B2BkMsMk&G%FrF8c*UajJfyLKf+g@$R{}Ombt(>f=(F8Q4&-N7Ep*YUwZ+-l;M4 zn()e|j(he_A2{WyG2dbi;xf+>ZQy-e!s<%04+{*gzBk=8t$F<8Pw2H6o8F4<->^#l zy%Y zG89^HEHV_^0>(-eb{L3*Hs^i!Rdh-W>a>$zkAKgV;)$0W72>x@p>xnFA%KnsjLvVR z`1qGJw_N!9zH|MEau%VM2^(=Cz+cSXaD3HhNIcfuq>&;4`-9t7N-`vE+Tk_gHEvhW!du z?wv`hbTAIDvusH_wJTn7Q(oKG2YB~x^JQHI;aQ`v^^iX2yX0nb%(@GoG6YxMnjIcE zErk=$1YK`E>z<6RBLK_cYKZSazjAJ@YQFOuB}BoG$b5vu?={Ks)k#VpinOkO zeH;M$s?4)%x3)M>9O)EN;IET^ji7FM-$D}@sWrF3TROym<_^#`kWO}GDXz*Wo9BjRbzmUdw|3 zn}){DjT*pjuTO0?#yR?RDA3ZoS9tPe`jCPmPYWZRI)Q`aCE@oO(|97BQ3NM>=v0GP zA{A#;ba2IyE=5GDr%fa)o)If?%yiN^>=eGC=#_*>L#1{=usMF$z^o=GOo2$Vve&Dp zkWtDLB`iDfvn!Y?{0rze69>hB;OjLGTtKmJH9kO59p1{o?G$1jHz4%^3O1LvbdMU_ z{8Da7=^k`>rYBcC!2$8}Re_a+hX$|z?C~ayfi*a`)W9<3d=(!ny^8lW;wJrV4u0gD z!9h1VLE8o@bSt5zhKns@WEy4m(ph=~FMa4!ot=bX-@X?*cKcFFqxq(If{b8zqq($A z3N~=^nivvN=c|kW-OvAoE*4{l+DATk%0e(BeIs2aIP3?g5G8K4+_h^uD%LiX;1w^Diw>u+ihYl>cTlID{k;wY zgt5>447Z;Zc-^4X@1T-;+2{wNiaw<1{Q=bP5jv-=(m1^}yD$YQPS@v7-^7bWzekZ_ znL$Rz27Y>O!(MRH`>W;r7kKr|3 zamEeocrY6GfJMrd#K@Mtny5XFhzX?{&k#-Efkdgo(r&fejKZWuhSx2pN-A*I$pG>{ z3ttjcGKX;4X=bFe8{)G;fn%Q8m;y|0Lr%=liR>2+TIVS{Cb)~(scqf2a*yMG8@bSI z%3&`3xIM2PR^NqDNqXShE^l8ivwQCKa$O0dl~V)!bPi+_Kat?47MH%Vm}DD@Z0664 zW5*9P#Z;$lRewn-CR!DR<)BOvUkAh*z|bsUa$xdXx3|&y#Pmd&lkYjPKN}46ZgIob zgkImedKpd}#A6a_EcX9*CDW~YL@u+;;Pi0pF#UN)#+fZ35x$<9F(Zv-72j31e?M1w zt3`Q`_9#+LlA(*Tq=+iaID#bI5_++fW$nuT1NZQd{P7=QzRTY<0@`W2v>T1CgpW?! zZxUV0H&~NZ7mu`*Jo`wyxEAFPhj)rH(95g`t?wBLi@x8U{K4tADWLnSIw}N zv(O>PTUf}%&BF)9Zq_BRmf9cM;m*0H7-E;-m57+)$8p02A-I242;sq)vSK?*#=~1M z5)M~KNg~0_oqQvK0MI$vz-0`){wW3&TqAbi3jXy1{ur_j@G9)62Capf?PMlIg-}bO zGNqnHFv&{F@YqS9ueiD*)XuXX|G-EIZZX)DO0+9}w(r~1vB9U0yyw zA9v4xyyTBsDSs*`Wc_G!6OK@xoTQKKCEejSv%InH`*XW{f?K) z`o&1M_sNXTBob8{^!;H2>f_i~Lfcm6Ud~d>6lE=7#N9_q8hKiUdQheTY9Xpu_v2d{ z!u|*aEJQjKXOjfA{S;F&x3ZTi57#eRaGoBE-bk-NAYDg#XpwE66~&q&&A4^r`M-d+ zu0N-^xxjLb5d-)YQF%w0T&}6O-A;WSTvE^sQL|JogpK>?rs-)mco^_tU!Xe?j=972 z@+I{1Sig9bGo6Lr@4L5q);}Ft-b#(i2UVJymdh$iF?t86aHFX}SIL)NATk6GsiBW< z1=t}>%iT(pjrwUcG!u8nGX?iH!Hx5urG=S8S%$)#nEoCjH58@c2;EWN)eVCp(+Nwn z7_;C8CTIxX6q@e0&P;YfHog#K{gYz5psIDio5N^)+`r)joA9^%DIt5J|~BC z2LU6=Ly?Kk@wQ_Z!z~<)Fh03(@*AZ997sgI3|J0_(YNH0^tc|3hOiX1x^Uk;jC+N-e~34V z+$|76%iLf@y~;z*s$y!$@z!O|(XvV!+EZ(kj6$raE_boD(lW0@RtB^vBTOR$0bKCGaX0`WxNAp&F|l7Ez?cOw1-H=pj&r*+`cS||)9w3Rc2 z374g`#Q&x+SS0_0t!RI)dfg71eISqccj=u?ziu9rl^Hn6_PrZ@I2Zcl6XXB^qcy5T z=maQQuNMr4Y+f@5Mdu!*xrpSomfo>OhDMgsV4_ zca=nG#7$<>AyUzGcy#&>iflx>Zp5h#+SMbK4wq}cJSL6I7e`eEU{mNf?VmzEXK&54 zw?jO0$IF4fZ9p;!Mwvj&3azM)t6To?rOa3+T>^zSMifSoU4Jk9YdV}|0dX0DQgk9C zpR2dJYTTv-zt*hXkgE)&$?@kGT?ev~mE6|wk@Hr{R#C^W9R-S3mlbZuL6u9@l#yoa z6INMOB!R#O78OxdfC#w|eIQ;{35-#ATAtGV+ppw0LN+F%@V|a1ZOQcXk+~E$Za4gh z-$&c51$oZr4LyT8`hNrq|~)tFp&y(jGoxOr%cVyx3Ap0NqdNAc(&rVH_igYta4m z6M#dG5KI^h4Gj*JxHvmHlq+NL6M0jT;S{qL>CYTo)rEvC({&xf9hp+LV!tpR3Bei} zg+yPW7sX9L1U`&w5c2(GRN+!B6_PN{;^E@`bfsEB^D<_(HXVI}9%?c63YQ3aC=p;o z$h34UqF(sp6aHgl=(+R{qy0OQ5~LJ<&Mn3hH32=B+zd@G*v)QPKRYTo8T3{U=ITa@ z*Z7WPs$Zt~gl#8g@Xck}nB64`7+Hg=t>2K-olQ}R0b7D*JJ&%Y*~K_6Xj#S;n8(;X zlsBtQE48KT*2QGgR=m9T8j_Yx7n)br4zF!&P(CUkGesO_SJ6x2@A*ajffN{sFm8|A z@^>);fpq8n)h$gkJ1mEiKr{fVT;t3 zG7@uRK{@&aA~$hmO|^uM{F^9-I<#WffFfD(}U*hzq91Ek-V2U@C8bUtUd0Iw!XyoqHIoOwY+!58o{1&0{Z7T0pgW zHDt>yFyjcApk)XzCCd*CM}P=oYv+eWyprCOR9hNm4o1Q*Er2biFx%><4NZ(pa)JWP z=e~#8EEM@lZI&pv&3D%}kfNBwU!ZM}|H~W;iVgCgq;rpL^bhP;#z%cYk2wM_;nL_o zV#d`~lZo<>bY|5T(~X@GYO8bnxc-x=>+(PvSNU=b8QNF+oMwnZhfMu6|TBjIXNE zE`DE|2oIWcx$g^Hw!??$i`QLT&Uy1inbWAC=O zV3A`F$}^@rY8PlvrB9-mOvUQiN9~w?n97Dp{PwR!yR{wxX?G1TxkJZfr}iIZY+v$M zf+C|NIc+#Rubc(txtaDqqwGTe&{Tr=ADWK76DVkOP_GbbsZxQA$T!;i0gxG=3fI(g zR0NDXWBy&}nO{NvdgPcz_AT8MF4AW64swI7go`0b#|zD8n=W|a^T8nw(7{^Poa6UC z4GP;v5_;Nw^8nx$==zc}CX>E+sr+^=o%HVvp=D;ed3e^0gEiPRXv6#0&y45L8sCpA zux8)ein2tQzWDrmc1uSI^md{KQBev!tQDiWwUY2NNwf~@N%SVHX5$&Dc$|3bSH~Nf z3*0qcxM#<5@kftAq|RpghUn~}cfi4QT_jOw#~a`9)IO+hst_jkvc)mpqHsWQsqoE7 z;_2<4F62a1^NZx$eS1nL{rk9HUbXZ3u3!q&)v;v;SvomPTXl1!8fH!F zTVfolJI^-kasaE-IYtASy`~+2H6AIO$B#(AhdpEH87dCrEa*SMZYDC1<&HI77TJbT zOJg&zG#H={Bsf^CO@05Ps%YX%VXmHVK-gwGeH9&Si{IErujg*nsR)-54_vd6lYh=_ zV+_w9riz*`J|YZE?A!#1WZ(%d*Vu|(Z5G95r}jGFq7eSJeyB3P*($o;3j1lo(3A3= z2$SEvkn2+CmK=4ut8Uc#y3pl6CDKv7^w42ZTSp+VhEZmLkr~p zjvEGt<}d&n>w5yR80t+2ky;ok+naR6}6v3xxb>Ms^@pd-PuOk#@{p8_R`tec?S zB7SE=;F7f>J_*`8^e4ulq=bHm2x@l^jeUp(=B2m$_B2+Y9j;b4!7_Vs7yfa4-^Fm2 z;@m8zo1GlmvEwE%UG(L#4)&p{pczsUz!&sfXOT+B=Clmw=|AGoJymsH`JNkHmITCP zYRF^i?=e5>U8O?Iu&eQNw$Rn*jlv{xj1EHW35jL)DBWq$wMMW{t1^-OC}v`C+q;ei zLH({+qe(PGl1Ag=4^7McoA5=*of?NaF$o5pKJQnZn5u5=kDk#&X=i@_ze6VVSgQxN z%Lztc8SbjQDstkf$=IN#x?dg4OXm;*mO8X=nkk-b zpK^rFtXmHFzWM>g6Eqa5(nA1ciB#kh5MW?S2w-3s|C|UO4$h`5<_`9*YDUJkW?ww* zY&X?6?dMssx+V9BDYhM)>RqKP%;q(4A_%`2hTCwvX-BQZp1J1D^kR$bv7tSNw}4Y^ z1)6jSpQa~ithomiXpD{VN{s&P63bbM^LcR`=!s**Uo$+|O;wNB%y|V^-s22iXG>@ERSDL* z^uJWAb|*Vs-+7FT7ioa-W&)=a#xgTy(g7pi7Rv3$z#Fi2etn9#!=O}5a%}u$e?3gG zBVX{$WhAIwv`(W;>q~6A&gDc*BTNR0!ea3KjYM{Fp5RlgoE?(b9o&AsVBdNA9E>8X zE}6kEx@gnm&+O&41{nr*d^unKw1}}auxS>oLg`Q5!Ii)X!N&qDAiOrI_rXb~ z5MijHgD)E%!i50;V>+6wtv0+Cbi9)_oOb3WQ0Yu?H9# zZD0qa*(djm+`ULcchFtgk~oG+*;7{gBJkew999h{+4+EQOx@Tr4Ak$DmdAuPb^;Le zTa(XH%~1ug4HRHt5JZq{BA$_(Z5N6$8c|2-1Ra}mN-Mnmm_CE?Nw$SQU@6)8zg7u@ zar5cryZMq_V31wfrNR|FeM@Ck^_-`c>#fxLa{W5d0-*f<_~iYDJ6tyNUspT-ZT5f9 zKhI49GI9f|Rx&gMh90O`Ul@W*3v{T@4z2|vFyKLfRs#bwadUBXu=`L8=bwQzHPWn-GCw3>p8+O9kpO(b5 oG(cg-Lf~njVPnew*RpbJ91U&_@;BiD2Z7p5=wRCQ|6|Vo0)6A4vj6}9 delta 13746 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 - + 新非靶病灶信息 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs index ab01bd991..0a783ab17 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ExportTumorEvaluationDto.cs @@ -200,7 +200,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { get { - return GetTargetInfoList("NewVisitTargetInfoList"); ; + return GetTargetInfoList("NewNoVisitTargetInfoList"); ; } } } @@ -530,7 +530,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 新非靶病灶信息 /// - public List NewVisitNoTargetInfoList { get; set; } = new List(); + public List NewNoVisitTargetInfoList { get; set; } = new List(); } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs index ea9053b45..4a53cae18 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs @@ -105,7 +105,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate string getHavePreviousNewLesions(Guid visitId) { - var answer = answerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.OtherNewTargetLesion && x.Id == visitId).Select(x => x.Answer).FirstIsNullReturnEmpty(); + var answer = answerList.Where(x => x.ReadingQuestionTrial.QuestionType == QuestionType.OtherNewTargetLesion && x.VisitTaskId == visitId).Select(x => x.Answer).FirstIsNullReturnEmpty(); if(answer==string.Empty) { return string.Empty; @@ -152,7 +152,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate VisitTargetInfoList = getLesionInfo(LesionType.TargetLesion, x.Id,5), VisitNoTargetInfoList = getLesionInfo(LesionType.NonTargetLesions, x.Id), NewVisitTargetInfoList = getLesionInfo(LesionType.NewTargetLesion, x.Id,5), - NewVisitNoTargetInfoList = getLesionInfo(LesionType.NewNonTargetLesion, x.Id), + NewNoVisitTargetInfoList = getLesionInfo(LesionType.NewNonTargetLesion, x.Id), }).OrderBy(x => x.VisitNum).ToList(); From 62037c0d43d4b3982a3233c628887f25b1da7745 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 10 Sep 2025 17:29:38 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TumorEvaluation_IRECIST1.1_CN_V1.docx | Bin 25639 -> 25473 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_CN_V1.docx b/IRaCIS.Core.API/wwwroot/ReadReoprtTemplate/TumorEvaluation_IRECIST1.1_CN_V1.docx index f30ffe8e5bc0df54b0cdd81c8059227591127da9..b42cbdbb8ff650629c14b74824b9b6770d6487c3 100644 GIT binary patch delta 12436 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

ww!( zULtv^?NBo>^cF>W1yqFKI)YkfQtZ9qf*cUcgYv9Z5i#lz?*1d*G!FYS#)qp>t5wH_ zr!gF3J2iIIF}~3-;U^=uhU?j``Ho>1_}s>g2(ik)B1weJWSYZBP>zPF$HpR1iMpwD zChSnnx~T>xJZL5w5D*rg?jFuyU9jWl)J9X{)E*Nws5QORDHB0R_*6tw1*k}kRBclc zC|}J~0WHGRbPM9tX;ZuZ-3s708;APPPlYw-fuv6rGXG5U|608 Kfn)rixBmkTlJiOc delta 12550 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%0A9evAZ8R;dKdfPgU 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%0Ac|A<3l*|RmyCDM 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