导表co表修改

Test_IRC_Net8
hang 2025-11-11 16:37:06 +08:00
parent 6d11fc68b4
commit b712abd1d5
2 changed files with 113 additions and 26 deletions

View File

@ -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 额外翻译字段

View File

@ -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<ReadingQuestionCriterionTrial
UserName = t.DoctorUser.UserName,
ArmEnum = t.ArmEnum,
TaskName = t.TaskName,
SignTime = t.SignTime,
JudgeSignTime = t.ReadingCategory == ReadingCategory.Judge ? t.SignTime : null,
SourceSubjectVisitId = t.SourceSubjectVisitId,
VisitTaskNum = t.VisitTaskNum,
@ -285,9 +288,10 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
//全局 访视上修改会要求填写
VisitNote = t.ReadingTaskQuestionAnswerList.Where(c => 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<ReadingQuestionCriterionTrial
var dicNameList = taskList.SelectMany(t => 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<string>() { "ArmEnum", "ValueUnit" })
.Union(new List<string>() { "ArmEnum", "ValueUnit", "GlobalAssessType" })
.Distinct().ToArray();
//翻译字典
@ -405,13 +409,49 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
foreach (var task in taskList)
{
task.ArmEnumStr = translateDataList["ArmEnum"].Where(t => 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<ReadingQuestionCriterionTrial
rs_subjectIndexNoDic.Add(task.SubjectCode, 0);
}
task.ArmEnumStr = translateDataList["ArmEnum"].Where(t => t.Code.ToLower() == ((int)task.ArmEnum).ToString().ToLower()).Select(t => isEn_Us ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty;
#endregion
@ -671,10 +711,35 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
}
#endregion
#region co 处理部分 处理部分1 质量备注
if (questionAnswer.QuestionType == QuestionType.ImageQualityAssessment)
{
var co = CreatNewCOExport(task, coList.Count + 1);
co.RemarksQuote = $"{co.ArmEnumStr}_{co.TaskName}";
if (questionAnswer.TranslateDicName.IsNotNullOrEmpty())
{
co.Remarks = translateDataList[questionAnswer.TranslateDicName].Where(t => 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);
}
#region co 处理部分
#endregion
}
#region co 处理部分 处理部分2 访视点,裁判备注
//非基线
if (task.VisitNum > 0)
@ -682,50 +747,67 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
//整体肿瘤评估结果备注
var rs_Tumor = rsList.Where(t => 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)
}
if (task.IsTrigerJudge == true && task.IsJudgeSelect == true && task.JudgeNote.IsNotNullOrEmpty())
{
var co = CreatNewCOExport(task, coList.Count + 1);
co.RemarksQuote = $"{co.ArmEnum} {co.VisitName}";
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 globalReson = task.GlobalResultList.FirstOrDefault();
//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();
if (globalReson != null)
//全局会对每个访视的结果进行更改 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()))
{
foreach (var item in rsList.Where(t => t.VisitTaskId == globalReson.TaskId))
foreach (var vTaskGroup in task.GlobalResultList.GroupBy(t => t.TaskId))
{
item.UpdateAssessmentReason = globalReson.Answer;
var visiTaskId = vTaskGroup.Key;
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())
{
foreach (var item in rsList.Where(t => t.VisitTaskId == visiTaskId))
{
item.UpdateAssessmentReason = $"{updateType} {reason}";
}
}
}
}
#endregion