diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs index 76b639edf..ced5c5a11 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs @@ -1247,6 +1247,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // 当前访视新病灶数量 var thisNewLesionsCount = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstIsNullReturnEmpty().IsNullOrEmptyReturn0(); + // 其他访视的BTN var otherBTNStrList =await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId != inDto.VisitTaskId && taskIdList.Contains(x.VisitTaskId) && x.ReadingQuestionTrial.QuestionType == QuestionType.BaseLineLesionsCount).Select(x=>new { x.VisitTask.VisitTaskNum, @@ -1254,13 +1255,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }).ToListAsync(); // 最小的BTN 这个时候再转为int 避免查询报错 - var othenMinBTNCount= otherBTNStrList.Select(x => x.Answer.IsNullOrEmptyReturn0()).Min(); + var otherMinBTNCount= otherBTNStrList.Select(x => x.Answer.IsNullOrEmptyReturn0()).Min(); + + + // [(V3 - BTN - Min(V2 - BTN、V1 - BTN、BL - BTN)] 小于当0计算 + + var btnValue = thisBTN - otherMinBTNCount; + + if (btnValue < 0) + { + btnValue = 0; + } // 历史有PD if (pdTaskList.Count() > 0) { // 当前访视:自治疗后第二个访视点以来持续的新骨变数量 + [(V3 - BTN - Min(V2 - BTN、V1 - BTN、BL - BTN)] + 新病灶 >= 2 - if (thisNewBoneLesionsCount + thisBTN - othenMinBTNCount + thisNewLesionsCount >= 2) + + if (thisNewBoneLesionsCount + btnValue + thisNewLesionsCount >= 2) { result.IsPD = true; } @@ -1301,9 +1313,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate // V3与V2的间隔 >= 6周 // 按上面条件写三个if看着清晰点 - if (lastNewLesionsCount + lastBTN - lastTwoBTN >= 2) + + var lastBtnSubMin = lastBTN - lastTwoBTN; + if (lastBtnSubMin < 0) { - if (thisNewBoneLesionsCount + thisBTN - othenMinBTNCount + thisNewLesionsCount >= 2) + lastBtnSubMin = 0; + } + + if (lastNewLesionsCount + lastBtnSubMin >= 2) + { + if (thisNewBoneLesionsCount + btnValue + thisNewLesionsCount >= 2) { if (daysBetween >= 42) {