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,
}
///