diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs index fe6cdc35d..97d8e7634 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs @@ -4,6 +4,7 @@ using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore.Common; using Microsoft.AspNetCore.Mvc; +using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Linq; @@ -297,7 +298,13 @@ public class TrialStatService( // (cr +pr) /总人数 - var crAddPr = translateList.Where(t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR").Sum(t => t.SubjectCount); + var crAddPr = translateList + .WhereIf(criterion.CriterionType != CriterionType.Lugano2014 && criterion.CriterionType != CriterionType.IRECIST1Point1, t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR") + .WhereIf(criterion.CriterionType == CriterionType.Lugano2014, t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR" + || t.OverallTumorEvaluation == "PMR/PR" || t.OverallTumorEvaluation == "CMR/CR") + .WhereIf(criterion.CriterionType == CriterionType.IRECIST1Point1, t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR" + || t.OverallTumorEvaluation == "iPR" || t.OverallTumorEvaluation == "iCR") + .Sum(t => t.SubjectCount); var orrPercent = totalSubjectCount > 0 ? ((decimal)crAddPr / totalSubjectCount * 100).ToString("0.00") + "%" @@ -318,9 +325,14 @@ public class TrialStatService( { var total = g.Count(); - var crPr = g.Count(x => - x.OverallTumorEvaluation == "CR" || - x.OverallTumorEvaluation == "PR"); + var crPr = g + .WhereIf(criterion.CriterionType != CriterionType.Lugano2014 && criterion.CriterionType != CriterionType.IRECIST1Point1, t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR") + .WhereIf(criterion.CriterionType == CriterionType.Lugano2014, t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR" + || t.OverallTumorEvaluation == "PMR/PR" || t.OverallTumorEvaluation == "CMR/CR") + .WhereIf(criterion.CriterionType == CriterionType.IRECIST1Point1, t => t.OverallTumorEvaluation == "PR" || t.OverallTumorEvaluation == "CR" + || t.OverallTumorEvaluation == "iPR" || t.OverallTumorEvaluation == "iCR") + .Count(); + return new TrialSiteOrrStat {