Uat_Study
hang 2023-05-16 10:33:08 +08:00
commit 06dde739c3
12 changed files with 220 additions and 61 deletions

View File

@ -7593,6 +7593,11 @@
上一次任务的新病灶评估为iUPD 上一次任务的新病灶评估为iUPD
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.ViewModel.IRECISTNewLesionAssessmentDto.LastTaskNewLesioniCPD">
<summary>
上一次任务的新病灶评估为iCPD
</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionEvaluateDto"> <member name="T:IRaCIS.Core.Application.ViewModel.IRECISTTargetLesionEvaluateDto">
<summary> <summary>
IRECIST整体肿瘤评估 IRECIST整体肿瘤评估

View File

@ -18,6 +18,25 @@
"UploadDownLoad_RequestError": "Request error.", "UploadDownLoad_RequestError": "Request error.",
"UploadDownLoad_SupportedFormats": "Supports upload of .xlsx, .xls, and .csv formats.", "UploadDownLoad_SupportedFormats": "Supports upload of .xlsx, .xls, and .csv formats.",
// ------------------------------------------------------------_MediatR--------------------------------------------------------------------
//ConsistencyVerificationRequest
"ConsistencyVerification_Tech": "Check technique",
"ConsistencyVerification_Time": "Incorrect time format",
//ConsistencyVerificationHandler
"ConsistencyVerification_Img": "Hello, according to the automatic recognition of this system, the imaging inspection submitted by the subject in the current visit in the IRC system is as follows:",
"ConsistencyVerification_Of": "Of",
"ConsistencyVerification_ImgC": "Imaging inspection",
"ConsistencyVerification_EDCA": "Check EDC data, completely consistent, approved",
"ConsistencyVerification_EDCB": "Check EDC data, completely consistent",
"ConsistencyVerification_Auto": "Automatically verified pass",
"ConsistencyVerification_Prob": "The following problems exist:",
"ConsistencyVerification_EdcL": "Imaging inspection (EDC missing)",
"ConsistencyVerification_IrcL": "Imaging inspection (IRC missing)",
"ConsistencyVerification_Desc": "Description: In order to efficiently solve/handle all the above doubts, please verify the actual imaging inspection accurately. Please note that the imaging date may not be consistent with the actual inspection date, and multiple modalities of imaging inspections (such as PET-CT) may exist at the same time. After accurate verification, please reply with the correct imaging inspection for this visit.",
"ConsistencyVerification_Conf": "According to the imported consistency check data, please confirm the following inconsistent inspection item information of this visit:",
"ConsistencyVerification_Edc": "EDC missing:",
"ConsistencyVerification_IrcLi": "IRC missing:",
//-------------------------------------------------------------------------------------Reading----------------------------------------------------------------- //-------------------------------------------------------------------------------------Reading-----------------------------------------------------------------
//ClinicalDataSetService //ClinicalDataSetService
"ClinicalDataSet_DupTypeFail": "There are duplicate clinical data of the same type. The operation failed.", "ClinicalDataSet_DupTypeFail": "There are duplicate clinical data of the same type. The operation failed.",

View File

@ -18,6 +18,25 @@
"UploadDownLoad_RequestError": "请求异常,请重试!", "UploadDownLoad_RequestError": "请求异常,请重试!",
"UploadDownLoad_SupportedFormats": "支持.xlsx、.xls、.csv格式的文件上传。", "UploadDownLoad_SupportedFormats": "支持.xlsx、.xls、.csv格式的文件上传。",
// ------------------------------------------------------------_MediatR--------------------------------------------------------------------
//ConsistencyVerificationRequest
"ConsistencyVerification_Tech": "检查技术",
"ConsistencyVerification_Time": "时间格式不对",
//ConsistencyVerificationHandler
"ConsistencyVerification_Img": "您好,根据本系统自动识别该受试者当前访视在IRC系统中已提交的影像检查情况如下",
"ConsistencyVerification_Of": "的",
"ConsistencyVerification_ImgC": "影像检查",
"ConsistencyVerification_EDCA": "核对EDC数据完全一致, 审核通过",
"ConsistencyVerification_EDCB": "核对EDC数据完全一致",
"ConsistencyVerification_Auto": "自动核查通过",
"ConsistencyVerification_Prob": "存在问题如下:",
"ConsistencyVerification_EdcL": "影像检查(EDC 缺少)",
"ConsistencyVerification_IrcL": "影像检查(IRC 缺少)",
"ConsistencyVerification_Desc": "说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。",
"ConsistencyVerification_Conf": "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:",
"ConsistencyVerification_Edc": "EDC 缺少:",
"ConsistencyVerification_IrcLi": "IRC 缺少:",
// ------------------------------------------------------------Reading-------------------------------------------------------------------- // ------------------------------------------------------------Reading--------------------------------------------------------------------
//ClinicalDataSetService //ClinicalDataSetService
"ClinicalDataSet_DupTypeFail": "存在同类型的临床数据,操作失败", "ClinicalDataSet_DupTypeFail": "存在同类型的临床数据,操作失败",

View File

@ -466,6 +466,19 @@ namespace IRaCIS.Core.Application.Service
TrialCriterionId= readingQuestionCriterionTrial.Id, TrialCriterionId= readingQuestionCriterionTrial.Id,
OrganInfoId = x.Id, OrganInfoId = x.Id,
TrialId = readingQuestionCriterionTrial.TrialId, TrialId = readingQuestionCriterionTrial.TrialId,
TULAT=x.TULAT,
Classification=x.Classification,
ClassificationEN=x.ClassificationEN,
IsCanEditPosition=x.IsCanEditPosition,
Part=x.Part,
IsLymphNodes=x.IsLymphNodes,
PartEN=x.PartEN,
ShowOrder=x.ShowOrder,
TULATEN=x.TULATEN,
TULOC=x.TULOC,
TULOCEN=x.TULOCEN,
OrganType=x.OrganType,
}).ToListAsync(); }).ToListAsync();
organTrialInfoList.ForEach(x => x.Id = NewId.NextGuid()); organTrialInfoList.ForEach(x => x.Id = NewId.NextGuid());

View File

@ -276,6 +276,11 @@ namespace IRaCIS.Core.Application.ViewModel
/// 上一次任务的新病灶评估为iUPD /// 上一次任务的新病灶评估为iUPD
/// </summary> /// </summary>
public bool LastTaskNewLesioniUPD { get; set; } public bool LastTaskNewLesioniUPD { get; set; }
/// <summary>
/// 上一次任务的新病灶评估为iCPD
/// </summary>
public bool LastTaskNewLesioniCPD { get; set; }
} }
/// <summary> /// <summary>

View File

