裁判一致率
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-12-09 15:15:19 +08:00
parent 1417277cb1
commit 86692d220a
1 changed files with 30 additions and 6 deletions

View File

@ -1554,6 +1554,11 @@ namespace IRaCIS.Core.Application.Service.Common
if (subjectJudgeList.Count > 0)
{
//访视的标记先都默认为null
visitItem.IsTrigerJudge = null;
visitItem.IsJudgeSelect = null;
var maxFinishedJudge = subjectJudgeList.Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault();
var maxNotFinishedJudge = subjectJudgeList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault();
@ -1567,16 +1572,31 @@ namespace IRaCIS.Core.Application.Service.Common
{
if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum)
{
visitItem.IsTrigerJudge = false;
visitItem.IsJudgeSelect = null;
}
//大于当前未完成的全局裁判 后续可能有已完成的未产生裁判的全局 设置默认选择R1
else if (visitItem.VisitTaskNum <= latestFinishedReadingPeriodTaskNum)
{
//不存在裁判 将R1设置
if (visitItem.ArmEnum == Arm.DoubleReadingArm1)
{
visitItem.IsJudgeSelect = true;
visitItem.IsTrigerJudge = false;
}
else
{
visitItem.IsJudgeSelect = false;
visitItem.IsTrigerJudge = false;
}
}
else
{
//大于当前未完成的全局裁判 后续 肯定是未知的
visitItem.IsTrigerJudge = null;
visitItem.IsJudgeSelect = null;
}
}
//n个全局裁判都完成了那么以最后一次裁判选择的为准
else if (maxFinishedJudge != null && maxNotFinishedJudge == null)
@ -2410,7 +2430,8 @@ namespace IRaCIS.Core.Application.Service.Common
//2、总样本量NR1,R2均完成阅片至少一个阅片期的受试者数量
exportInfo.SubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t =>
t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Any(t => t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned)
t.SubjectVisitTaskList.AsQueryable().Where(comonTaskFilter).Where(t => t.ReadingCategory == ReadingCategory.Global && t.ReadingTaskState == ReadingTaskState.HaveSigned)
.GroupBy(t => new { t.SubjectId, t.SouceReadModuleId }).Where(g => g.Count() == 2).Any()
).Count();
exportInfo.judgeSubjectCount = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId).Where(t =>
@ -2429,7 +2450,10 @@ namespace IRaCIS.Core.Application.Service.Common
//触发裁判的受试者数量
TotalJudgeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null).Select(t => t.SubjectId).Distinct().Count(),
JudgeAgreeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null && t.JudgeVisitTask.JudgeResultTaskId == t.Id).Select(t => t.SubjectId).Distinct().Count(),
// G-2 G-4 可能选择的是不同的医生,要以最后一次选择的为准
JudgeAgreeCount = g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null
&& t.JudgeVisitTask.JudgeResultTaskId == t.Id && t.VisitTaskNum== g.Where(t => t.ReadingCategory == ReadingCategory.Global && t.JudgeVisitTaskId != null).Max(t => t.VisitTaskNum))
.Select(t => t.SubjectId).Distinct().Count(),
}).ToList();