diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index ba1ff2447..8e076fe53 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -452,6 +452,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate List calculateList = new List() { + + //垂直径乘积之和(SPD) + //new ReadingCalculateData (){QuestionType=QuestionType.sp,GetDecimalNullFun=GetSODData}, + ////靶病灶径线之和(SOD) //new ReadingCalculateData (){QuestionType=QuestionType.SOD,GetDecimalNullFun=GetSODData}, @@ -1469,6 +1473,31 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate TargetAssessment result = TargetAssessment.SD; + //1、基线非淋巴结靶病灶不存在,或者当前访视非淋巴结靶病灶全部消失; + //并且 2.当前访视淋巴结靶病灶的状态全部变为“消失”。 + + var eqCR = true; + //当前访视中,靶病灶的Σ PPD; + decimal spd = 0; + foreach (var item in rowInfo) + { + if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.No))) + { + // 基线非淋巴结靶病灶不存在,或者当前访视非淋巴结靶病灶全部消失; + eqCR = eqCR && item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.Loss)); + } + + spd += (item.TableQuestionList.Where(x => x.QuestionMark == QuestionMark.PPD).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0(); + + + if (item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes))) + { + // 当前访视淋巴结靶病灶的状态全部变为“消失” + eqCR = eqCR && item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.Loss)); + } + } + + //基线未选择靶病灶 if (rowInfo.Count() == 0) { @@ -1480,13 +1509,22 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate result = TargetAssessment.PD; } //在排除PD后,有任一靶病灶为NE状态 - else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate))) + else if (tableQuestions.Any(x => x.QuestionMark == QuestionMark.State && x.Answer.EqEnum(TargetState.UnableEvaluate))) { result = TargetAssessment.PD; } - - - + //1、基线非淋巴结靶病灶不存在,或者当前访视非淋巴结靶病灶全部消失; + //并且 2.当前访视淋巴结靶病灶的状态全部变为“消失”。 + else if (eqCR) + { + result = TargetAssessment.CR; + } + // 1、与基线相比SPD变化的百分比 ≥50%,; + // 并且 当前访视没有任何一个状态为“疾病进展”的靶病灶 + else if (eqCR) + { + result = TargetAssessment.CR; + } return result.GetEnumInt();