diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index 7263e8e18..d994e4372 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -450,6 +450,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } + /// /// 自动计算 /// @@ -470,16 +471,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate new ReadingCalculateData (){QuestionType=QuestionType.SPD,GetDecimalFun=GetSPD}, // 与基线相比SPD变化的百分比 - new ReadingCalculateData (){QuestionType=QuestionType.SPDChange,GetDecimalFun=CompareBaselineSPD}, + new ReadingCalculateData (){QuestionType=QuestionType.SPDChange,GetStringFun=CompareBaselineSPD}, // 与基线相比脾肿大增加的百分比 - new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusChange,GetDecimalFun=GetSplenoncusChange}, + new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusChange,GetStringFun=GetSplenoncusChange}, // 与最低点相比脾脏垂直径长度的增加值 - new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusAdd,GetDecimalFun=GetSplenoncusAdd}, + new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusAdd,GetStringFun=GetSplenoncusAdd}, // 与基线相比脾垂直径变化值 - new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusDiameterChange,GetDecimalFun=GetSplenoncusDiameterChange}, + new ReadingCalculateData (){QuestionType=QuestionType.SplenoncusDiameterChange,GetStringFun=GetSplenoncusDiameterChange}, // 脾肿垂直径最低点访视 new ReadingCalculateData (){QuestionType=QuestionType.LowestSplenoncusVisit,GetStringFun=GetLowestSplenoncusVisit}, @@ -1622,11 +1623,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// /// /// - public async Task CompareBaselineSPD(ReadingCalculateDto inDto) + public async Task CompareBaselineSPD(ReadingCalculateDto inDto) { if (inDto.IsBaseLine) { - return 0; + return "NA"; } var baseLineTaskId = await GetBaseLineTaskId(inDto); @@ -1635,11 +1636,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SPD).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); if (baseLineSpd != 0) { - return (presentSpd - baseLineSpd)*100 / baseLineSpd; + return ReserveDecimal((presentSpd - baseLineSpd)*100 / baseLineSpd,inDto.DigitPlaces); } else { - return 0; + return "NA"; } } #endregion @@ -1651,24 +1652,24 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// /// /// - public async Task GetSplenoncusChange(ReadingCalculateDto inDto) + public async Task GetSplenoncusChange(ReadingCalculateDto inDto) { if (inDto.IsBaseLine) { - return 0; + return "NA"; } var baseLineSpleenLength = await GetBaseLineSpleenLength(inDto); var presentSpleenLength = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); - if (baseLineSpleenLength - 130 != 0) + if (baseLineSpleenLength - 130 > 0&& presentSpleenLength>130) { - return (presentSpleenLength - 130 - (baseLineSpleenLength - 130))*100 / (baseLineSpleenLength - 130); + return ReserveDecimal((presentSpleenLength - 130 - (baseLineSpleenLength - 130))*100 / (baseLineSpleenLength - 130), inDto.DigitPlaces); } else { - return 0; + return "NA"; } } #endregion @@ -1680,17 +1681,17 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// /// /// - public async Task GetSplenoncusAdd(ReadingCalculateDto inDto) + public async Task GetSplenoncusAdd(ReadingCalculateDto inDto) { var TaskAnswer = await GetVisitTaskAnswerList(inDto); if (inDto.IsBaseLine) { - return 0; + return "NA"; } var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); var lowSplenoncus = TaskAnswer.OrderBy(x => x.SpleenLength).Select(x => x.SpleenLength).FirstOrDefault(); - return presentSpd - lowSplenoncus; + return (presentSpd - lowSplenoncus).ToString(); } @@ -1996,7 +1997,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { if (inDto.IsBaseLine) { - return SUVChangeVSBaseline.NotEvaluable.GetEnumInt(); + return SUVChangeVSBaseline.NA.GetEnumInt(); } if (inDto.QuestionInfo.Any(x => x.QuestionType == QuestionType.ExistPET && x.Answer == ReadingYesOrNo.No.GetEnumInt())) @@ -2427,19 +2428,19 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// /// /// - public async Task GetSplenoncusDiameterChange(ReadingCalculateDto inDto) + public async Task GetSplenoncusDiameterChange(ReadingCalculateDto inDto) { if (inDto.IsBaseLine) { - return 0; + return "NA"; } var baseLineTaskId = await GetBaseLineTaskId(inDto); var presentSpleenLength = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); var baseLineSpleenLength = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == baseLineTaskId && x.ReadingQuestionTrial.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0(); - return presentSpleenLength - baseLineSpleenLength; + return (presentSpleenLength - baseLineSpleenLength).ToString(); } @@ -2879,7 +2880,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate #endregion - + /// + /// 保留小数 + /// + /// + /// + /// + public string ReserveDecimal (decimal answer, int digitPlaces) + { + return decimal.Round(answer, digitPlaces).ToString(); + } #region 脾脏评估 diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 2fccb06c7..26e74b5a4 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -1076,6 +1076,7 @@ public enum SUVChangeVSBaseline /// NotEvaluable = 4, + NA=5, } ///