diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index d6fee8e30..ff31f2f61 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -933,7 +933,7 @@
-
+
阅片结果表、阅片结果明细,评估病灶明细表, 裁判明细表导出,条件通过 ReadingExportType ( 1,2,3,4)区分
diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
index 51c7e4496..d0a7037ae 100644
--- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
+++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs
@@ -4,6 +4,7 @@ using IRaCIS.Application.Interfaces;
using IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Contracts.DTO;
+using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
@@ -1613,8 +1614,52 @@ namespace IRaCIS.Core.Application.Service.Common
}
+ public List DealOncologyResult(IRepository _oncologyRepository, bool isOncology, List list) where T : CommonEvaluationExport
+ {
+ if (isOncology)
+ {
+
+ var subjectIdList = list.Select(t => t.SubjectId).Distinct().ToList();
+
+ //已阅片完的肿瘤学结果
+ var oncologyResultList = _oncologyRepository.Where(t => subjectIdList.Contains(t.OncologyVisitTask.SubjectId)
+ && t.OncologyVisitTask.IsAnalysisCreate == false && t.OncologyVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.OncologyVisitTask.TaskState == TaskState.Effect)
+
+ .Select(t => new { t.OncologyVisitTask.SubjectId, OncologyVisitTaskNum = t.OncologyVisitTask.VisitTaskNum, OncologyUserName = t.OncologyVisitTask.DoctorUser.UserName, t.VisitTask.VisitTaskNum, t.VisitTaskId, t.EvaluationReason, t.EvaluationResult })
+ .ToList();
+
+ foreach (var subjectOncologyResult in oncologyResultList.GroupBy(t => t.SubjectId))
+ {
+ //最后已完成的肿瘤学任务号
+ var lastOncologyVisitTaskNum = subjectOncologyResult.OrderByDescending(t => t.OncologyVisitTaskNum).FirstOrDefault().OncologyVisitTaskNum;
+
+ //需要填充的肿瘤学结果
+ var subjectOncologyList = subjectOncologyResult.Where(t => t.OncologyVisitTaskNum == lastOncologyVisitTaskNum).ToList();
+ foreach (var subjectOncology in subjectOncologyList)
+ {
+
+ foreach (var item in list)
+ {
+ if (item.SubjectId == subjectOncology.SubjectId && item.VisitTaskNum == subjectOncology.VisitTaskNum)
+ {
+ item.OncologyReason = subjectOncology.EvaluationReason;
+ item.OncologyResult = subjectOncology.EvaluationResult;
+ item.OncologyUserName = subjectOncology.OncologyUserName;
+ }
+ }
+ }
+
+
+
+ }
+
+
+ }
+
+ return list;
+ }
public List DealJudgeMark(ArbitrationRule arbitrationRule, bool isGlobalReading, IEnumerable list) where T : CommonEvaluationExport
{
//处理访视任务的裁判标记
@@ -2172,12 +2217,13 @@ namespace IRaCIS.Core.Application.Service.Common
[FromServices] IDictionaryService _dictionaryService,
[FromServices] IRepository _trialReadingQuestionRepository,
[FromServices] IRepository _trialReadingTableQuestionRepository,
+ [FromServices] IRepository _oncologyRepository,
[FromServices] IRepository _trialRepository)
{
var trialId = inQuery.TrialId;
var trialReadingCriterionId = inQuery.TrialReadingCriterionId;
//每次查询必须是单标准的
- var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionGroup, t.IsGlobalReading, t.IsArbitrationReading, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync();
+ var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionGroup, t.IsGlobalReading, t.IsArbitrationReading, t.IsOncologyReading, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync();
var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
@@ -2218,6 +2264,16 @@ namespace IRaCIS.Core.Application.Service.Common
//仲裁阅片 才有裁判阅片明细表 同时要把模板里面的三列给去掉
removeColumnIndexList = new List() { 6, 7, 8 };
}
+
+ //阅片结果表 和阅片结果明细表 没有肿瘤学的时候需要移除肿瘤学三个字段
+
+ if (!criterion.IsOncologyReading)
+ {
+ if (inQuery.ReadingExportType == ExportResult.TableOfAssessmentResults || inQuery.ReadingExportType == ExportResult.DetailedTableOfAssessmentResults)
+ {
+ removeColumnIndexList = removeColumnIndexList.Union(new List() { 9, 10, 11 }).ToList();
+ }
+ }
}
var export_Template = StaticData.Export.CommonReading_Export;
@@ -2636,7 +2692,7 @@ namespace IRaCIS.Core.Application.Service.Common
addLessionInfoList.Add(new CommonQuesionInfo() { QuestionId = Guid.Empty, QuestionName = _userInfo.IsEn_Us ? "Table Name" : "表格名称", QuestionValue = firstLessionAnser.TableName });
- 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 });
+ 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();
@@ -2678,7 +2734,7 @@ namespace IRaCIS.Core.Application.Service.Common
{
AutoColumnTitleRowIndex = 2,
AutoColumnStartIndex = 6,
- TempalteLastColumnIndex = 8,
+ TempalteLastColumnIndex = 11,
DynamicItemDicName = "TranslateDicName",
DynamicItemValueName = "QuestionValue",
DynamicItemTitleName = "QuestionName",
@@ -2731,7 +2787,8 @@ namespace IRaCIS.Core.Application.Service.Common
#region 最终导出参数处理
- if (inQuery.ReadingExportType == ExportResult.DetailedTableOfAdjudicationResults)
+ //裁判阅片明细表
+ if (export_Template == StaticData.Export.CommonJudgeReadingDetail_Export)
{
//R1 R2 两个人的访视都阅片完成了才可以,去除只有一个人阅片完成的访视
//找到只有一个人阅片的受试者 和访视
@@ -2747,7 +2804,10 @@ namespace IRaCIS.Core.Application.Service.Common
//处理裁判标记
list = DealJudgeMark(criterion.ArbitrationRule, criterion.IsGlobalReading, list);
- //裁判阅片明细表
+ //处理肿瘤学结果
+ list = DealOncologyResult(_oncologyRepository, criterion.IsOncologyReading, list);
+
+ //裁判阅片明细表 处理完标记后处理
if (export_Template == StaticData.Export.CommonJudgeReadingDetail_Export)
{
//裁判产生标记为空的数据过滤掉
diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
index f8cabe2bc..6d1d5c761 100644
--- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
+++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
@@ -1216,6 +1216,8 @@ namespace IRaCIS.Core.Application.Contracts
public Guid Id { get; set; }
+ public Guid SubjectId { get; set; }
+
public Guid? DoctorUserId { get; set; }
public string TaskName { get; set; }
@@ -1270,6 +1272,17 @@ namespace IRaCIS.Core.Application.Contracts
public DateTime? SignTime { get; set; }
#endregion
+
+ #region 肿瘤学结果
+
+ [DictionaryTranslateAttribute("OncologyAssessType")]
+ public string OncologyResult { get; set; } = string.Empty;
+
+ public string OncologyReason { get; set; } = string.Empty;
+
+ public string OncologyUserName { get; set; }
+
+ #endregion
}
public class CommonLessionExport : CommonEvaluationExport