Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
d9e3b642a5
|
|
@ -121,7 +121,23 @@ public class TumorExportBaseModel : TU_TR_RSBaseModel
|
||||||
public string VisitNote { get; set; }
|
public string VisitNote { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 肿瘤学结果
|
||||||
|
|
||||||
|
|
||||||
|
public List<OncologyExportInfo> OncologyResultList { get; set; }
|
||||||
|
|
||||||
|
//public string OncologyUserName { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OncologyExportInfo
|
||||||
|
{
|
||||||
|
public decimal? VisitTaskNum { get; set; }
|
||||||
|
public string VisitName { get; set; }
|
||||||
|
public string OncologyResult { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string OncologyReason { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
|
var query = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
|
||||||
|
|
||||||
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
|
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
|
||||||
.Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)) || t.ReadingCategory == ReadingCategory.Judge)
|
.Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global || t.ReadingCategory == ReadingCategory.Oncology)) || t.ReadingCategory == ReadingCategory.Judge)
|
||||||
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||||
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
|
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
|
||||||
|
|
||||||
|
|
@ -335,7 +335,18 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
|
|
||||||
}).ToList(),
|
}).ToList(),
|
||||||
|
|
||||||
}).ToList()
|
}).ToList(),
|
||||||
|
|
||||||
|
OncologyResultList = t.ReadingCategory == ReadingCategory.Oncology ? t.OncologyResultList.Select(t => new OncologyExportInfo()
|
||||||
|
{
|
||||||
|
VisitName = t.VisitTask.TaskName,
|
||||||
|
VisitTaskNum = t.VisitTask.VisitTaskNum,
|
||||||
|
OncologyReason = t.EvaluationReason,
|
||||||
|
OncologyResult = t.EvaluationResult
|
||||||
|
}).ToList() : new List<OncologyExportInfo>()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -386,7 +397,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
|
|
||||||
var dicNameList = taskList.SelectMany(t => t.QuestionAnswerList).Select(t => t.TranslateDicName)
|
var dicNameList = taskList.SelectMany(t => t.QuestionAnswerList).Select(t => t.TranslateDicName)
|
||||||
.Union(taskList.SelectMany(t => t.LesionList).SelectMany(t => t.LessionAnswerList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(c => c.TranslateDicName))
|
.Union(taskList.SelectMany(t => t.LesionList).SelectMany(t => t.LessionAnswerList).Where(t => t.TranslateDicName.IsNotNullOrEmpty()).Select(c => c.TranslateDicName))
|
||||||
.Union(new List<string>() { "ArmEnum", "ValueUnit", "GlobalAssessType", "ImageQualityIssues" })
|
.Union(new List<string>() { "ArmEnum", "ValueUnit", "GlobalAssessType", "ImageQualityIssues", "OncologyAssessType" })
|
||||||
.Distinct().ToArray();
|
.Distinct().ToArray();
|
||||||
|
|
||||||
var trialOrganDic = _trialOrganRepository.Where(t => t.TrialCriterionId == criterion.Id).Select(t => new { t.OrganInfoId, t.Part, t.PartEN }).ToDictionary(
|
var trialOrganDic = _trialOrganRepository.Where(t => t.TrialCriterionId == criterion.Id).Select(t => new { t.OrganInfoId, t.Part, t.PartEN }).ToDictionary(
|
||||||
|
|
@ -484,6 +495,78 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//lungano 单独处理
|
||||||
|
if (task.ReadingCategory == ReadingCategory.Oncology)
|
||||||
|
{
|
||||||
|
|
||||||
|
//取最后一次肿瘤学结果
|
||||||
|
|
||||||
|
if (task.VisitTaskId !=
|
||||||
|
taskList.Where(t => t.SubjectCode == task.SubjectCode && t.ReadingCategory == ReadingCategory.Oncology)
|
||||||
|
.OrderByDescending(c => c.VisitTaskNum).First().VisitTaskId)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var OncologyResult in task.OncologyResultList)
|
||||||
|
{
|
||||||
|
if (OncologyResult.OncologyReason.IsNotNullOrEmpty())
|
||||||
|
{
|
||||||
|
|
||||||
|
var co = CreatNewCOExport(task, coList.Count + 1);
|
||||||
|
|
||||||
|
co.RemarksQuote = $"{OncologyResult?.VisitName}_ONCOLOGY_COMMENTS";
|
||||||
|
|
||||||
|
co.VisitNum = OncologyResult?.VisitTaskNum;
|
||||||
|
|
||||||
|
co.VisitName = OncologyResult?.VisitName;
|
||||||
|
|
||||||
|
co.Remarks = OncologyResult.OncologyReason;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
co.CODTC = task.SignTime?.ToString("yyyy-MM-dd");
|
||||||
|
|
||||||
|
coList.Add(co);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (OncologyResult.OncologyResult.IsNotNullOrEmpty())
|
||||||
|
{
|
||||||
|
|
||||||
|
var visitTask = taskList.Where(t => t.VisitNum == OncologyResult?.VisitTaskNum && t.SubjectCode==task.SubjectCode).FirstOrDefault();
|
||||||
|
|
||||||
|
var rs = CreatNewRSExport(task, rs_subjectIndexNoDic);
|
||||||
|
|
||||||
|
rs.ARM_VisitName = $"{task.ArmEnumStr}_{OncologyResult?.VisitName}";
|
||||||
|
|
||||||
|
rs.VisitNum = OncologyResult?.VisitTaskNum;
|
||||||
|
|
||||||
|
rs.VisitName = OncologyResult?.VisitName;
|
||||||
|
|
||||||
|
rs.LatestScanDate = visitTask?.LatestScanDate;
|
||||||
|
rs.EarliestScanDate = visitTask?.EarliestScanDate;
|
||||||
|
|
||||||
|
|
||||||
|
Fill_RS_IndexValue(rs, 9, Lugano_RSFixed.RSValueList);
|
||||||
|
|
||||||
|
|
||||||
|
rs.RespondEfficacyAssessment = translateDataList["OncologyAssessType"].Where(t => t.Code.ToLower() == OncologyResult.OncologyResult?.ToLower()).Select(t => isEn_Us ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; ;
|
||||||
|
|
||||||
|
var findTask = reReadingList.FirstOrDefault(t => t.UserName == rs.UserName && t.ArmEnum == rs.ArmEnum && t.VisitTaskNum == rs.VisitNum);
|
||||||
|
|
||||||
|
if (findTask != null)
|
||||||
|
{
|
||||||
|
rs.ReAssessmentReason = findTask.RequestReReadingReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
rsList.Add(rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -707,7 +790,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
|
|
||||||
if (rsValueTypeIndex != -1)
|
if (rsValueTypeIndex != -1)
|
||||||
{
|
{
|
||||||
var rs = CreatNewRSExport(task, questionAnswer, rs_subjectIndexNoDic, translateDataList, isEn_Us);
|
var rs = CreatNewRSExport(task, rs_subjectIndexNoDic);
|
||||||
|
|
||||||
Fill_RS_IndexValue(rs, rsValueTypeIndex, rsValueList);
|
Fill_RS_IndexValue(rs, rsValueTypeIndex, rsValueList);
|
||||||
|
|
||||||
|
|
@ -721,7 +804,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
rs.RespondEfficacyAssessment = questionAnswer.QuestionValue;
|
rs.RespondEfficacyAssessment = questionAnswer.QuestionValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((questionAnswer.QuestionType == QuestionType.Tumor && criterion.CriterionType == CriterionType.RECIST1Point1)||
|
if ((questionAnswer.QuestionType == QuestionType.Tumor && criterion.CriterionType == CriterionType.RECIST1Point1) ||
|
||||||
(questionAnswer.QuestionType == QuestionType.ImgOncology && criterion.CriterionType == CriterionType.Lugano2014))
|
(questionAnswer.QuestionType == QuestionType.ImgOncology && criterion.CriterionType == CriterionType.Lugano2014))
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -753,6 +836,8 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
rsList.Add(rs);
|
rsList.Add(rs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -835,22 +920,17 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (task.IsTrigerJudge == true && task.IsJudgeSelect == true && task.JudgeNote.IsNotNullOrEmpty())
|
|
||||||
//{
|
|
||||||
// var co = CreatNewCOExport(task, coList.Count + 1);
|
|
||||||
|
|
||||||
// co.RemarksQuote = $"{co.VisitName}_ADJUDICATION_COMMENTS";
|
|
||||||
// co.Remarks = task.JudgeNote;
|
|
||||||
// co.CODTC = task.JudgeSignTime?.ToString("yyyy-MM-dd");
|
|
||||||
|
|
||||||
// coList.Add(co);
|
|
||||||
//}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 全局更新数据--rs 全局更新原因
|
#region 全局更新数据--rs 全局更新原因
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var globalList = taskList.Where(t => t.ReadingCategory == ReadingCategory.Global).GroupBy(t => new { t.SubjectCode, t.ArmEnum }).Select(g => g.OrderByDescending(t => t.VisitNum).FirstOrDefault()).ToList();
|
//var globalList = taskList.Where(t => t.ReadingCategory == ReadingCategory.Global).GroupBy(t => new { t.SubjectCode, t.ArmEnum }).Select(g => g.OrderByDescending(t => t.VisitNum).FirstOrDefault()).ToList();
|
||||||
|
|
||||||
//RS表 整体肿瘤评估了,其他病灶评估输出的也是最早的日期
|
//RS表 整体肿瘤评估了,其他病灶评估输出的也是最早的日期
|
||||||
|
|
@ -940,7 +1020,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
return co;
|
return co;
|
||||||
}
|
}
|
||||||
|
|
||||||
private RS_Export CreatNewRSExport(TumorExportBaseModel task, TumorCommonQustionInfo questionAnswer, Dictionary<string, int> subjectIndexNoDic, Dictionary<string, List<BasicDicSelectCopy>> translateDataList, bool isEn_Us)
|
private RS_Export CreatNewRSExport(TumorExportBaseModel task, Dictionary<string, int> subjectIndexNoDic)
|
||||||
{
|
{
|
||||||
subjectIndexNoDic[task.SubjectCode]++;
|
subjectIndexNoDic[task.SubjectCode]++;
|
||||||
|
|
||||||
|
|
@ -1309,9 +1389,6 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
||||||
rsValueTypeIndex = 8;
|
rsValueTypeIndex = 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QuestionType.Tumor:
|
|
||||||
rsValueTypeIndex = 9;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,12 @@ namespace IRaCIS.Core.Domain.Models;
|
||||||
public class VisitTask : BaseFullAuditEntity
|
public class VisitTask : BaseFullAuditEntity
|
||||||
{
|
{
|
||||||
#region 导航属性
|
#region 导航属性
|
||||||
|
|
||||||
|
//针对肿瘤学任务的 导航属性,关联肿瘤学结果
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadingOncologyTaskInfo> OncologyResultList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<ReadingNoneDicomMark> ReadingNoneDicomMarkList { get; set; }
|
public List<ReadingNoneDicomMark> ReadingNoneDicomMarkList { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,9 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
||||||
|
|
||||||
builder.HasMany(t => t.LesionList).WithOne(s => s.VisitTask).HasForeignKey(t => t.VisitTaskId);
|
builder.HasMany(t => t.LesionList).WithOne(s => s.VisitTask).HasForeignKey(t => t.VisitTaskId);
|
||||||
|
|
||||||
|
//肿瘤学任务存在重阅
|
||||||
|
builder.HasMany(t => t.OncologyResultList).WithOne(s => s.OncologyVisitTask).HasForeignKey(t => t.OncologyTaskId);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue