Uat_Study
parent
c4c237f131
commit
d6a7e8dc62
|
@ -24,6 +24,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public decimal LowSod { get; set; }
|
public decimal LowSod { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 当前SOD
|
||||||
|
/// </summary>
|
||||||
|
public decimal PresentSod { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否存在靶病灶 (当前访视 至少一个靶病灶的状态为存在)
|
/// 是否存在靶病灶 (当前访视 至少一个靶病灶的状态为存在)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1977,6 +1977,8 @@ namespace IRaCIS.Application.Services
|
||||||
task.IsNeedReadClinicalData = clinicalDataList.Where(x => x.ClinicalDataLevel != ClinicalLevel.Subject).Count() > 0;
|
task.IsNeedReadClinicalData = clinicalDataList.Where(x => x.ClinicalDataLevel != ClinicalLevel.Subject).Count() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 如果已经签名 就不需要再读了
|
||||||
|
task.IsNeedReadClinicalData = visitTaskInfo.ReadingTaskState == ReadingTaskState.HaveSigned ? false : task.IsNeedReadClinicalData;
|
||||||
task.DigitPlaces = criterionInfo.DigitPlaces;
|
task.DigitPlaces = criterionInfo.DigitPlaces;
|
||||||
task.CriterionType = criterionInfo.CriterionType;
|
task.CriterionType = criterionInfo.CriterionType;
|
||||||
task.IseCRFShowInDicomReading = criterionInfo.IseCRFShowInDicomReading;
|
task.IseCRFShowInDicomReading = criterionInfo.IseCRFShowInDicomReading;
|
||||||
|
|
|
@ -1377,52 +1377,61 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// 靶病灶疗效评估算法:
|
/// 靶病灶疗效评估算法-20230306确认版本:
|
||||||
///if(没有靶病灶)
|
///if(基线没有靶病灶)
|
||||||
///{
|
///{
|
||||||
/// 靶病灶疗效为 ND
|
/// 靶病灶疗效为 ND
|
||||||
///}else
|
///}else
|
||||||
///{
|
///{
|
||||||
/// 初始化靶病灶疗效为 SD
|
/// 初始化靶病灶疗效为 SD
|
||||||
///If(上次访视点评估是CR)
|
///
|
||||||
|
/// if (与基线期SOD相比减小≥30 %)
|
||||||
/// {
|
/// {
|
||||||
///修改靶病灶疗效为 CR
|
/// 靶病灶疗效为 PR
|
||||||
///If (有被评估为NE的单个靶病灶)
|
///
|
||||||
///{
|
|
||||||
///靶病灶疗效为 NE
|
|
||||||
/// }
|
/// }
|
||||||
///If(当前访视点淋巴结病灶, 至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
|
///
|
||||||
|
///if (非淋巴结靶病灶长径之和 == 0 并且所有淋巴结靶病灶的短径 < 10且淋巴结非靶病灶全部消失)
|
||||||
/// {
|
/// {
|
||||||
/// 靶病灶疗效为 PD
|
/// 靶病灶疗效为 CR
|
||||||
|
///
|
||||||
/// }
|
/// }
|
||||||
///If(当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。)
|
///
|
||||||
///{
|
|
||||||
/// 靶病灶疗效为 PD
|
|
||||||
///}
|
|
||||||
///} else
|
|
||||||
///{
|
|
||||||
/// if(最低点SOD不为0,比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值(mm)≥5 mm)
|
|
||||||
///{
|
|
||||||
/// 靶病灶疗效为 PD
|
|
||||||
///}else
|
|
||||||
/// {
|
|
||||||
///if (有被评估为NE的单个靶病灶)
|
///if (有被评估为NE的单个靶病灶)
|
||||||
/// {
|
/// {
|
||||||
/// 靶病灶疗效为 NE
|
/// 靶病灶疗效为 NE
|
||||||
///}else
|
///
|
||||||
/// {
|
|
||||||
/// if (与基线期SOD相比减小≥30 %
|
|
||||||
///{
|
|
||||||
/// if (与整体访视期间最低点SOD相比增加<20 % 或者 比整体访视期间最低点SOD绝对增加值<5 mm)
|
|
||||||
///{
|
|
||||||
/// 靶病灶疗效为 PR
|
|
||||||
/// }
|
/// }
|
||||||
///
|
///
|
||||||
/// if (非淋巴结靶病灶长径之和 == 0 并且所有淋巴结靶病灶的短径 < 10)
|
///if (最低点SOD > 0)
|
||||||
///{
|
///{
|
||||||
/// 靶病灶疗效为 CR
|
/// if(比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PD
|
||||||
|
///
|
||||||
/// }
|
/// }
|
||||||
///}
|
///}
|
||||||
|
///else
|
||||||
|
///{
|
||||||
|
/// //进入该分支最低点SOD=0
|
||||||
|
/// if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为PD
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
///}
|
||||||
|
///
|
||||||
|
///if(上次访视点评估是CR)
|
||||||
|
/// {
|
||||||
|
/// if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PD
|
||||||
|
///
|
||||||
|
/// }
|
||||||
|
/// if (当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。)
|
||||||
|
/// {
|
||||||
|
/// 靶病灶疗效为 PD
|
||||||
|
///
|
||||||
/// }
|
/// }
|
||||||
///}
|
///}
|
||||||
///}
|
///}
|
||||||
|
@ -1438,12 +1447,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
TargetLesionCalculateDto resultData = new TargetLesionCalculateDto()
|
TargetLesionCalculateDto resultData = new TargetLesionCalculateDto()
|
||||||
{
|
{
|
||||||
// 是否存在靶病灶 (当前访视 至少一个靶病灶的状态为存在)
|
// 是否存在靶病灶
|
||||||
ExistsTargetLesion=false,
|
ExistsTargetLesion = tableQuestion.Count() > 0,
|
||||||
|
|
||||||
// 最低SOD
|
// 最低SOD
|
||||||
LowSod = (await GetLowSODVisit(inDto)).Select(x => x.SOD).FirstOrDefault(),
|
LowSod = (await GetLowSODVisit(inDto)).Select(x => x.SOD).FirstOrDefault(),
|
||||||
|
|
||||||
|
// 当前Sod
|
||||||
|
PresentSod = (await GetSODData(inDto)) ?? 0,
|
||||||
|
|
||||||
//非淋巴结靶病灶长径之和 decimal
|
//非淋巴结靶病灶长径之和 decimal
|
||||||
SumOfDiameter = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SumOfDiameter).Sum(x => x.Answer.IsNullOrEmptyReturn0()),
|
SumOfDiameter = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SumOfDiameter).Sum(x => x.Answer.IsNullOrEmptyReturn0()),
|
||||||
|
|
||||||
|
@ -1506,9 +1518,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
foreach (var item in tableQuestion)
|
foreach (var item in tableQuestion)
|
||||||
{
|
{
|
||||||
// 是否存在靶病灶 (当前访视 至少一个靶病灶的状态为存在)
|
|
||||||
resultData.ExistsTargetLesion = resultData.ExistsTargetLesion || item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.State).Select(x => x.Answer).FirstOrDefault() == NoTargetState.Exist.GetEnumInt();
|
|
||||||
|
|
||||||
if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes)))
|
if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes)))
|
||||||
{
|
{
|
||||||
// 淋巴结的短径
|
// 淋巴结的短径
|
||||||
|
@ -1533,59 +1542,125 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty;
|
.Select(x => x.Answer).FirstOrDefaultAsync()) ?? string.Empty;
|
||||||
|
|
||||||
TargetAssessment result = TargetAssessment.SD;
|
TargetAssessment result = TargetAssessment.SD;
|
||||||
|
//if(基线没有靶病灶)
|
||||||
if (!resultData.ExistsTargetLesion)
|
if (!resultData.ExistsTargetLesion)
|
||||||
{
|
{
|
||||||
|
// 靶病灶疗效为 ND
|
||||||
result = TargetAssessment.ND;
|
result = TargetAssessment.ND;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (resultData.LastTargetLesionEvaluate.EqEnum(TargetAssessment.CR))
|
//初始化靶病灶疗效为 SD
|
||||||
{
|
result = TargetAssessment.SD;
|
||||||
if (resultData.ExixtsNETargetLesion)
|
|
||||||
{
|
|
||||||
result = TargetAssessment.NE;
|
|
||||||
}
|
|
||||||
if (resultData.CurrenShortBigger10 && resultData.IsAddFive)
|
|
||||||
{
|
|
||||||
result = TargetAssessment.PD;
|
|
||||||
}
|
|
||||||
if (resultData.CurrentMajoreBigger0)
|
|
||||||
{
|
|
||||||
result = TargetAssessment.PD;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
//if (与基线期SOD相比减小≥30 %)
|
||||||
{
|
|
||||||
if (resultData.LowSod != 0 && resultData.LowPercentBigger20 && resultData.LowChangeBigger5)
|
|
||||||
{
|
|
||||||
result = TargetAssessment.PD;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (resultData.ExixtsNETargetLesion)
|
|
||||||
{
|
|
||||||
result = TargetAssessment.NE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (resultData.SODPercentBigger30)
|
if (resultData.SODPercentBigger30)
|
||||||
{
|
{
|
||||||
if (resultData.LowPercentLess20 || resultData.LowChangeLess5)
|
//靶病灶疗效为 PR
|
||||||
{
|
|
||||||
result = TargetAssessment.PR;
|
result = TargetAssessment.PR;
|
||||||
}
|
}
|
||||||
|
//if (非淋巴结靶病灶长径之和 == 0 并且所有淋巴结靶病灶的短径 < 10且淋巴结非靶病灶全部消失)
|
||||||
if (resultData.SumOfDiameter == 0 && resultData.DiameterLessThan10 && resultData.NonTargetStateIsLoss)
|
if (resultData.SumOfDiameter == 0 && resultData.DiameterLessThan10 && resultData.NonTargetStateIsLoss)
|
||||||
{
|
{
|
||||||
|
//靶病灶疗效为 CR
|
||||||
result = TargetAssessment.CR;
|
result = TargetAssessment.CR;
|
||||||
}
|
}
|
||||||
|
// if (有被评估为NE的单个靶病灶)
|
||||||
|
if (resultData.ExixtsNETargetLesion)
|
||||||
|
{
|
||||||
|
// 靶病灶疗效为 NE
|
||||||
|
result = TargetAssessment.NE;
|
||||||
}
|
}
|
||||||
|
//if (最低点SOD > 0)
|
||||||
|
if (resultData.LowSod > 0)
|
||||||
|
{
|
||||||
|
// if(比整体访视期间最低点SOD增加≥20 % 且与整个访视期间最低点相比增加的值≥5 mm)
|
||||||
|
if (resultData.LowPercentBigger20 && resultData.LowChangeBigger5)
|
||||||
|
{
|
||||||
|
// 靶病灶疗效为 PD
|
||||||
|
result = TargetAssessment.PD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//进入该分支最低点SOD=0
|
||||||
|
// if (当前访视SOD > 0 且与整个访视期间最低点相比增加的值≥5 mm)
|
||||||
|
if (resultData.PresentSod > 0 && resultData.LowChangeBigger5)
|
||||||
|
{
|
||||||
|
// 靶病灶疗效为PD
|
||||||
|
result = TargetAssessment.PD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if(上次访视点评估是CR)
|
||||||
|
if (resultData.LastTargetLesionEvaluate.EqEnum(TargetAssessment.CR))
|
||||||
|
{
|
||||||
|
//if (当前访视点淋巴结病灶,至少一个淋巴结靶病灶短径≥10 mm 并且该淋巴结靶病灶短径绝对增加值≥5 mm)
|
||||||
|
if (resultData.CurrenShortBigger10 && resultData.IsAddFive)
|
||||||
|
{
|
||||||
|
//靶病灶疗效为 PD
|
||||||
|
result = TargetAssessment.PD;
|
||||||
|
}
|
||||||
|
//if (当前访视点非淋巴结病灶至少一个非淋巴结靶病灶的长径>0 mm。)
|
||||||
|
if (resultData.CurrentMajoreBigger0)
|
||||||
|
{
|
||||||
|
//靶病灶疗效为 PD
|
||||||
|
result = TargetAssessment.PD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
#region 之前的逻辑 备注
|
||||||
|
//if (resultData.LastTargetLesionEvaluate.EqEnum(TargetAssessment.CR))
|
||||||
|
//{
|
||||||
|
// if (resultData.ExixtsNETargetLesion)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.NE;
|
||||||
|
// }
|
||||||
|
// if (resultData.CurrenShortBigger10 && resultData.IsAddFive)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.PD;
|
||||||
|
// }
|
||||||
|
// if (resultData.CurrentMajoreBigger0)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.PD;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//else
|
||||||
|
//{
|
||||||
|
// if (resultData.LowSod != 0 && resultData.LowPercentBigger20 && resultData.LowChangeBigger5)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.PD;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if (resultData.ExixtsNETargetLesion)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.NE;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// if (resultData.SODPercentBigger30)
|
||||||
|
// {
|
||||||
|
// if (resultData.LowPercentLess20 || resultData.LowChangeLess5)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.PR;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (resultData.SumOfDiameter == 0 && resultData.DiameterLessThan10 && resultData.NonTargetStateIsLoss)
|
||||||
|
// {
|
||||||
|
// result = TargetAssessment.CR;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.GetEnumInt();
|
return result.GetEnumInt();
|
||||||
|
|
Loading…
Reference in New Issue