@ -1319,7 +1319,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var value = await GetSODData(inDto); var value = await GetSODData(inDto);
if (value == null || inDto.IsBaseLine) if (value == null || inDto.IsBaseLine || !inDto.IsConvertedTask||inDto.BeforeConvertedTaskId!=null)
{ {
return null; return null;
} }
@ -1336,6 +1336,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
/// <returns></returns> /// <returns></returns>
public async Task<decimal?> GetiSODData(ReadingCalculateDto inDto) public async Task<decimal?> GetiSODData(ReadingCalculateDto inDto)
{ {
if (!inDto.IsConvertedTask || inDto.BeforeConvertedTaskId != null)
{
return null;
}
if (iSODData != null) if (iSODData != null)
{ {
return iSODData.Value; return iSODData.Value;
@ -1389,7 +1394,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var value = await GetiSODData(inDto); var value = await GetiSODData(inDto);
if (value == null || inDto.IsBaseLine) if (value == null || inDto.IsBaseLine || !inDto.IsConvertedTask || inDto.BeforeConvertedTaskId != null)
{ {
return null; return null;
} }
@ -2343,6 +2348,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
{ {
//上一次任务的新病灶评估为iUPD //上一次任务的新病灶评估为iUPD
LastTaskNewLesioniUPD = lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.iUPD)), LastTaskNewLesioniUPD = lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.iUPD)),
//上一次任务的新病灶评估为iCPD
LastTaskNewLesioniCPD = lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.iCPD)),
}; };
// if(新靶病灶为ND&&新非靶病灶为ND&&其它既往新病灶为ND&&不存在触发iRECIST后新病灶 // if(新靶病灶为ND&&新非靶病灶为ND&&其它既往新病灶为ND&&不存在触发iRECIST后新病灶
@ -2362,7 +2370,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
result = NewLesionAssessment.iCPD; result = NewLesionAssessment.iCPD;
} }
// else if (前一访视新病灶评估为iCPD && (新靶病灶有存在病灶 || 新非靶病灶有存在状态病灶 || 其它既往新病灶有存在的病灶 || 触发iRECIST后新病灶有存在病灶)) // else if (前一访视新病灶评估为iCPD && (新靶病灶有存在病灶 || 新非靶病灶有存在状态病灶 || 其它既往新病灶有存在的病灶 || 触发iRECIST后新病灶有存在病灶))
else if(data.LastTaskNewLesioniUPD&& else if(data.LastTaskNewLesioniCPD &&
(inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewTargetLesion).SelectMany(x => x.TableRowInfoList).Count() > 0 (inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewTargetLesion).SelectMany(x => x.TableRowInfoList).Count() > 0
|| inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewNonTargetLesion).SelectMany(x => x.TableRowInfoList).Count() > 0 || inDto.QuestionInfo.Where(x => x.LesionType == LesionType.NewNonTargetLesion).SelectMany(x => x.TableRowInfoList).Count() > 0
|| inDto.QuestionInfo.Where(x => x.LesionType == LesionType.OtherPreviousNewLesion).SelectMany(x => x.TableRowInfoList).Count() > 0 || inDto.QuestionInfo.Where(x => x.LesionType == LesionType.OtherPreviousNewLesion).SelectMany(x => x.TableRowInfoList).Count() > 0
@ -2375,7 +2383,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
} }
// else if (前一访视新病灶评估为iUPD && 新靶病灶上个访视评估为NE本次访视评估为iUPD) // else if (前一访视新病灶评估为iUPD && 新靶病灶上个访视评估为NE本次访视评估为iUPD)
else if(data.LastTaskNewLesioniUPD && else if(data.LastTaskNewLesioniUPD &&
lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) lastTaskCalculateDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewTargetLesionAssessment.NE))
&& inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewTargetLesionAssessment.iUPD)) && inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewTargetLesionAssessment.iUPD))
) )
{ {
@ -2589,7 +2597,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
if (data.LastTaskLesioniUPDOriCPD if (data.LastTaskLesioniUPDOriCPD
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iCPD)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iCPD))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCPD)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCPD))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.iCPD)))) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.iCPD))))
{ {
// 疗效为 iCPD // 疗效为 iCPD
result = OverallAssessment.iCPD; result = OverallAssessment.iCPD;
@ -2621,7 +2629,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// else if (靶病灶评估为iUPD || 非靶病灶评估为iUPD || 新病灶评估为iUPD) // else if (靶病灶评估为iUPD || 非靶病灶评估为iUPD || 新病灶评估为iUPD)
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iUPD)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iUPD))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iUPD)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iUPD))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.iUPD))) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.iUPD)))
{ {
// 疗效为 iUPD // 疗效为 iUPD
result = OverallAssessment.iUPD; result = OverallAssessment.iUPD;
@ -2630,7 +2638,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
else if ( else if (
(inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iCR)) (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iCR))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCR))) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCR)))
&& inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.ND)) && inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.ND))
) )
{ {
// 疗效为 iCR // 疗效为 iCR
@ -2642,9 +2650,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.ND)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.ND))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 iPR // 疗效为 iPR
@ -2655,9 +2663,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.No)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.No))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 iPR // 疗效为 iPR
@ -2667,8 +2675,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iPR)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.iPR))
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCR)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCR))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 iPR // 疗效为 iPR
@ -2677,8 +2685,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// else if (靶病灶评估为ND && 非靶病灶评估为iCR && 新病灶评估为疑似或NE) // else if (靶病灶评估为ND && 非靶病灶评估为iCR && 新病灶评估为疑似或NE)
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND))
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCR)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iCR))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 iPR // 疗效为 iPR
@ -2690,8 +2698,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 iSD // 疗效为 iSD
@ -2700,9 +2708,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// else if (靶病灶评估为ND && 非靶病灶评估为iNN && 新病灶评估为ND或疑似或NE) // else if (靶病灶评估为ND && 非靶病灶评估为iNN && 新病灶评估为ND或疑似或NE)
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND))
&& inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN)) && inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN))
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.ND)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.ND))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 iNN // 疗效为 iNN
@ -2711,8 +2719,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为ND或疑似) // else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为ND或疑似)
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND))
&& inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) && inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.ND)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.ND))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
)) ))
{ {
// 疗效为 ND // 疗效为 ND
@ -2724,9 +2732,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.iNN))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.ND)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.ND))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 NE // 疗效为 NE
@ -2736,9 +2744,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND))
&& (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE)) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.NE))
) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.No)) ) && (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.No))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.Suspected)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.Suspected))
|| inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) || inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
)) ))
{ {
// 疗效为 NE // 疗效为 NE
@ -2747,7 +2755,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
// else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为NE) // else if (靶病灶评估为ND && 非靶病灶评估为ND && 新病灶评估为NE)
else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND)) else if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.TargetLesion && x.Answer.EqEnum(TargetAssessment.ND))
&& inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND)) && inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NoTargetLesion && x.Answer.EqEnum(NoTargetAssessment.ND))
&& inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewTargetLesion && x.Answer.EqEnum(NewLesionAssessment.NE)) && inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.NE))
) )
{ {

View File

@ -1,4 +1,5 @@
using Magicodes.ExporterAndImporter.Core; using IRaCIS.Core.Domain.Share;
using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Core.Filters; using Magicodes.ExporterAndImporter.Core.Filters;
using Magicodes.ExporterAndImporter.Core.Models; using Magicodes.ExporterAndImporter.Core.Models;
using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel;
@ -44,7 +45,8 @@ namespace IRaCIS.Core.Application.MediatR.CommandAndQueries
var index= data.IndexOf(item); var index= data.IndexOf(item);
if ( DateTime.TryParse(item.StudyDate, out dt) == false) if ( DateTime.TryParse(item.StudyDate, out dt) == false)
{ {
importResult.RowErrors.Add(new DataRowErrorInfo() { RowIndex = index, FieldErrors = new Dictionary<string, string> { { "检查技术", "时间格式不对" } } });
importResult.RowErrors.Add(new DataRowErrorInfo() { RowIndex = index, FieldErrors = new Dictionary<string, string> { { StaticData.International("ConsistencyVerification_Tech") , StaticData.International("ConsistencyVerification_Time") } } });
} }
} }
} }

