|
|
|
|
@ -1,5 +1,4 @@
|
|
|
|
|
using IRaCIS.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Application.ViewModel;
|
|
|
|
|
using IRaCIS.Core.Domain.Share;
|
|
|
|
|
using IRaCIS.Core.Infra.EFCore.Common;
|
|
|
|
|
@ -36,21 +35,16 @@ public class TrialStatService(
|
|
|
|
|
|
|
|
|
|
var list = await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new VisitFinishedStatViewModel()
|
|
|
|
|
{
|
|
|
|
|
UploadedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.SubmitState == SubmitStateEnum.Submitted).Count(),
|
|
|
|
|
QCFinishedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
|
|
|
|
|
CheckFinishedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
|
|
|
|
|
UploadedCount = t.SubjectVisitList.Where(t => t.SubmitState == SubmitStateEnum.Submitted).Count(),
|
|
|
|
|
QCFinishedCount = t.SubjectVisitList.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
|
|
|
|
|
CheckFinishedCount = t.SubjectVisitList.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
|
|
|
|
|
|
|
|
|
|
CriterionList = t.TrialReadingCriterionList.Where(t => inQuery.TrialReadingCriterionId != null ? t.Id == inQuery.TrialReadingCriterionId : true)
|
|
|
|
|
.Select(t => new VisitReadingCriterionInfo()
|
|
|
|
|
{
|
|
|
|
|
TrialReadingCriterionId = t.Id,
|
|
|
|
|
TrialReadingCriterionName = t.CriterionName,
|
|
|
|
|
ReadingFinishedCount = t.VisitTaskList
|
|
|
|
|
.Where(t => inQuery.TrialSiteId != null ? t.Subject.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false
|
|
|
|
|
ReadingFinishedCount = t.VisitTaskList.Where(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false
|
|
|
|
|
&& t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit)
|
|
|
|
|
.GroupBy(t => t.SourceSubjectVisitId)
|
|
|
|
|
.Where(g => t.ReadingType == ReadingMethod.Double ? g.Count() == 2 : true)
|
|
|
|
|
@ -79,23 +73,17 @@ public class TrialStatService(
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QCQuestion_ClosedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed).Count(),
|
|
|
|
|
QCQuestion_ClosedCount = t.SubjectVisitList.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed).Count(),
|
|
|
|
|
|
|
|
|
|
QCQuestion_IngCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed == false).Count(),
|
|
|
|
|
QCQuestion_IngCount = t.SubjectVisitList.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed == false).Count(),
|
|
|
|
|
|
|
|
|
|
CheckQuestion_ClosedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.CheckChallengeState == CheckChanllengeTypeEnum.Closed).Count(),
|
|
|
|
|
CheckQuestion_IngCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.CheckChallengeState != CheckChanllengeTypeEnum.Closed).Count(),
|
|
|
|
|
CheckQuestion_ClosedCount = t.SubjectVisitList.Where(t => t.CheckChallengeState == CheckChanllengeTypeEnum.Closed).Count(),
|
|
|
|
|
CheckQuestion_IngCount = t.SubjectVisitList.Where(t => t.CheckChallengeState != CheckChanllengeTypeEnum.Closed).Count(),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MedicalReviewQuestion_ClosedCount = t.TaskMedicalReviewList.Where(t => inQuery.TrialSiteId != null ? t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog).Count(),
|
|
|
|
|
MedicalReviewQuestion_ClosedCount = t.TaskMedicalReviewList.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog).Count(),
|
|
|
|
|
|
|
|
|
|
MedicalReviewQuestion_IngCount = t.TaskMedicalReviewList.Where(t => inQuery.TrialSiteId != null ? t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId : true)
|
|
|
|
|
.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog == false).Count(),
|
|
|
|
|
MedicalReviewQuestion_IngCount = t.TaskMedicalReviewList.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog == false).Count(),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}).ToListAsync();
|
|
|
|
|
@ -144,7 +132,7 @@ public class TrialStatService(
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var query = _visitTaskRepository.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
|
|
|
|
|
var query = _visitTaskRepository
|
|
|
|
|
.Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
|
|
|
|
|
|
|
|
|
|
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
|
|
|
|
|
@ -171,7 +159,6 @@ public class TrialStatService(
|
|
|
|
|
JudgeNote = t.ReadingCategory == ReadingCategory.Judge ? t.JudgeResultRemark : "",
|
|
|
|
|
SubjectCriterionReadingPeriodVisitNumList = t.Subject.ReadModuleList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading).Select(c => c.SubjectVisit.VisitNum).ToList(),
|
|
|
|
|
|
|
|
|
|
DictionaryCode = t.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == questionType).Select(t=>t.ReadingQuestionTrial.DictionaryCode).FirstOrDefault(),
|
|
|
|
|
//整体肿瘤评估答案
|
|
|
|
|
OverallTumorEvaluation = t.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == questionType).FirstOrDefault()!.Answer
|
|
|
|
|
});
|
|
|
|
|
@ -200,7 +187,6 @@ public class TrialStatService(
|
|
|
|
|
//判断subject的逻辑需要确认,这么多次访视任务,有的符合,有的不符合,准则是什么?
|
|
|
|
|
return list.GroupBy(t => t.OverallTumorEvaluation).Select(g => new EfficacyEvaluationStatViewModel()
|
|
|
|
|
{
|
|
|
|
|
DictionaryCode=g.FirstOrDefault()?.DictionaryCode,
|
|
|
|
|
OverallTumorEvaluation = g.Key,
|
|
|
|
|
SubjectCount = g.Select(t => t.SubjectId).Distinct().Count()
|
|
|
|
|
}).ToList();
|
|
|
|
|
|