diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 45bc1bd04..bf7fece1d 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -803,16 +803,6 @@
-
-
- 评估病灶明细表 (目前仅仅 RECIST1.1 RECIST1.1 PGW3 表都是不同的)
-
-
-
-
-
-
-
获取阅片标准可以导出的列表
@@ -14869,6 +14859,21 @@
组件一致性和原Arm2是否有差异
+
+
+ 自身一致性分析任务上会有这个值
+
+
+
+
+ 组件一致性和原Arm1是否有差异
+
+
+
+
+ 组件一致性和原Arm2是否有差异
+
+
最终导出的病灶信息
diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
index 2b8188b01..232f08837 100644
--- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
+++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
@@ -1572,8 +1572,10 @@ namespace IRaCIS.Core.Application.Service.Common
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialGroupAnalysisList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(GroupAnalysisExport));
+
}
+ #region 导表公用
public class ExportDocumentDes
{
@@ -1727,10 +1729,15 @@ namespace IRaCIS.Core.Application.Service.Common
return resultExceptJudgeList;
}
+ #endregion
+
+
+ #endregion
+
+ #region 通用阅片结果导出
- #region 历史单独导出废弃
///
- /// 评估病灶明细表 (目前仅仅 RECIST1.1 RECIST1.1 PGW3 表都是不同的)
+ /// 一致性分析结果导出 9 10 分别是自身 和组件一致性
///
///
///
@@ -1738,131 +1745,225 @@ namespace IRaCIS.Core.Application.Service.Common
///
///
[HttpPost]
- public async Task GetDetailedOfEvaluatedLesion_Export(VisitTaskQuery inQuery,
- [FromServices] IRepository _commonDocumentRepository,
- [FromServices] IDictionaryService _dictionaryService,
- [FromServices] IRepository _trialRepository)
+ public async Task GetAnalysisTaskList_Export(VisitTaskQuery inQuery,
+ [FromServices] IRepository _commonDocumentRepository,
+ [FromServices] IDictionaryService _dictionaryService,
+ [FromServices] IRepository _trialRepository)
{
-
//每次查询必须是单标准的
- var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstOrDefaultAsync();
+ var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync();
- var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned)
+ var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
+
+ //自身一致性分析
+ .WhereIf(inQuery.ReadingExportType == ExportResult.SelfAnalysis, t => t.IsSelfAnalysis == true || t.IsSelfAnalysis == null)
+ .WhereIf(inQuery.ReadingExportType == ExportResult.GroupAnalysis, t => t.IsSelfAnalysis == false || t.IsSelfAnalysis == null)
+
+ //访视和全局查询已签名完成的,裁判可以是未签名,未完成的
+ .Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)) || t.ReadingCategory == ReadingCategory.Judge)
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.WhereIf(inQuery.IsUrgent != null, t => t.IsUrgent == inQuery.IsUrgent)
.WhereIf(inQuery.DoctorUserId != null, t => t.DoctorUserId == inQuery.DoctorUserId)
.WhereIf(inQuery.ReadingCategory != null, t => t.ReadingCategory == inQuery.ReadingCategory)
- .WhereIf(inQuery.ReadingTaskState != null, t => t.ReadingTaskState == inQuery.ReadingTaskState)
+ //.WhereIf(inQuery.ReadingTaskState != null, t => t.ReadingTaskState == inQuery.ReadingTaskState)
.WhereIf(inQuery.TaskAllocationState != null, t => t.TaskAllocationState == inQuery.TaskAllocationState)
.WhereIf(inQuery.ArmEnum != null, t => t.ArmEnum == inQuery.ArmEnum)
.WhereIf(!string.IsNullOrEmpty(inQuery.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(inQuery.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode!) && t.IsAnalysisCreate == false))
.WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.TaskName.Contains(inQuery.TaskName) || t.TaskBlindName.Contains(inQuery.TaskName))
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.Subject.Code.Contains(inQuery.SubjectCode))
.WhereIf(inQuery.BeginAllocateDate != null, t => t.AllocateTime > inQuery.BeginAllocateDate)
- .WhereIf(inQuery.EndAllocateDate != null, t => t.AllocateTime < inQuery.EndAllocateDate!.Value.AddDays(1));
+ .WhereIf(inQuery.EndAllocateDate != null, t => t.AllocateTime < inQuery.EndAllocateDate);
+
+ var list = await query.ProjectTo(_mapper.ConfigurationProvider,
+ new
+ {
+ readingExportType = inQuery.ReadingExportType,
+ criterionType = criterion.CriterionType,
+ trialReadingCriterionId = inQuery.TrialReadingCriterionId,
+ isEn_Us = _userInfo.IsEn_Us
+ }).ToListAsync();
+
+ list = list.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum).ToList();
+
var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
exportInfo.CriterionName = criterion.CriterionName;
- if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB)
+ #region 处理系统标准存在疾病和整体肿瘤合并
+
+ //如果是以合并后的找翻译字典,会少,所以必须放在前面
+ var translateDicNameList = list.SelectMany(t => t.QuestionAnswerList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(t => t.TranslateDicName).Distinct().ToList();
+
+ //针对1.1 整体肿瘤评估 有的两列要合并一列
+ if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB || criterion.CriterionType == CriterionType.IRECIST1Point1)
{
- var list = await query.ProjectTo(_mapper.ConfigurationProvider, new { criterionType = criterion.CriterionType, arbitrationRule = criterion.ArbitrationRule, trialReadingCriterionId = inQuery.TrialReadingCriterionId, isEn_Us = _userInfo.IsEn_Us }).ToListAsync();
-
- list = list.OrderBy(t => t.SubjectCode).ThenBy(t => t.ArmEnum).ThenBy(t => t.VisitTaskNum).ToList();
-
- var exportList = list.SelectMany(c =>
+ foreach (var item in list)
{
+ //处理合并表头
- return c.LesionList.Select(u =>
+ var questionType = item.IsBaseline == true ? QuestionType.ExistDisease : QuestionType.Tumor;
+
+ var findItem = item.QuestionAnswerList.Where(t => t.QuestionType == questionType).FirstOrDefault();
+
+ if (findItem != null)
{
- var clone = c.Clone();
- clone.LessionCode = u.LessionCode;
- clone.LessionType = u.LessionType;
- clone.BeforeTranslateLessionTypeValue = u.LessionType;
-
- clone.IsLymph = u.IsLymph;
-
- clone.LessionLocation = u.LessionLocation;
- clone.LessionOrgan = u.LessionOrgan;
- clone.BodyPartDescription = u.BodyPartDescription;
-
- //clone.MeasurementResult = u.MeasurementResult;
- clone.LongDiameter = u.LongDiameter;
- clone.ShortDiameter = u.ShortDiameter;
- clone.LessionState = u.LessionState;
-
- return clone;
- });
- }).ToList();
-
- //处理裁判标记
- //list = DealJudgeMark(criterion.ArbitrationRule, list);
- exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(exportList, _userInfo.TimeZoneId);
- exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
+ findItem.QuestionName = _userInfo.IsEn_Us ? "Overall Response" : "整体肿瘤评估";
+ }
- return await ExcelExportHelper.DataExportAsync(StaticData.Export.RECIST1Point1DetailedOfEvaluatedLesion_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1DetailedOfEvaluatedLesionExport), criterion.CriterionType);
+ if (item.IsBaseline == true)
+ {
+ item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.Tumor).ToList();
+ }
+ else
+ {
+ item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.ExistDisease).ToList();
+ }
+ }
+ }
+ else if (criterion.CriterionType == CriterionType.Lugano2014 || criterion.CriterionType == CriterionType.Lugano2014WithoutPET)
+ {
+ foreach (var item in list)
+ {
+ //处理合并表头
+ var questionType = item.IsBaseline == true ? QuestionType.ExistDisease : QuestionType.ImgOncology;
+
+ var findItem = item.QuestionAnswerList.Where(t => t.QuestionType == questionType).FirstOrDefault();
+
+ if (findItem != null)
+ {
+ findItem.QuestionName = _userInfo.IsEn_Us ? "Overall Response" : "整体肿瘤评估";
+ }
+
+ if (item.IsBaseline == true)
+ {
+ item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.ImgOncology).ToList();
+ }
+ else
+ {
+ item.QuestionAnswerList = item.QuestionAnswerList.Where(t => t.QuestionType != QuestionType.ExistDisease).ToList();
+ }
+ }
}
else if (criterion.CriterionType == CriterionType.PCWG3)
{
- var list = await query.ProjectTo(_mapper.ConfigurationProvider, new { criterionType = criterion.CriterionType, arbitrationRule = criterion.ArbitrationRule, trialReadingCriterionId = inQuery.TrialReadingCriterionId, isEn_Us = _userInfo.IsEn_Us }).ToListAsync();
-
-
- var exportList = list.SelectMany(c =>
- {
-
- return c.LesionList.Select(u =>
- {
- var clone = c.Clone();
- clone.LessionCode = u.LessionCode;
- clone.LessionType = u.LessionType;
-
- clone.LessionOrgan = u.LessionOrgan;
- clone.LessionLocation = u.LessionLocation;
- clone.BodyPartDescription = u.BodyPartDescription;
-
- clone.LessionState = u.LessionState;
-
- return clone;
- });
- }).ToList();
-
- //处理裁判标记
- //list = DealJudgeMark(criterion.ArbitrationRule, list);
-
- exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(exportList, _userInfo.TimeZoneId); ;
- exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
-
-
- return await ExcelExportHelper.DataExportAsync(StaticData.Export.PCWG3Point1DetailedOfEvaluatedLesion_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PCWG3DetailedOfEvaluatedLesionExport), criterion.CriterionType);
}
+ #endregion
+
+ var export_Template = StaticData.Export.TrialSelfAnalysisList_Export;
+
+ if (inQuery.ReadingExportType == ExportResult.SelfAnalysis)
+ {
+ //找到非一致性分析的任务
+ var selfExportList = list.Where(t => t.IsSelfAnalysis == null).ToList();
+
+ //处理一致性分析结果是否和原始阅片是否一致
+ foreach (var item in selfExportList)
+ {
+ //找到一致性分析的结果
+ var selfAnalysisTask = list.Where(t => t.IsSelfAnalysis == true && t.SubjectCode == item.SubjectCode && t.VisitTaskNum == item.VisitTaskNum && t.TaskName == t.TaskName && t.UserName == item.UserName).FirstOrDefault();
+
+ //将自身一致性分析的字段 赋值到访视任务这个字段
+ item.IsAnalysisDiffToOriginalData = selfAnalysisTask?.IsAnalysisDiffToOriginalData;
+
+ //处理再次阅片人的结果
+ if (selfAnalysisTask != null)
+ {
+ foreach (var qItem in selfAnalysisTask.QuestionAnswerList)
+ {
+ qItem.QuestionName = qItem.QuestionName + $"{(_userInfo.IsEn_Us ? "(Again)" : "再次")}";
+ }
+
+ item.QuestionAnswerList = item.QuestionAnswerList.Union(selfAnalysisTask?.QuestionAnswerList).ToList();
+ }
+ }
+
+ list = selfExportList;
+ }
else
{
- //---当前标准导出还未支持
- throw new Exception(_localizer["ExcelExport_UnsupportedExport"]);
+ export_Template = StaticData.Export.TrialGroupAnalysisList_Export;
+
+ var newList = new List();
+
+ foreach (var group in list.GroupBy(t => new { t.SubjectCode, t.VisitTaskNum, t.TaskName }).OrderBy(g => g.Key.SubjectCode).ThenBy(g => g.Key.VisitTaskNum))
+ {
+ var subjectVisitGroupList = group.ToList();
+
+
+ //找到当前访视组间一致性分析的任务结果
+
+ var groupOtherTaskList = subjectVisitGroupList.Where(t => t.IsSelfAnalysis == false).ToList();
+
+ foreach (var subjectVisitTaskArm in subjectVisitGroupList.Where(t => t.IsSelfAnalysis == null).OrderBy(t => t.ArmEnum))
+ {
+ foreach (var otherTask in groupOtherTaskList)
+ {
+ //非一致性分析任务
+ var cloneObj = subjectVisitTaskArm.Clone();
+
+
+ foreach (var qItem in otherTask.QuestionAnswerList)
+ {
+ qItem.QuestionName = qItem.QuestionName + $"{(_userInfo.IsEn_Us ? "(Again)" : "(再次)")}";
+ }
+
+ //处理 再次阅片人,再次阅片人角色 两列
+ var addQuestionList = new List();
+
+ addQuestionList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Reviwer(Again)" : "阅片人(再次)", QuestionValue = otherTask.UserName });
+ addQuestionList.Add(new CommonQuesionInfo() { QuestionName = _userInfo.IsEn_Us ? "Reviwer Role(Again)" : "阅片人角色(再次)", QuestionValue = ((int)otherTask.ArmEnum).ToString(), TranslateDicName = "ArmEnum" });
+
+
+ cloneObj.QuestionAnswerList = cloneObj.QuestionAnswerList.Union(otherTask.QuestionAnswerList).ToList();
+
+
+ cloneObj.IsGroupAnalysisDiffToOriginalData = cloneObj.ArmEnum == Arm.DoubleReadingArm1 ? otherTask.IsGroupDiffArm1 : otherTask.IsGroupDiffArm2;
+
+ newList.Add(cloneObj);
+ }
+ }
+ }
+
+ list = newList;
+
}
+ var columNameList = list.SelectMany(t => t.QuestionAnswerList).Where(t => t.QuestionName.IsNotNullOrEmpty()).Select(t => t.QuestionName).Distinct().ToList();
+
+ exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
+ exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
+
+ var dynamicColumnConfig = new DynamicColumnConfig()
+ {
+ AutoColumnTitleRowIndex = 2,
+ AutoColumnStartIndex = 5,
+ TempalteLastColumnIndex = 4,
+ DynamicItemDicName = "TranslateDicName",
+ DynamicItemValueName = "QuestionValue",
+ DynamicItemTitleName = "QuestionName",
+ DynamicListName = "QuestionAnswerList",
+ RemoveColunmIndexList = new List() { },
+ ColumnNameList = columNameList ?? new List(),
+ TranslateDicNameList = translateDicNameList ?? new List()
+ };
+
+
+ var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(export_Template, exportInfo, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CommonEvaluationExport), criterion.CriterionType, dynamicColumnConfig);
+
+ return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+ {
+ FileDownloadName = $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}_{fileName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx"
+ };
}
- #endregion
-
-
-
-
-
-
-
-
- #endregion
-
- #region 通用阅片结果导出
///
@@ -2009,6 +2110,7 @@ namespace IRaCIS.Core.Application.Service.Common
export_Template = StaticData.Export.ReadingLession_Export;
}
+ //病灶明细表 需要单独处理
if (inQuery.ReadingExportType != ExportResult.DetailedTableOfLesions)
{
list = await query.ProjectTo(_mapper.ConfigurationProvider,
@@ -2023,6 +2125,7 @@ namespace IRaCIS.Core.Application.Service.Common
}
else
{
+ //其他可以统一处理
var taskList = await query.ProjectTo(_mapper.ConfigurationProvider,
new
{
@@ -2091,7 +2194,7 @@ namespace IRaCIS.Core.Application.Service.Common
var dynamicPartialLessionInfoList = lession.LessionAnswerList.Select(t => new CommonQuesionInfo() { QuestionName = t.QuestionName, QuestionValue = t.QuestionValue, TranslateDicName = t.TranslateDicName });
- //有三部分组成 外层问题+ 没有配置的编号和类型+ 动态的表格问题
+ //有三部分组成 外层问题+ 没有配置病灶编号和类型+ 动态的表格问题
var dynamicLessionInfoList = addLessionInfoList.Union(dynamicPartialLessionInfoList).Union(item.QuestionAnswerList).ToList();
var cloneItem = item.Clone();
@@ -2102,7 +2205,7 @@ namespace IRaCIS.Core.Application.Service.Common
}
else
{
- //要把裁判任务加进去
+ //要把裁判任务加进去 裁判任务上没有病灶
list.Add(item);
}
@@ -2354,7 +2457,7 @@ namespace IRaCIS.Core.Application.Service.Common
FullName = g.Key.FullName,
//触发裁判的阅片期的数量
- TotalJudgeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.SouceReadModuleId != null && t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState==ReadingTaskState.HaveSigned).Select(t => t.SouceReadModuleId).Distinct().Count(),
+ TotalJudgeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.SouceReadModuleId != null && t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).Select(t => t.SouceReadModuleId).Distinct().Count(),
JudgeAgreeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null && t.JudgeVisitTask.JudgeResultTaskId == t.Id)
.Select(t => t.SouceReadModuleId).Distinct().Count(),
diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
index cd297db15..5c387a97f 100644
--- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
+++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
@@ -995,6 +995,9 @@ namespace IRaCIS.Core.Application.Contracts
public string ImageSizeStr => (FileSize / Math.Pow(1024, 2)).ToString("F3") + 'M';
}
+
+
+
public class AnalysisExortCommon
{
public Guid Id { get; set; }
@@ -1062,6 +1065,68 @@ namespace IRaCIS.Core.Application.Contracts
}
+ public class AnalysisDynamicCommonExport
+ {
+ public Guid Id { get; set; }
+ public string TaskName { get; set; }
+ public string TaskBlindName { get; set; }
+
+ public decimal VisitTaskNum { get; set; }
+ public bool? IsSelfAnalysis { get; set; }
+
+ public string TrialReadingCriterionName { get; set; }
+
+ public CriterionType CriterionType { get; set; }
+
+ public String TrialSiteCode { get; set; } = String.Empty;
+ public string SubjectCode { get; set; } = String.Empty;
+
+ [DictionaryTranslateAttribute("ArmEnum")]
+ public Arm ArmEnum { get; set; }
+ public string UserName { get; set; }
+ public bool? IsBaseline { get; set; }
+
+
+ ///
+ /// 自身一致性分析任务上会有这个值
+ ///
+ [DictionaryTranslateAttribute("YesOrNo")]
+ public bool? IsAnalysisDiffToOriginalData { get; set; }
+
+
+ public List QuestionAnswerList { get; set; }
+
+ #region 组件一致性额外加的
+ public bool? IsGroupAnalysisDiffToOriginalData { get; set; }
+
+ ///
+ /// 组件一致性和原Arm1是否有差异
+ ///
+ public bool? IsGroupDiffArm1 { get; set; }
+
+ ///
+ /// 组件一致性和原Arm2是否有差异
+ ///
+ public bool? IsGroupDiffArm2 { get; set; }
+ #endregion
+ }
+
+
+ //public class GroupAnalysisDynamicCommonExport: AnalysisDynamicCommonExport
+ //{
+ // public bool? IsGroupAnalysisDiffToOriginalData { get; set; }
+
+ // ///
+ // /// 组件一致性和原Arm1是否有差异
+ // ///
+ // public bool? IsGroupDiffArm1 { get; set; }
+
+ // ///
+ // /// 组件一致性和原Arm2是否有差异
+ // ///
+ // public bool? IsGroupDiffArm2 { get; set; }
+
+ //}
public class DymamicQuestionInfo
{
public QuestionMark? QuestionMark { get; set; }
diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
index 3b61b3061..186f8fdf0 100644
--- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
@@ -227,6 +227,23 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName));
+ CreateMap()
+ .ForMember(o => o.IsBaseline, t => t.MapFrom(u => u.SourceSubjectVisit.IsBaseLine))
+ .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode))
+ .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code))
+ .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))
+ .ForMember(o => o.QuestionAnswerList, t => t.MapFrom(u => u.ReadingTaskQuestionAnswerList
+ .Where(c => c.ReadingQuestionTrial.ExportResultStr.Contains(((int)readingExportType).ToString()))
+ .OrderBy(k => k.ReadingQuestionTrial.ShowOrder)
+ .Select(c => new CommonQuesionInfo()
+ {
+ QuestionType = c.ReadingQuestionTrial.QuestionType,
+ QuestionName = isEn_Us ? c.ReadingQuestionTrial.QuestionEnName : c.ReadingQuestionTrial.QuestionName,
+ QuestionValue = c.IsGlobalChange ? c.GlobalChangeAnswer : c.Answer,
+ TranslateDicName = c.ReadingQuestionTrial.DictionaryCode
+ })))
+ ;
+
CreateMap()
diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
index 5625bfa4f..af24099b9 100644
--- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs
@@ -449,6 +449,10 @@ namespace IRaCIS.Core.Domain.Share
//阅片期一致率
ReadingPeriodJudgeRatio_Export = 8,
+ SelfAnalysis = 9,
+
+ GroupAnalysis = 10
+
}