From 7523f646fe2f59f66cca6aefbd840730f3a853e9 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 5 Jan 2026 16:26:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9orr=20=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/TrialSiteUser/TrialStatService.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) 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 {