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; }
|
||||
#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))
|
||||
|
||||
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
|
||||
.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.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
|
||||
|
||||
|
|
@ -335,7 +335,18 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
|||
|
||||
}).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)
|
||||
.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();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
@ -707,7 +790,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
|||
|
||||
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);
|
||||
|
||||
|
|
@ -721,9 +804,9 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
|||
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))
|
||||
|
||||
|
||||
{
|
||||
rs.AssessmentReason = task.VisitNote;
|
||||
|
||||
|
|
@ -753,6 +836,8 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
|||
rsList.Add(rs);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#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();
|
||||
|
||||
//RS表 整体肿瘤评估了,其他病灶评估输出的也是最早的日期
|
||||
|
|
@ -940,7 +1020,7 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
|||
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]++;
|
||||
|
||||
|
|
@ -1309,9 +1389,6 @@ public class Tumor_CDISC_ExportService(IRepository<ReadingQuestionCriterionTrial
|
|||
rsValueTypeIndex = 8;
|
||||
break;
|
||||
|
||||
case QuestionType.Tumor:
|
||||
rsValueTypeIndex = 9;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,12 @@ namespace IRaCIS.Core.Domain.Models;
|
|||
public class VisitTask : BaseFullAuditEntity
|
||||
{
|
||||
#region 导航属性
|
||||
|
||||
//针对肿瘤学任务的 导航属性,关联肿瘤学结果
|
||||
[JsonIgnore]
|
||||
public List<ReadingOncologyTaskInfo> OncologyResultList { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
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.OncologyResultList).WithOne(s => s.OncologyVisitTask).HasForeignKey(t => t.OncologyTaskId);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue