diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 4cd597ad8..829942b42 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -2369,16 +2369,15 @@ namespace IRaCIS.Core.Application.Service.Common list.Add(item); } - - - - } } - // CDISC 导出 和自定义导出 都会配置到表格问题层级,随意配置,所见即所得 - else /*if (inQuery.ReadingExportType == ExportResult.CDISC)*/ + // 非肿瘤标准 包括自定义,以及系统非肿瘤 会配置到表格层级 问题名称是 表格名称_表格子问题名 + else if ( + criterion.CriterionGroup == CriterionGroup.Nontumorous && inQuery.ReadingExportType != ExportResult.CDISC + ) { + // 配置在外层问题 或者表格问题上 var taskList = await query.ProjectTo(_mapper.ConfigurationProvider, new @@ -2402,18 +2401,31 @@ namespace IRaCIS.Core.Application.Service.Common foreach (var item in taskList.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum)) { - if (item.LesionList.Count > 0) + //有病灶,并且至少配置了一个病灶问题 + if (item.LesionList.Count > 0 && item.LesionList.SelectMany(t => t.LessionAnswerList).Any()) { foreach (var lession in item.LesionList.OrderBy(t => t.LessionType).ThenBy(t => t.LessionCode)) { - var dynamicPartialLessionInfoList = lession.LessionAnswerList.Select(t => new CommonQuesionInfo() { QuestionName = t.QuestionName, QuestionValue = t.QuestionValue, TranslateDicName = t.TranslateDicName, CDISCCode = t.CDISCCode }); + //病灶配置了问题 才进行导出 + if (lession.LessionAnswerList.Count > 0) + { + var firstLessionAnser = lession.LessionAnswerList.FirstOrDefault(); + var addLessionInfoList = new List(); + + addLessionInfoList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Table Name" : "表格名称", QuestionValue = firstLessionAnser.TableQuestionName }); + + var dynamicPartialLessionInfoList = lession.LessionAnswerList.Select(t => new CommonQuesionInfo() { QuestionName = t.TableQuestionName + "_" + t.QuestionName, QuestionValue = t.QuestionValue, TranslateDicName = t.TranslateDicName, CDISCCode = t.CDISCCode }); + + //有三部分组成 外层问题+ 固定列表格名称 + 动态的表格问题 + var dynamicLessionInfoList = item.QuestionAnswerList.Union(addLessionInfoList).Union(dynamicPartialLessionInfoList).ToList(); + + + var cloneItem = item.Clone(); + cloneItem.QuestionAnswerList = dynamicLessionInfoList; + list.Add(cloneItem); + } - //有三部分组成 外层问题+ 没有配置病灶编号和类型+ 动态的表格问题 - var dynamicLessionInfoList = item.QuestionAnswerList.Union(dynamicPartialLessionInfoList).ToList(); - var cloneItem = item.Clone(); - cloneItem.QuestionAnswerList = dynamicLessionInfoList; - list.Add(cloneItem); } } else @@ -2425,6 +2437,20 @@ namespace IRaCIS.Core.Application.Service.Common } + } + // CDISC 导出 只管到 外层问题层级 和阅片结果表是保持一致 + else if (inQuery.ReadingExportType == ExportResult.CDISC) + { + list = await query.ProjectTo(_mapper.ConfigurationProvider, + new + { + readingExportType = inQuery.ReadingExportType, + criterionType = criterion.CriterionType, + arbitrationRule = criterion.ArbitrationRule, + trialReadingCriterionId = inQuery.TrialReadingCriterionId, + isEn_Us = _userInfo.IsEn_Us + }).ToListAsync(); + } #endregion diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index efb07078d..068134e74 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -1269,20 +1269,34 @@ namespace IRaCIS.Core.Application.Contracts public class CommonLessionQuestionAnswerInfo { + #region 肿瘤评估标准的时候需要 public string LessionCode { get; set; } public string LessionType { get; set; } - - public QuestionMark? QuestionMark { get; set; } + #endregion + + + #region CDISC导出 + + public string CDISCCode { get; set; } + + #endregion + + + #region 自定义表格名 特殊处理 + + public string TableQuestionName { get; set; } + #endregion + + public string QuestionName { get; set; } public string QuestionValue { get; set; } public string TranslateDicName { get; set; } - public string CDISCCode { get; set; } } diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 42104e360..a7710e2d3 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -266,7 +266,7 @@ namespace IRaCIS.Core.Application.Service u.Subject.ReadModuleList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading).Select(c => c.SubjectVisit.VisitNum))) .ForMember(o => o.ResearchProgramNo, t => t.MapFrom(u => u.Trial.ResearchProgramNo)) - .ForMember(o => o.VisitName, t => t.MapFrom(u => u.SourceSubjectVisit.VisitName)) + .ForMember(o => o.VisitName, t => t.MapFrom(u => u.SourceSubjectVisit.VisitName)) .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode)) .ForMember(o => o.LatestScanDate, t => t.MapFrom(u => u.SourceSubjectVisit.LatestScanDate)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code)) @@ -286,7 +286,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() .IncludeBase() - .ForMember(o => o.LesionList, t => t.MapFrom(u => u.LesionList.Where(c => c.ReadingQuestionTrial.ExportResultStr.Contains(((int)readingExportType).ToString())))); + .ForMember(o => o.LesionList, t => t.MapFrom(u => u.LesionList/*.Where(c => c.ReadingQuestionTrial.ExportResultStr.Contains(((int)readingExportType).ToString()))*/ )); CreateMap() .ForMember(o => o.LessionCode, t => t.MapFrom(u => u.RowMark)) @@ -299,7 +299,8 @@ namespace IRaCIS.Core.Application.Service .ForMember(o => o.QuestionMark, t => t.MapFrom(u => u.ReadingTableQuestionTrial.QuestionMark)) .ForMember(o => o.QuestionName, t => t.MapFrom(u => isEn_Us ? u.ReadingTableQuestionTrial.QuestionEnName : u.ReadingTableQuestionTrial.QuestionName)) .ForMember(o => o.QuestionValue, t => t.MapFrom(u => u.Answer)) - .ForMember(o => o.CDISCCode, t => t.MapFrom(u => u.ReadingTableQuestionTrial.CDISCCode)) + .ForMember(o => o.CDISCCode, t => t.MapFrom(u => u.ReadingTableQuestionTrial.CDISCCode)) + .ForMember(o => o.TableQuestionName, t => t.MapFrom(u => isEn_Us ? u.ReadingQuestionTrial.QuestionEnName : u.ReadingQuestionTrial.QuestionName)) .ForMember(o => o.TranslateDicName, t => t.MapFrom(u => u.ReadingTableQuestionTrial.DictionaryCode)) ;