修改导出 患者裁判率
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) // 有阅片期没有全局 和有阅片期有全局,主要变化点在于 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) // 或者使用 isGlobalReading ? t.ReadModule.SubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum) : t.SourceSubjectVisit.VisitNum == (t.VisitTaskNum - addReadingPeriodNum)
#region 可以统一部分 #region 患者统计部分
//1、裁判量M所有完成阅片病例 最后一个阅片期触发裁判的受试者数量; //1、裁判量M所有完成阅片病例 最后一个阅片期触发裁判的受试者数量;
//2、总样本量NR1,R2均完成阅片至少一个阅片期的受试者数量 //2、总样本量NR1,R2均完成阅片至少一个阅片期的受试者数量
@ -2434,6 +2434,34 @@ namespace IRaCIS.Core.Application.Service.Common
.Any(g => g.Any(t => t.JudgeVisitTaskId != null))) .Any(g => g.Any(t => t.JudgeVisitTaskId != null)))
.Count(); .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) 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)) .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(); }).ToList();
#endregion #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); return await ExcelExportHelper.DataExportAsync(StaticData.Export.ReadingPeriodJudgeRatio_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment);
} }
else else