修改导出 患者裁判率
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-12-10 17:07:23 +08:00
parent 30f41ba270
commit e147c2a370
1 changed files with 37 additions and 92 deletions

View File

@ -2413,7 +2413,7 @@ namespace IRaCIS.Core.Application.Service.Common
// 有阅片期没有全局 和有阅片期有全局,主要变化点在于 t.ReadingCategory == ReadingCategory.Global 变成了 t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId==trialReadingCriterionId)
// 或者使用 isGlobalReading ? t.ReadModule.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) : t.SourceSubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum)
#region 可以统一部分
#region 患者统计部分
//1、裁判量M所有完成阅片病例 最后一个阅片期触发裁判的受试者数量;
//2、总样本量NR1,R2均完成阅片至少一个阅片期的受试者数量
@ -2434,6 +2434,34 @@ namespace IRaCIS.Core.Application.Service.Common
.Any(g => g.Any(t => t.JudgeVisitTaskId != null)))
.Count();
exportInfo.DoctorSubjectStatList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned)
//筛选全局 已完成的任务
.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId))
.GroupBy(t => new { t.DoctorUserId, t.DoctorUser.UserName, t.DoctorUser.FullName })
.Select(g => new DoctorJudgeRatio()
{
DoctorUserId = g.Key.DoctorUserId,
UserName = g.Key.UserName,
FullName = g.Key.FullName,
//最后一个阅片期触发裁判 且裁判已阅
TotalJudgeCount = g.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Where(t => t.VisitTaskNum == g.Where(c => c.SubjectId == t.SubjectId && c.JudgeVisitTaskId != null && c.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Max(t => t.VisitTaskNum))
.Select(t => t.SubjectId).Distinct().Count(),
// G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准
JudgeAgreeCount = g.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Where(t => t.VisitTaskNum == g.Where(c => c.SubjectId == t.SubjectId && c.JudgeVisitTaskId != null && c.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Max(t => t.VisitTaskNum))
.Where(t => t.JudgeVisitTask.JudgeResultTaskId == t.Id)
.Select(t => t.SubjectId).Distinct().Count(),
}).ToList();
#endregion
#region 阅片期部分
exportInfo.ReadingPeriodCount = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned)
//找到阅片期已阅片完
.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId))
@ -2475,91 +2503,8 @@ namespace IRaCIS.Core.Application.Service.Common
}).ToList();
#endregion
if (criterion.IsGlobalReading)
{
#region 按照受试者维度统计
exportInfo.DoctorSubjectStatList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned)
.GroupBy(t => new { t.DoctorUserId, t.DoctorUser.UserName, t.DoctorUser.FullName })
.Select(g => new DoctorJudgeRatio()
{
DoctorUserId = g.Key.DoctorUserId,
UserName = g.Key.UserName,
FullName = g.Key.FullName,
//最后一个阅片期触发裁判 且裁判已阅
TotalJudgeCount = g
.Where(t => t.ReadingCategory == ReadingCategory.Global)
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Where(t => t.VisitTaskNum == g.Where(t => t.ReadingCategory == ReadingCategory.Global)
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Max(t => t.VisitTaskNum))
.Select(t => t.SubjectId).Distinct().Count(),
// G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准
JudgeAgreeCount = g
.Where(t => t.ReadingCategory == ReadingCategory.Global)
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Where(t => t.VisitTaskNum == g.Where(t => t.ReadingCategory == ReadingCategory.Global)
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Max(t => t.VisitTaskNum))
.Where(t=>t.JudgeVisitTask.JudgeResultTaskId == t.Id)
.Select(t => t.SubjectId).Distinct().Count(),
}).ToList();
#endregion
}
else
{
#region 按照受试者维度统计
exportInfo.DoctorSubjectStatList = _visitTaskRepository.Where(comonTaskFilter).Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned)
.GroupBy(t => new { t.DoctorUserId, t.DoctorUser.UserName, t.DoctorUser.FullName })
.Select(g => new DoctorJudgeRatio()
{
DoctorUserId = g.Key.DoctorUserId,
UserName = g.Key.UserName,
FullName = g.Key.FullName,
//最后一个阅片期触发裁判 且裁判已阅
TotalJudgeCount = g
.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId))
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Where(t => t.VisitTaskNum == g.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId))
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Max(t => t.VisitTaskNum))
.Select(t => t.SubjectId).Distinct().Count(),
// G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准
JudgeAgreeCount = g
.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId))
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Where(t => t.VisitTaskNum == g.Where(t => t.Subject.ReadModuleList.Any(c => c.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) && c.TrialReadingCriterionId == trialReadingCriterionId))
.Where(t => t.JudgeVisitTaskId != null && t.JudgeVisitTask.ReadingTaskState == ReadingTaskState.HaveSigned)
.Max(t => t.VisitTaskNum))
.Where(t => t.JudgeVisitTask.JudgeResultTaskId == t.Id)
.Select(t => t.SubjectId).Distinct().Count(),
}).ToList();
#endregion
}
return await ExcelExportHelper.DataExportAsync(StaticData.Export.ReadingPeriodJudgeRatio_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment);
}
else