diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 7aa0e370d..8f4304b5c 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -2414,17 +2414,17 @@ namespace IRaCIS.Core.Application.Service.Common //、裁判量J:所有完成阅片(R1和R2均完成)的阅片期里面触发裁判的阅片期数量; //2、总样本量Q:R1,R2均完成阅片的阅片期数量; - // 有阅片期没有全局 和有阅片期有全局,主要变化点在于 t.ReadingCategory == ReadingCategory.Global 变成了 t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum) + // 有阅片期没有全局 和有阅片期有全局,主要变化点在于 t.ReadingCategory == ReadingCategory.Global 变成了 t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId==trialReadingCriterionId) exportInfo.ReadingPeriodCount = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) //找到阅片期已阅片完 - .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum)) + .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId == trialReadingCriterionId)) .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }) .Where(g => g.Count() == 2).Select(g => g.Key.VisitTaskNum).Distinct().Count(); exportInfo.judgeReadingPeriodCount = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) //找到阅片期已阅片完 - .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum)) + .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId == trialReadingCriterionId)) .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }) //裁判不要求做完 .Where(g => g.Count() == 2 && g.Any(c => c.JudgeVisitTaskId != null)).Select(g => g.Key.VisitTaskNum).Distinct().Count(); @@ -2443,11 +2443,11 @@ namespace IRaCIS.Core.Application.Service.Common FullName = g.Key.FullName, //触发裁判的阅片期的数量 并且裁判要求做完 - TotalJudgeCount = g.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum) + TotalJudgeCount = g.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId == trialReadingCriterionId) && t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) .Select(t => t.VisitTaskNum).Distinct().Count(), - JudgeAgreeCount = g.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum) + JudgeAgreeCount = g.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId == trialReadingCriterionId) && t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned && t.JudgeVisitTask.JudgeResultTaskId == t.Id) .Select(t => t.VisitTaskNum).Distinct().Count(), @@ -2463,16 +2463,20 @@ namespace IRaCIS.Core.Application.Service.Common //1、裁判量M:所有完成阅片病例 最后一个阅片期触发裁判的受试者数量; //2、总样本量N:R1,R2均完成阅片(至少一个阅片期)的受试者数量; - exportInfo.SubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => - t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned) - .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Any() - ).Count(); + exportInfo.SubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId) + .Where(t => t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) + //找到两个人完成的阅片期 + .Where(t => t.ReadingCategory == ReadingCategory.Global) + .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Any()) + .Count(); //最后一个已完成的全局 没产生裁判 (之前有裁判),不算入裁判量 - exportInfo.judgeSubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => - t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned) - .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2 && g.Key.VisitTaskNum == g.Max(t => t.VisitTaskNum)).Any(g => g.Any(t => t.JudgeVisitTaskId != null)) - ).Count(); + exportInfo.judgeSubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId) + .Where(t => t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) + .Where(t => t.ReadingCategory == ReadingCategory.Global) + .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2 && g.Key.VisitTaskNum == g.Max(t => t.VisitTaskNum)) + .Any(g => g.Any(t => t.JudgeVisitTaskId != null))) + .Count(); exportInfo.DoctorSubjectStatList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) .GroupBy(t => new { t.DoctorUserId, t.DoctorUser.UserName, t.DoctorUser.FullName }) @@ -2490,8 +2494,7 @@ namespace IRaCIS.Core.Application.Service.Common // G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准 JudgeAgreeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned) .Where(t => t.VisitTaskNum == g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned).Max(t => t.VisitTaskNum) - && t.JudgeVisitTask.JudgeResultTaskId == t.Id - ) + && t.JudgeVisitTask.JudgeResultTaskId == t.Id) .Select(t => t.SubjectId).Distinct().Count(), }).ToList(); @@ -2538,39 +2541,21 @@ namespace IRaCIS.Core.Application.Service.Common else { - - exportInfo.SubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => - t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) - .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Any(g => t.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == g.Key.VisitTaskNum)) - ).Count(); - - #region 测试 - //var test = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => - // t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) - // //找到两个人完成的阅片期 - // .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Any(g => g.Count() == 2 && t.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == g.Key.VisitTaskNum)) - // ).Select(t=>new - // { - // dd= t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) - // //找到两个人完成的阅片期 - // .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2 && t.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == g.Key.VisitTaskNum)) - // .Select(g=>new - // { - // g.Key.VisitTaskNum, - // List= g.ToList() - // }).ToList() - // }).ToList(); - #endregion + exportInfo.SubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId) + .Where(t => t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) + //找到两个人完成的阅片期 + .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId == trialReadingCriterionId)) + .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Any()) + .Count(); //最后一个已完成的全局 没产生裁判 (之前有裁判),不算入裁判量 - exportInfo.judgeSubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t => - t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) - //找到两个人完成的阅片期 - .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2 && t.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == g.Key.VisitTaskNum)) - - .Any(g => g.Any(t => t.JudgeVisitTaskId != null)) - ).Count(); + exportInfo.judgeSubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId) + .Where(t => t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned) + .Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum + addReadingPeriodNum == t.VisitTaskNum && t.TrialReadingCriterionId == trialReadingCriterionId)) + .GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2 && g.Key.VisitTaskNum == g.Max(t => t.VisitTaskNum)) + .Any(g => g.Any(t => t.JudgeVisitTaskId != null))) + .Count(); #region 按照受试者维度统计