修改CDISC 多表导出
parent
4dfa1e9812
commit
74230da400
|
@ -243,6 +243,7 @@ public static class ExcelExportHelper
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class DynamicColumnConfig
|
public class DynamicColumnConfig
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -2900,6 +2900,9 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||||
ShowOrder = t.ShowOrder
|
ShowOrder = t.ShowOrder
|
||||||
}).OrderBy(t => t.TableName).ThenBy(t => t.ShowOrder).ToList();
|
}).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()
|
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();
|
var translateDicNameList = trialConfigQuestionList.Union(trialConfigTableQuestionList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(t => t.TranslateDicName).Distinct().ToList();
|
||||||
|
|
||||||
#region 表格问题处理 问题名称是 表格名称_表格子问题名
|
//单表格问题(直接用表格问题名称) 或者没有表格问题
|
||||||
|
if (isMutiTable == false)
|
||||||
var isMutiTable = trialConfigTableQuestionList.Select(t => t.TableName).Distinct().Count() > 1;
|
|
||||||
|
|
||||||
//多表格问题
|
|
||||||
if (isMutiTable)
|
|
||||||
{
|
{
|
||||||
//多表格,增加的一列,就用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();
|
var tableNameList = trialConfigTableQuestionList.Select(t => new DynamicColumnConfig.ColumItem() { Id = t.QuestionId, Name = t.QuestionName, CDISCCode = t.CDISCCode }).ToList();
|
||||||
|
|
||||||
configCoumNameList = fistLeveLNameList.Union(tableNameList).ToList();
|
configCoumNameList = fistLeveLNameList.Union(tableNameList).ToList();
|
||||||
}
|
|
||||||
|
|
||||||
|
//最终的病灶列表 要把裁判的也要加进去,需要处理裁判标记
|
||||||
|
foreach (var item in taskList.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum))
|
||||||
|
|
||||||
#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 lession in item.LesionList.OrderBy(t => t.LessionType).ThenBy(t => t.LessionCode))
|
//有病灶,并且至少配置了一个病灶问题
|
||||||
|
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)
|
|
||||||
{
|
{
|
||||||
var firstLessionAnser = lession.LessionAnswerList.FirstOrDefault();
|
//病灶配置了问题 才进行导出
|
||||||
|
if (lession.LessionAnswerList.Count > 0)
|
||||||
var dynamicLessionInfoList = new List<CommonQuesionInfo>();
|
|
||||||
|
|
||||||
if (isMutiTable)
|
|
||||||
{
|
{
|
||||||
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 });
|
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();
|
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()
|
dynamicColumnConfig = new DynamicColumnConfig()
|
||||||
{
|
{
|
||||||
AutoColumnTitleRowIndex = 1,
|
AutoColumnTitleRowIndex = 1,
|
||||||
AutoColumnStartIndex = 6,
|
AutoColumnStartIndex = 6,
|
||||||
TempalteLastColumnIndex = 10,
|
TempalteLastColumnIndex = 15,
|
||||||
DynamicItemDicName = "TranslateDicName",
|
DynamicItemDicName = "TranslateDicName",
|
||||||
DynamicItemValueName = "QuestionValue",
|
DynamicItemValueName = "QuestionValue",
|
||||||
DynamicItemTitleName = "QuestionName",
|
DynamicItemTitleName = "QuestionName",
|
||||||
|
|
|
@ -31,5 +31,7 @@ namespace IRaCIS.Application.Interfaces
|
||||||
|
|
||||||
Task<Dictionary<string, List<BasicDicSelectCopy>>> GetBasicDataSelect(string[] searchArray);
|
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; }
|
public DateTime? SignTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 肿瘤学结果
|
#region 肿瘤学结果
|
||||||
|
@ -1322,6 +1323,23 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public string OncologyUserName { get; set; }
|
public string OncologyUserName { get; set; }
|
||||||
|
|
||||||
#endregion
|
#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
|
public class CommonLessionExport : CommonEvaluationExport
|
||||||
|
@ -1356,6 +1374,17 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public string CDISCCode { get; set; }
|
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
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -299,8 +299,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
CreateMap<ReadingTableQuestionAnswer, CommonLessionQuestionAnswerInfo>()
|
CreateMap<ReadingTableQuestionAnswer, CommonLessionQuestionAnswerInfo>()
|
||||||
//.ForMember(o => o.LessionCode, t => t.MapFrom(u => u.Lesion.RowMark))
|
//.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.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.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.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.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))
|
||||||
|
|
|
@ -284,7 +284,9 @@ public static class StaticData
|
||||||
public const string OCT_ReadingLession_Export = "OCT_ReadingLession_Export";
|
public const string OCT_ReadingLession_Export = "OCT_ReadingLession_Export";
|
||||||
|
|
||||||
public const string CDISC_Reading_Export = "CDISC_Reading_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";
|
public const string IVUSTheMeasuredValueOfEachMatchedFragment = "IVUS_TheMeasuredValueOfEachMatchedFragment";
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue