diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs index 3eb13abe8..2f127bad2 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs @@ -16,6 +16,7 @@ namespace IRaCIS.Core.Application; [ApiExplorerSettings(GroupName = "Trial")] public class TrialStatService( IRepository _trialRepository, + IRepository _readingTrialCriterionDictionaryRepository, IRepository _readingQuestionTrialRepository, IRepository _subjectVisitRepository, IRepository _trialDocumentRepository, @@ -119,7 +120,7 @@ public class TrialStatService( var trialReadingCriterionId = inQuery.TrialReadingCriterionId; //每次查询必须是单标准的 - var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionGroup, t.IsGlobalReading, t.IsArbitrationReading, t.IsOncologyReading, t.CriterionName, t.ArbitrationRule, t.TrialId }).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCriterionId).Select(t => new { t.Id, t.CriterionType, t.CriterionGroup, t.IsGlobalReading, t.IsArbitrationReading, t.IsOncologyReading, t.CriterionName, t.ArbitrationRule, t.TrialId }).FirstNotNullAsync(); if (criterion.CriterionGroup == CriterionGroup.Nontumorous) @@ -216,7 +217,7 @@ public class TrialStatService( ); //一定要两个人做完了,产生了裁判并且有结果的,否则就不算,并且排除基线 - list = list.Where(t => t.IsJudgeSelect == true && t.VisitTaskNum != 0 && t.ReadingCategory==ReadingCategory.Visit)//全局的答案已经放在对应访视上了 + list = list.Where(t => t.IsJudgeSelect == true && t.VisitTaskNum != 0 && t.ReadingCategory == ReadingCategory.Visit)//全局的答案已经放在对应访视上了 .GroupBy(t => t.SubjectCode).Select(g => g.OrderByDescending(t => t.VisitTaskNum).First()).ToList(); @@ -239,15 +240,18 @@ public class TrialStatService( // 先把 resultList 转成内存字典 var resultDict = resultList.ToDictionary(r => r.OverallTumorEvaluation, r => r.SubjectCodeList); + + // 查询字典表,先把数据拉出来到内存,再合并 - var translateList = _dictionaryRepository - .Where(t => t.Parent.Code == dicName) + var translateList = _readingTrialCriterionDictionaryRepository + .Where(t => t.ParentCode == dicName && t.CriterionId == criterion.Id) .Select(t => new { - t.Code, - t.Value, + t.Dictionary.Code, + t.Dictionary.Value, }) .ToList() + .Where(t => t.Code != "-1") .Select(t => new EfficacyEvaluationStatViewModel { DictionaryCode = dicName, @@ -267,7 +271,7 @@ public class TrialStatService( var pdInfo = translateList .WhereIf(criterion.CriterionType == CriterionType.IRECIST1Point1, t => t.OverallTumorEvaluation == "ICPD") - .WhereIf(criterion.CriterionType == CriterionType.IRECIST1Point1, t => t.OverallTumorEvaluation == "PD") + .WhereIf(criterion.CriterionType == CriterionType.RECIST1Point1, t => t.OverallTumorEvaluation == "PD") .FirstOrDefault(); var firstPdList = new List();