diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs index bcd214473..716a6b373 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs @@ -456,7 +456,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate List calculateList = new List() { // EEM求和 - new ReadingCalculateData (){QuestionType=QuestionType.EEMSun,GetDecimalNullFun=GetEEM}, + new ReadingCalculateData (){QuestionType=QuestionType.EEMSum,GetDecimalNullFun=GetEEM}, // (EEM-Lumen)求和 new ReadingCalculateData (){QuestionType=QuestionType.EEMLumenSum,GetDecimalNullFun=GetEEMLumenSum}, @@ -586,7 +586,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate public async Task GetEEM(ReadingCalculateDto inDto) { return inDto.QuestionInfo.Where(x => x.LesionType == LesionType.MatchValues).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList) - .Where(x => x.QuestionMark == QuestionMark.ElasticAreaDiffValue).Select(x => x.Answer.IsNullOrEmptyReturn0()).Sum(); + .Where(x => x.QuestionMark == QuestionMark.ElasticArea).Select(x => x.Answer.IsNullOrEmptyReturn0()).Sum(); } @@ -597,14 +597,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// public async Task GetEEMLumenSum(ReadingCalculateDto inDto) { - var eMM= await GetEEM(inDto); - var lumenAreaSum = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.MatchValues).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList) - .Where(x => x.QuestionMark == QuestionMark.LumenArea).Select(x => x.Answer.IsNullOrEmptyReturn0()).Sum(); - if (eMM == 0 || lumenAreaSum == 0) - { - return null; - } - return eMM / lumenAreaSum; + return inDto.QuestionInfo.Where(x => x.LesionType == LesionType.MatchValues).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList) + .Where(x => x.QuestionMark == QuestionMark.ElasticAreaDiffValue).Select(x => x.Answer.IsNullOrEmptyReturn0()).Sum(); } @@ -630,18 +624,23 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate /// /// 冠状动脉粥样硬化体积百分比(PAV) /// + /// + /// (EEM-Lumen)求和/EEM求和✖️100,单位% + /// /// /// public async Task GetPAV(ReadingCalculateDto inDto) { - var result =await GetEEMLumenSum(inDto); - if (result == null) + var eEMLumenSum = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.EEMLumenSum).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); + var eEMSum = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.EEMSum).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); + + if (eEMSum == 0) { return null; } else { - return result.Value * 200; + return eEMLumenSum/ eEMSum * 100+100; } } @@ -653,6 +652,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate public async Task GetNTAV(ReadingCalculateDto inDto) { var result = await GetNTAVEEMLumenSumOrRetraceImageCount(inDto); + var medianFrame= inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.MedianFrame).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); if (result == null|| medianFrame==0) { diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs index 0a5391f2a..5d498ca23 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs @@ -634,15 +634,38 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } - ///// - ///// 计算NTAV的EEM - ///// - ///// - ///// - //public async Task GetEEM(ReadingCalculateDto inDto) - //{ - // var tableQuestion = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.TargetLesion).SelectMany(x => x.TableRowInfoList).ToList(); - //} + /// + /// 匹配动脉段最小FCT + /// + /// + /// + public async Task GetAllMinFCT(ReadingCalculateDto inDto) + { + + var allMinFCT = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.FCT).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList) + .Where(x => x.QuestionMark == QuestionMark.MinFCT).Select(x => x.Answer.IsNullOrEmptyReturn0()).Min(); + if (allMinFCT == 0) + { + return null; + } + return allMinFCT; + } + + /// + /// 所有FCT最小值中的平均值 + /// + /// + /// + public async Task GetAvgMinFCT(ReadingCalculateDto inDto) + { + var allMinFCT = inDto.QuestionInfo.Where(x => x.LesionType == LesionType.FCT).SelectMany(x => x.TableRowInfoList).SelectMany(x => x.TableQuestionList) + .Where(x => x.QuestionMark == QuestionMark.MinFCT).Select(x => x.Answer.IsNullOrEmptyReturn0()).Average(); + if (allMinFCT == 0) + { + return null; + } + return allMinFCT; + } #region 将上一次的访视病灶添加到这一次 diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 89fcd33e5..2bfd71ae7 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -2458,7 +2458,7 @@ public enum SUVChangeVSBaseline /// /// EEM求和 /// - EEMSun = 1005, + EEMSum = 1005, /// /// (EEM-Lumen)求和