From b712abd1d5a68b2357d73ce4bfe19ec46169effc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 11 Nov 2025 16:37:06 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AF=BC=E8=A1=A8co=E8=A1=A8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/Export/CDISCExportBaseModel.cs | 5 + .../Common/Export/RESISTExportService.cs | 134 ++++++++++++++---- 2 files changed, 113 insertions(+), 26 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/Export/CDISCExportBaseModel.cs b/IRaCIS.Core.Application/Service/Common/Export/CDISCExportBaseModel.cs index 7c00bfad6..822de893b 100644 --- a/IRaCIS.Core.Application/Service/Common/Export/CDISCExportBaseModel.cs +++ b/IRaCIS.Core.Application/Service/Common/Export/CDISCExportBaseModel.cs @@ -74,6 +74,7 @@ public class TumorGlobalQuestionAnserInfo [Comment("原任务ID")] public Guid TaskId { get; set; } + public GlobalAnswerType GlobalAnswerType { get; set; } [Comment("问题答案")] public string Answer { get; set; } = string.Empty; @@ -89,6 +90,8 @@ public class TumorExportBaseModel : TU_TR_RSBaseModel #region 后续处理额外添加字段 + + public DateTime? JudgeSignTime { get; set; } public Guid? SourceSubjectVisitId { get; set; } @@ -204,7 +207,9 @@ public class TU_TR_RSBaseModel #endregion + public DateTime? SignTime { get; set; } + public string TaskName { get; set; } #region 额外翻译字段 diff --git a/IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs b/IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs index 7dc30e311..20cc0b291 100644 --- a/IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs @@ -1,5 +1,6 @@ using Amazon.Runtime.Internal.Transform; using DocumentFormat.OpenXml.Bibliography; +using DocumentFormat.OpenXml.Office2010.CustomUI; using DocumentFormat.OpenXml.Office2021.DocumentTasks; using DocumentFormat.OpenXml.Spreadsheet; using IRaCIS.Application.Contracts; @@ -253,6 +254,8 @@ public class Tumor_CDISC_ExportService(IRepository c.ReadingQuestionTrial.QuestionType == QuestionType.AdjustReason).FirstOrDefault()!.Answer, - GlobalResultList = t.GlobalVisitResultList.Where(t => t.GlobalAnswerType == GlobalAnswerType.Reason).Select(t => new TumorGlobalQuestionAnserInfo() + GlobalResultList = t.GlobalVisitResultList.Where(t => t.GlobalAnswerType == GlobalAnswerType.Reason || t.GlobalAnswerType == GlobalAnswerType.UpdateType).Select(t => new TumorGlobalQuestionAnserInfo() { TaskId = t.TaskId, + GlobalAnswerType = t.GlobalAnswerType, Answer = t.Answer }).ToList(), @@ -379,7 +383,7 @@ public class Tumor_CDISC_ExportService(IRepository t.QuestionAnswerList).Select(t => t.TranslateDicName) .Union(taskList.SelectMany(t => t.LesionList).SelectMany(t => t.LessionAnswerList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(c => c.TranslateDicName)) - .Union(new List() { "ArmEnum", "ValueUnit" }) + .Union(new List() { "ArmEnum", "ValueUnit", "GlobalAssessType" }) .Distinct().ToArray(); //翻译字典 @@ -405,13 +409,49 @@ public class Tumor_CDISC_ExportService(IRepository t.Code.ToLower() == ((int)task.ArmEnum).ToString().ToLower()).Select(t => isEn_Us ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; - #region 初始化 - if (task.SourceSubjectVisitId == null) + + if (task.ReadingCategory == ReadingCategory.Judge) { continue; } + if (task.ReadingCategory == ReadingCategory.Global) + { + // co 处理部分 处理部分3 全局修改备注 + foreach (var vTaskGroup in task.GlobalResultList.Where(t => t.GlobalAnswerType == GlobalAnswerType.Reason).GroupBy(t => t.TaskId)) + { + var visiTaskId = vTaskGroup.Key; + + var reason = vTaskGroup.FirstOrDefault()?.Answer ?? ""; + + var firstTuTask = tuList.FirstOrDefault(t => t.VisitTaskId == visiTaskId); + + if (reason.IsNotNullOrEmpty() && firstTuTask != null) + { + + var co = CreatNewCOExport(task, coList.Count + 1); + + co.RemarksQuote = $"{co.ArmEnumStr}_{co.TaskName}"; + + co.VisitNum = firstTuTask.VisitNum; + + co.Remarks = reason; + + co.CODTC = firstTuTask.SignTime?.ToString("yyyy-MM-dd"); + + coList.Add(co); + } + + } + + continue; + } + + #region 初始化 + + //处理按照访视维度 给出索引号 var subjectVisitId = (Guid)task.SourceSubjectVisitId; @@ -430,7 +470,7 @@ public class Tumor_CDISC_ExportService(IRepository t.Code.ToLower() == ((int)task.ArmEnum).ToString().ToLower()).Select(t => isEn_Us ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; + #endregion @@ -579,7 +619,7 @@ public class Tumor_CDISC_ExportService(IRepository t.Code.ToLower() == questionAnswer.QuestionValue?.ToLower()).Select(t => isEn_Us ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; + } + else + { + co.Remarks = questionAnswer.QuestionValue; + } + + co.CODTC = task.SignTime?.ToString("yyyy-MM-dd"); + + coList.Add(co); + } + + #endregion } - #region co 处理部分 + #region co 处理部分 处理部分2 访视点,裁判备注 //非基线 if (task.VisitNum > 0) @@ -682,50 +747,67 @@ public class Tumor_CDISC_ExportService(IRepository t.VisitTaskId == task.VisitTaskId && t.IsOveralResponse == true).FirstOrDefault(); - if (rs_Tumor != null) + //访视点备注必须有值才导出 + if (rs_Tumor != null && task.VisitNote.IsNotNullOrEmpty()) { var co = CreatNewCOExport(task, coList.Count + 1); co.RDOMAIN = "RS"; co.IdentificationVariable = "RSSEQ"; co.Identification = rs_Tumor.RSSEQ.ToString(); - co.RemarksQuote = $"{co.ArmEnum} {co.VisitName}"; + co.RemarksQuote = $"{co.ArmEnumStr}_{co.VisitName}"; co.Remarks = task.VisitNote; coList.Add(co); } - if (task.IsTrigerJudge == true && task.IsJudgeSelect == true) - { - var co = CreatNewCOExport(task, coList.Count + 1); - - co.RemarksQuote = $"{co.ArmEnum} {co.VisitName}"; - co.Remarks = task.JudgeNote; - co.CODTC = task.JudgeSignTime?.ToString("yyyy-MM-dd"); - - coList.Add(co); - } - } + if (task.IsTrigerJudge == true && task.IsJudgeSelect == true && task.JudgeNote.IsNotNullOrEmpty()) + { + var co = CreatNewCOExport(task, coList.Count + 1); + + co.RemarksQuote = $"{co.ArmEnumStr}_{co.VisitName}"; + co.Remarks = task.JudgeNote; + co.CODTC = task.JudgeSignTime?.ToString("yyyy-MM-dd"); + + coList.Add(co); + } #endregion } #region 全局更新数据--rs 全局更新原因 - foreach (var task in taskList.Where(t => t.ReadingCategory == ReadingCategory.Global)) + //var globalList = taskList.Where(t => t.ReadingCategory == ReadingCategory.Global).GroupBy(t => new { t.SubjectCode, t.ArmEnum }).Select(g => g.OrderByDescending(t => t.VisitNum).FirstOrDefault()).ToList(); + + + + + //全局会对每个访视的结果进行更改 rs表只取最新的一次全局 + foreach (var task in taskList.Where(t => t.ReadingCategory == ReadingCategory.Global).GroupBy(t => new { t.SubjectCode, t.ArmEnum }).Select(g => g.OrderByDescending(t => t.VisitNum).FirstOrDefault())) { - var globalReson = task.GlobalResultList.FirstOrDefault(); - if (globalReson != null) + foreach (var vTaskGroup in task.GlobalResultList.GroupBy(t => t.TaskId)) { + var visiTaskId = vTaskGroup.Key; - foreach (var item in rsList.Where(t => t.VisitTaskId == globalReson.TaskId)) + var type = vTaskGroup.FirstOrDefault(t => t.GlobalAnswerType == GlobalAnswerType.UpdateType)?.Answer ?? ""; + + + var updateType = translateDataList["GlobalAssessType"].Where(t => t.Code.ToLower() == (type)?.ToString().ToLower()).Select(t => isEn_Us ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; + + var reason = vTaskGroup.FirstOrDefault(t => t.GlobalAnswerType == GlobalAnswerType.Reason)?.Answer ?? ""; + + + if (reason.IsNotNullOrEmpty()) { - item.UpdateAssessmentReason = globalReson.Answer; + foreach (var item in rsList.Where(t => t.VisitTaskId == visiTaskId)) + { + item.UpdateAssessmentReason = $"{updateType} {reason}"; + + } } } - } #endregion From 12cb53b1671a13025b858c00679d20de5432c08a Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 12 Nov 2025 11:35:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=AF=BC=E8=A1=A8=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ExportService.cs => TumorExportService.cs} | 28 +++++++++++++++---- IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 5 ++++ 2 files changed, 27 insertions(+), 6 deletions(-) rename IRaCIS.Core.Application/Service/Common/Export/{RESISTExportService.cs => TumorExportService.cs} (98%) diff --git a/IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs b/IRaCIS.Core.Application/Service/Common/Export/TumorExportService.cs similarity index 98% rename from IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs rename to IRaCIS.Core.Application/Service/Common/Export/TumorExportService.cs index 20cc0b291..d9c286224 100644 --- a/IRaCIS.Core.Application/Service/Common/Export/RESISTExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/Export/TumorExportService.cs @@ -383,7 +383,7 @@ public class Tumor_CDISC_ExportService(IRepository t.QuestionAnswerList).Select(t => t.TranslateDicName) .Union(taskList.SelectMany(t => t.LesionList).SelectMany(t => t.LessionAnswerList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(c => c.TranslateDicName)) - .Union(new List() { "ArmEnum", "ValueUnit", "GlobalAssessType" }) + .Union(new List() { "ArmEnum", "ValueUnit", "GlobalAssessType", "ImageQualityIssues" }) .Distinct().ToArray(); //翻译字典 @@ -424,6 +424,8 @@ public class Tumor_CDISC_ExportService(IRepository t.VisitNum == task.VisitNum - ReadingCommon.TaskNumDic[ReadingCategory.Global]).FirstOrDefault()?.VisitName ?? ""; + var reason = vTaskGroup.FirstOrDefault()?.Answer ?? ""; var firstTuTask = tuList.FirstOrDefault(t => t.VisitTaskId == visiTaskId); @@ -433,7 +435,7 @@ public class Tumor_CDISC_ExportService(IRepository ImageQualityProblem = 67, + /// + /// 影像质量问题备注 + /// + ImageQualityProblemComment = 68, + /// /// 斑块1-PAV ///