修改CDISC 多表导出
parent
4dfa1e9812
commit
74230da400
|
@ -243,6 +243,7 @@ public static class ExcelExportHelper
|
|||
|
||||
}
|
||||
|
||||
|
||||
public class DynamicColumnConfig
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
@ -2900,6 +2900,9 @@ namespace IRaCIS.Core.Application.Service.Common
|
|||
ShowOrder = t.ShowOrder
|
||||
}).OrderBy(t => t.TableName).ThenBy(t => t.ShowOrder).ToList();
|
||||
|
||||
var isMutiTable = trialConfigTableQuestionList.Select(t => t.TableName).Distinct().Count() > 1;
|
||||
|
||||
|
||||
//外层问题处理
|
||||
var fistLeveLNameList = trialConfigQuestionList.Select(t => new DynamicColumnConfig.ColumItem()
|
||||
{
|
||||
|
@ -2910,96 +2913,128 @@ namespace IRaCIS.Core.Application.Service.Common
|
|||
|
||||
var translateDicNameList = trialConfigQuestionList.Union(trialConfigTableQuestionList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(t => t.TranslateDicName).Distinct().ToList();
|
||||
|
||||
#region 表格问题处理 问题名称是 表格名称_表格子问题名
|
||||
|
||||
var isMutiTable = trialConfigTableQuestionList.Select(t => t.TableName).Distinct().Count() > 1;
|
||||
|
||||
//多表格问题
|
||||
if (isMutiTable)
|
||||
//单表格问题(直接用表格问题名称) 或者没有表格问题
|
||||
if (isMutiTable == false)
|
||||
{
|
||||
//多表格,增加的一列,就用Guid.Empty 标识
|
||||
//var extralNameList = new List<DynamicColumnConfig.ColumItem>() { new DynamicColumnConfig.ColumItem() { Id = Guid.Empty, Name = _userInfo.IsEn_Us ? "Table Name" : "表格名称" } };
|
||||
|
||||
var tableQuestionNameList = trialConfigTableQuestionList.Select(t => new DynamicColumnConfig.ColumItem() { Id = t.QuestionId, Name = t.TableName + "_" + t.QuestionName, CDISCCode = t.CDISCCode }).ToList();
|
||||
|
||||
configCoumNameList = fistLeveLNameList/*.Union(extralNameList)*/.Union(tableQuestionNameList).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
//单表格问题(直接用表格问题名称) 或者没有表格问题
|
||||
|
||||
//一个表格,或者没有表格
|
||||
var tableNameList = trialConfigTableQuestionList.Select(t => new DynamicColumnConfig.ColumItem() { Id = t.QuestionId, Name = t.QuestionName, CDISCCode = t.CDISCCode }).ToList();
|
||||
|
||||
configCoumNameList = fistLeveLNameList.Union(tableNameList).ToList();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#region 扩展表格问题
|
||||
|
||||
|
||||
//最终的病灶列表 要把裁判的也要加进去,需要处理裁判标记
|
||||
foreach (var item in taskList.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum))
|
||||
{
|
||||
//有病灶,并且至少配置了一个病灶问题
|
||||
if (item.LesionList.Count > 0 && item.LesionList.SelectMany(t => t.LessionAnswerList).Any())
|
||||
//最终的病灶列表 要把裁判的也要加进去,需要处理裁判标记
|
||||
foreach (var item in taskList.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum))
|
||||
{
|
||||
foreach (var lession in item.LesionList.OrderBy(t => t.LessionType).ThenBy(t => t.LessionCode))
|
||||
//有病灶,并且至少配置了一个病灶问题
|
||||
if (item.LesionList.Count > 0 && item.LesionList.SelectMany(t => t.LessionAnswerList).Any())
|
||||
{
|
||||
//病灶配置了问题 才进行导出
|
||||
if (lession.LessionAnswerList.Count > 0)
|
||||
foreach (var lession in item.LesionList.OrderBy(t => t.LessionType).ThenBy(t => t.LessionCode))
|
||||
{
|
||||
var firstLessionAnser = lession.LessionAnswerList.FirstOrDefault();
|
||||
|
||||
var dynamicLessionInfoList = new List<CommonQuesionInfo>();
|
||||
|
||||
if (isMutiTable)
|
||||
//病灶配置了问题 才进行导出
|
||||
if (lession.LessionAnswerList.Count > 0)
|
||||
{
|
||||
var addLessionInfoList = new List<CommonQuesionInfo>();
|
||||
|
||||
//addLessionInfoList.Add(new CommonQuesionInfo() { QuestionId = Guid.Empty, QuestionName = _userInfo.IsEn_Us ? "Table Name" : "表格名称", QuestionValue = firstLessionAnser.TableName });
|
||||
var dynamicLessionInfoList = new List<CommonQuesionInfo>();
|
||||
|
||||
var dynamicPartialLessionInfoList = lession.LessionAnswerList.Select(t => new CommonQuesionInfo() { QuestionId = t.TableQuesionId, QuestionName = t.TableName + "_" + t.QuestionName, QuestionValue = t.QuestionValue, TranslateDicName = t.TranslateDicName, CDISCCode = t.CDISCCode });
|
||||
|
||||
//有三部分组成 外层问题+ 固定列表格名称 + 动态的表格问题
|
||||
dynamicLessionInfoList = item.QuestionAnswerList.Union(addLessionInfoList).Union(dynamicPartialLessionInfoList).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
var dynamicPartialLessionInfoList = lession.LessionAnswerList.Select(t => new CommonQuesionInfo() { QuestionId = t.TableQuesionId, QuestionName = t.QuestionName, QuestionValue = t.QuestionValue, TranslateDicName = t.TranslateDicName, CDISCCode = t.CDISCCode });
|
||||
|
||||
//两部分组成 外层问题+ 动态的表格问题
|
||||
dynamicLessionInfoList = item.QuestionAnswerList.Union(dynamicPartialLessionInfoList).ToList();
|
||||
|
||||
var cloneItem = item.Clone();
|
||||
cloneItem.QuestionAnswerList = dynamicLessionInfoList;
|
||||
list.Add(cloneItem);
|
||||
}
|
||||
|
||||
|
||||
|
||||
var cloneItem = item.Clone();
|
||||
cloneItem.QuestionAnswerList = dynamicLessionInfoList;
|
||||
list.Add(cloneItem);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//要把裁判任务加进去 裁判任务上没有病灶
|
||||
else
|
||||
{
|
||||
//要把裁判任务加进去 裁判任务上没有病灶
|
||||
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
list.Add(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//多表格问题,需要用新的模板,并且用行的方式展示 (不是之前表格名称_表格子问题名的方式)
|
||||
|
||||
export_Template = StaticData.Export.CDISC_MutiTable_Reading_Export;
|
||||
|
||||
configCoumNameList = fistLeveLNameList.ToList();
|
||||
|
||||
var translateUnitList = await _dictionaryService.GetBasicDataSelect("ValueUnit");
|
||||
|
||||
|
||||
foreach (var item in taskList.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum))
|
||||
{
|
||||
//有病灶,并且至少配置了一个病灶问题
|
||||
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))
|
||||
{
|
||||
//病灶配置了问题 才进行导出
|
||||
if (lession.LessionAnswerList.Count > 0)
|
||||
{
|
||||
|
||||
//遍历病灶的每个问题
|
||||
foreach (var lessionItem in lession.LessionAnswerList)
|
||||
{
|
||||
|
||||
var cloneItem = item.Clone();
|
||||
|
||||
|
||||
string unitText = lessionItem.Unit switch
|
||||
{
|
||||
ValueUnit.Custom => lessionItem.CustomUnit,
|
||||
null => "",
|
||||
_ => _userInfo.IsEn_Us ? translateUnitList.FirstOrDefault(t => t.Code == ((int)lessionItem.Unit).ToString())?.Value ?? ""
|
||||
: translateUnitList.FirstOrDefault(t => t.Code == ((int)lessionItem.Unit).ToString())?.ValueCN ?? ""
|
||||
};
|
||||
|
||||
|
||||
cloneItem.Group = lessionItem.TableName;
|
||||
cloneItem.TRLINKID = lessionItem.RowId.ToString();
|
||||
cloneItem.TRORRES = lessionItem.CDISCCode;
|
||||
cloneItem.TRTEST = lessionItem.QuestionValue;
|
||||
cloneItem.TRORRESU = unitText;
|
||||
|
||||
|
||||
list.Add(cloneItem);
|
||||
}
|
||||
|
||||
//var dynamicLessionInfoList = new List<CommonQuesionInfo>();
|
||||
|
||||
//var dynamicPartialLessionInfoList = lession.LessionAnswerList.Select(t => new CommonQuesionInfo() { QuestionId = t.TableQuesionId, QuestionName = t.QuestionName, QuestionValue = t.QuestionValue, TranslateDicName = t.TranslateDicName, CDISCCode = t.CDISCCode });
|
||||
|
||||
////两部分组成 外层问题+ 动态的表格问题
|
||||
//dynamicLessionInfoList = item.QuestionAnswerList.Union(dynamicPartialLessionInfoList).ToList();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//要把裁判任务加进去 裁判任务上没有病灶
|
||||
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
dynamicColumnConfig = new DynamicColumnConfig()
|
||||
{
|
||||
AutoColumnTitleRowIndex = 1,
|
||||
AutoColumnStartIndex = 6,
|
||||
TempalteLastColumnIndex = 10,
|
||||
TempalteLastColumnIndex = 15,
|
||||
DynamicItemDicName = "TranslateDicName",
|
||||
DynamicItemValueName = "QuestionValue",
|
||||
DynamicItemTitleName = "QuestionName",
|
||||
|
|
|
@ -31,5 +31,7 @@ namespace IRaCIS.Application.Interfaces
|
|||
|
||||
Task<Dictionary<string, List<BasicDicSelectCopy>>> GetBasicDataSelect(string[] searchArray);
|
||||
|
||||
Task<List<BasicDicSelect>> GetBasicDataSelect(string searchKey);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1310,6 +1310,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
//阅片完成时间
|
||||
public DateTime? SignTime { get; set; }
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region 肿瘤学结果
|
||||
|
@ -1322,6 +1323,23 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public string OncologyUserName { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region CDISC 固定字段
|
||||
//组
|
||||
public string Group { get; set; }
|
||||
|
||||
//行标识
|
||||
public string TRLINKID { get; set; }
|
||||
|
||||
//列名
|
||||
public string TRTEST { get; set; }
|
||||
|
||||
//值
|
||||
public string TRORRES { get; set; }
|
||||
|
||||
//单位
|
||||
public string TRORRESU { get; set; }
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class CommonLessionExport : CommonEvaluationExport
|
||||
|
@ -1356,6 +1374,17 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
public string CDISCCode { get; set; }
|
||||
|
||||
|
||||
//病灶Id
|
||||
public Guid RowId { get; set; }
|
||||
|
||||
//如果是4 就取CustomUnit 否则就是字典翻译
|
||||
[Comment("单位")]
|
||||
public ValueUnit? Unit { get; set; }
|
||||
|
||||
[Comment("自定义单位")]
|
||||
public string CustomUnit { get; set; } = string.Empty;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
|
|
@ -299,8 +299,11 @@ namespace IRaCIS.Core.Application.Service
|
|||
CreateMap<ReadingTableQuestionAnswer, CommonLessionQuestionAnswerInfo>()
|
||||
//.ForMember(o => o.LessionCode, t => t.MapFrom(u => u.Lesion.RowMark))
|
||||
//.ForMember(o => o.LessionType, t => t.MapFrom(u => (int?)u.ReadingQuestionTrial.LesionType))
|
||||
|
||||
.ForMember(o => o.CustomUnit, t => t.MapFrom(u => u.ReadingTableQuestionTrial.CustomUnit))
|
||||
.ForMember(o => o.Unit, t => t.MapFrom(u => u.ReadingTableQuestionTrial.Unit))
|
||||
.ForMember(o => o.TableQuesionId, t => t.MapFrom(u => u.ReadingTableQuestionTrial.Id))
|
||||
.ForMember(o => o.QuestionMark, t => t.MapFrom(u => u.ReadingTableQuestionTrial.QuestionMark))
|
||||
.ForMember(o => o.TableQuesionId, t => t.MapFrom(u => u.ReadingTableQuestionTrial.Id))
|
||||
.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))
|
||||
|
|
|
@ -284,6 +284,8 @@ public static class StaticData
|
|||
public const string OCT_ReadingLession_Export = "OCT_ReadingLession_Export";
|
||||
|
||||
public const string CDISC_Reading_Export = "CDISC_Reading_Export";
|
||||
public const string CDISC_MutiTable_Reading_Export = "CDISC_MutiTable_Reading_Export";
|
||||
|
||||
|
||||
|
||||
public const string IVUSTheMeasuredValueOfEachMatchedFragment = "IVUS_TheMeasuredValueOfEachMatchedFragment";
|
||||
|
|
Loading…
Reference in New Issue