View File

@ -112,13 +112,14 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
StringBuilder dialogMsg = new StringBuilder(); StringBuilder dialogMsg = new StringBuilder();
dialogMsg.Append("您好,根据本系统自动识别该受试者当前访视在IRC系统中已提交的影像检查情况如下"); //---您好,根据本系统自动识别该受试者当前访视在IRC系统中已提交的影像检查情况如下
dialogMsg.Append(StaticData.International("ConsistencyVerification_Img"));
var num = 0; var num = 0;
List<ParamInfoDto> paramInfoList = new List<ParamInfoDto>(); List<ParamInfoDto> paramInfoList = new List<ParamInfoDto>();
foreach (var item in dbVisitStudyList) foreach (var item in dbVisitStudyList)
{ {
num++; num++;
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}的{item.Modality}影像检查"); dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{StaticData.International("ConsistencyVerification_Of")}{item.Modality}{StaticData.International("ConsistencyVerification_ImgC")}");
paramInfoList.Add(new ParamInfoDto() paramInfoList.Add(new ParamInfoDto()
{ {
Modality = item.Modality, Modality = item.Modality,
@ -175,15 +176,18 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0) if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
{ {
dialogMsg.AppendLine($"<br/>"); dialogMsg.AppendLine($"<br/>");
dialogMsg.AppendLine($"核对EDC数据完全一致, 审核通过"); //---核对EDC数据完全一致, 审核通过
dialogMsg.AppendLine(StaticData.International("ConsistencyVerification_EDCA"));
// dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。"); // dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。");
dbSV.CheckState = CheckStateEnum.CVPassed; dbSV.CheckState = CheckStateEnum.CVPassed;
dbSV.CheckUserId = _userInfo.Id; dbSV.CheckUserId = _userInfo.Id;
dbSV.CheckPassedTime = DateTime.Now; dbSV.CheckPassedTime = DateTime.Now;
dbSV.CheckResult = "核对EDC数据完全一致"; //---核对EDC数据完全一致
dbSV.ManualPassReason = "自动核查通过"; dbSV.CheckResult = StaticData.International("ConsistencyVerification_EDCB");
//---自动核查通过
dbSV.ManualPassReason = StaticData.International("ConsistencyVerification_Auto");
//维护状态 //维护状态
dbSV.ReadingStatus = ReadingStatusEnum.TaskAllocate; dbSV.ReadingStatus = ReadingStatusEnum.TaskAllocate;
@ -202,26 +206,30 @@ namespace IRaCIS.Core.Application.MediatR.Handlers
else else
{ {
dialogMsg.AppendLine($"<br/>"); dialogMsg.AppendLine($"<br/>");
dialogMsg.AppendLine($"<br><span style='color: #f00'>存在问题如下:</span>"); //存在问题如下:
dialogMsg.AppendLine($"<br><span style='color: #f00'>{StaticData.International("ConsistencyVerification_Prob")}</span>");
num = 0; num = 0;
foreach (var item in dbExceptExcel) foreach (var item in dbExceptExcel)
{ {
num++; num++;
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}的{item.Modality}影像检查(EDC 缺少) "); //影像检查(EDC 缺少) ConsistencyVerification_EdcL
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{StaticData.International("ConsistencyVerification_Of")}{item.Modality}{StaticData.International("ConsistencyVerification_EdcL")} ");
} }
foreach (var item in excelExceptDB) foreach (var item in excelExceptDB)
{ {
num++; num++;
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}的{item.Modality}影像检查(IRC 缺少) "); // 影像检查(IRC 缺少)
dialogMsg.AppendLine($"<br>{num}.{item.StudyDate}{StaticData.International("ConsistencyVerification_Of")}{item.Modality}{StaticData.International("ConsistencyVerification_IrcL")} ");
} }
dialogMsg.AppendLine($"<br/>"); dialogMsg.AppendLine($"<br/>");
dialogMsg.AppendLine(@$"<br>说明:为高效解决/处理以上全部质疑问题麻烦您准确核实实际影像检查情况。请注意影像日期与实际检查的日期可能会不一致部分检查如PET -CT)可能同时存在多种模态影像。准确核实后,请回复该访视正确的影像检查情况。"); dialogMsg.AppendLine(@$"<br>{StaticData.International("ConsistencyVerification_Desc")}");
dbSV.CheckResult = "根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:" + String.Join(" | ", dbExceptExcel.Select(t => $"EDC 缺少:{t.StudyDate} {t.Modality} ")) + " | " //---根据导入的一致性核查数据,请确认本访视以下不一致检查项信息:
+ String.Join(" | ", excelExceptDB.Select(t => $"IRC 缺少:{t.StudyDate} {t.Modality}")); dbSV.CheckResult = StaticData.International("ConsistencyVerification_Conf") + String.Join(" | ", dbExceptExcel.Select(t => $"{StaticData.International("ConsistencyVerification_Edc")}{t.StudyDate} {t.Modality} ")) + " | "
+ String.Join(" | ", excelExceptDB.Select(t => $"{StaticData.International("ConsistencyVerification_IrcLi")}{t.StudyDate} {t.Modality}"));
//新增一致性核查质疑记录 //新增一致性核查质疑记录

View File

@ -30,33 +30,33 @@ namespace IRaCIS.Core.Domain.Models
/// <summary> /// <summary>
/// 部位 /// 部位
/// </summary> /// </summary>
public string Part { get; set; } public string Part { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 部位 英文 /// 部位 英文
/// </summary> /// </summary>
public string PartEN { get; set; } = string.Empty; public string PartEN { get; set; } = string.Empty;
/// <summary> /// <summary>
/// TULOC 器官 /// TULOC 器官
/// </summary> /// </summary>
public string TULOC { get; set; } public string TULOC { get; set; } = string.Empty;
/// <summary> /// <summary>
/// TULOC 器官 英文 /// TULOC 器官 英文
/// </summary> /// </summary>
public string TULOCEN { get; set; } = string.Empty; public string TULOCEN { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 位置 /// 位置
/// </summary> /// </summary>
public string TULAT { get; set; } public string TULAT { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 位置 英文 /// 位置 英文
/// </summary> /// </summary>
public string TULATEN { get; set; } = string.Empty; public string TULATEN { get; set; } = string.Empty;
/// <summary> /// <summary>
/// 备注 /// 备注

View File

@ -49,7 +49,68 @@ namespace IRaCIS.Core.Domain.Models
/// </summary> /// </summary>
public Guid TrialCriterionId { get; set; } public Guid TrialCriterionId { get; set; }
[JsonIgnore] /// <summary>
/// 部位
/// </summary>
public string Part { get; set; } = string.Empty;
/// <summary>
/// 部位 英文
/// </summary>
public string PartEN { get; set; } = string.Empty;
/// <summary>
/// TULOC 器官
/// </summary>
public string TULOC { get; set; } = string.Empty;
/// <summary>
/// TULOC 器官 英文
/// </summary>
public string TULOCEN { get; set; } = string.Empty;
/// <summary>
/// 位置
/// </summary>
public string TULAT { get; set; } = string.Empty;
/// <summary>
/// 位置 英文
/// </summary>
public string TULATEN { get; set; } = string.Empty;
/// <summary>
/// 是否是淋巴结
/// </summary>
public IsLymph IsLymphNodes { get; set; }
/// <summary>
/// 是否可编辑位置
/// </summary>
public bool IsCanEditPosition { get; set; }
/// <summary>
/// 分类
/// </summary>
public string Classification { get; set; } = string.Empty;
/// <summary>
/// 分类 英文
/// </summary>
public string ClassificationEN { get; set; } = string.Empty;
/// <summary>
/// 序号
/// </summary>
public int ShowOrder { get; set; } = 0;
/// <summary>
/// 器官类型
/// </summary>
public OrganType? OrganType { get; set; }
[JsonIgnore]
[ForeignKey("OrganInfoId")] [ForeignKey("OrganInfoId")]
public OrganInfo OrganInfo { get; set; } public OrganInfo OrganInfo { get; set; }

View File

@ -1038,4 +1038,23 @@ go
update ClinicalDataTrialSet set ClinicalDataTrialSet.ClinicalDataSetEnName=clinicalDataSystemSet.ClinicalDataSetEnName from clinicalDataSystemSet update ClinicalDataTrialSet set ClinicalDataTrialSet.ClinicalDataSetEnName=clinicalDataSystemSet.ClinicalDataSetEnName from clinicalDataSystemSet
inner join ClinicalDataTrialSet on ClinicalDataTrialSet.SystemClinicalDataSetId=clinicalDataSystemSet.Id inner join ClinicalDataTrialSet on ClinicalDataTrialSet.SystemClinicalDataSetId=clinicalDataSystemSet.Id
---------------
update OrganTrialInfo set
OrganTrialInfo.PartEN=OrganInfo.PartEN ,
OrganTrialInfo.Part=OrganInfo.Part,
OrganTrialInfo.TULOC=OrganInfo.TULOC,
OrganTrialInfo.TULOCEN=OrganInfo.TULOCEN,
OrganTrialInfo.TULAT=OrganInfo.TULAT,
OrganTrialInfo.TULATEN=OrganInfo.TULATEN,
OrganTrialInfo.IsLymphNodes=OrganInfo.IsLymphNodes,
OrganTrialInfo.IsCanEditPosition=OrganInfo.IsCanEditPosition,
OrganTrialInfo.Classification=OrganInfo.Classification,
OrganTrialInfo.ClassificationEN=OrganInfo.ClassificationEN,
OrganTrialInfo.ShowOrder=OrganInfo.ShowOrder,
OrganTrialInfo.OrganType=OrganInfo.OrganType
from OrganInfo inner join OrganTrialInfo
on OrganInfo.Id=OrganTrialInfo.OrganInfoId where OrganTrialInfo.OrganType is null

Binary file not shown.