diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 8a9e4ad66..b936e7141 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1375,7 +1375,7 @@ - 与前一访视SOD相比变化量 + 与触发iRECIST访视相比SOD变化量 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs index 636b6fccc..9116e307c 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IRECIST1Point1CalculateService.cs @@ -1321,16 +1321,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } #endregion - #region 与前一访视SOD相比变化量 + #region 与触发iRECIST访视相比SOD变化量 /// - /// 与前一访视SOD相比变化量 + /// 与触发iRECIST访视相比SOD变化量 /// /// /// public async Task GetComparedTriggeringSODChange(ReadingCalculateDto inDto) { - var lastTaskId = await this.GetLastVisitTaskId(inDto); - var lastSOD = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0(); + var firstChangeTaskId = await this.GetFirstChangeTaskId(inDto); + var firstChangeSOD = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstChangeTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SOD).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0(); var value = await GetSODData(inDto); @@ -1338,7 +1338,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { return null; } - return value.NullChange0() - lastSOD; + return value.NullChange0() - firstChangeSOD; } #endregion @@ -2076,7 +2076,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate item.TableQuestionList.Any(x => x.QuestionMark == QuestionMark.IsLymph && x.Answer.EqEnum(YesOrNoOrNa.Yes)) ); - data.ExixtsOrLessNoLymphTarget = data.ExixtsLymphTarget || + data.ExixtsOrLessNoLymphTarget = data.ExixtsOrLessNoLymphTarget || ( ( @@ -2090,7 +2090,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } - NewTargetLesionAssessment? result = null; + NewTargetLesionAssessment? result = NewTargetLesionAssessment.ND; // if(所有新靶病灶消失或一直不存在任何新靶病灶) if(data.NotExistsNewTargetLesion||data.AllVanish) @@ -2105,7 +2105,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate result = NewTargetLesionAssessment.iCPD; } // else if (上一访视新靶病灶评估为“iCPD”&& (当有“存在”状态的淋巴结新靶病灶||当有“存在”或“太小”状态的非淋巴结新靶病灶)) - else if (data.LastTaskNewTargetLesion.EqEnum(NewTargetLesionAssessment.iCPD) && data.ExixtsLymphTarget && data.ExixtsOrLessNoLymphTarget) + else if (data.LastTaskNewTargetLesion.EqEnum(NewTargetLesionAssessment.iCPD) &&( data.ExixtsLymphTarget || data.ExixtsOrLessNoLymphTarget)) { // 疗效为 iCPD result = NewTargetLesionAssessment.iCPD; @@ -2827,6 +2827,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate && (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.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.ND)) ) && ( inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.NewLesionEvaluation && x.Answer.EqEnum(NewLesionAssessment.ND))