From 48ede0592672e74d0ef0fd2c214ae4b98f0bbd96 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 12 Jun 2023 15:23:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DTO/PersonalWorkstationViewModel.cs | 6 +- .../TrialSiteUser/PersonalWorkstation.cs | 76 +++++++++++-------- 2 files changed, 51 insertions(+), 31 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs index 863b85a5b..f017afe8d 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs @@ -149,6 +149,10 @@ namespace IRaCIS.Core.Application.Contracts public class IRImageReadingToBeDoneDto : TrialBaseInfoDto { + public Guid TrialReadingCriterionId { get; set; } + public string CriterionName { get; set; } + + public int? UrgentCount { get; set; } public int? UnReadCount { get; set; } @@ -167,7 +171,7 @@ namespace IRaCIS.Core.Application.Contracts public class MedicalCommentsToBeDoneDto : TrialBaseInfoDto { - + public Guid TrialReadingCriterionId { get; set; } public string CriterionName { get; set; } public int? UrgentCount { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 7a77d8697..1a86ffcbc 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -555,45 +555,61 @@ namespace IRaCIS.Core.Application [FromServices] IRepository _trialRepository) { - var query = _trialRepository - .Select(t => new IRImageReadingToBeDoneDto() - { - TrialId = t.Id, - ResearchProgramNo = t.ResearchProgramNo, - ExperimentName = t.ExperimentName, - TrialCode = t.TrialCode, + //var query = _trialRepository + // .Select(t => new IRImageReadingToBeDoneDto() + // { + // TrialId = t.Id, + // ResearchProgramNo = t.ResearchProgramNo, + // ExperimentName = t.ExperimentName, + // TrialCode = t.TrialCode, - UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) - .Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.SubjectVisit.IsUrgent).Count(), + // UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) + // .Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.SubjectVisit.IsUrgent).Count(), - UnReadCount=t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)) - .Where(y=>y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)) + // UnReadCount=t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect) + // // 前序 不存在 未一致性核查未通过的 + // .Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum)) + // //前序 不存在 未生成任务的访视 + // .Where(t=>t.TrialReadingCriterion.IsAutoCreate == false? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum):true) + + // .Where(y=>y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)) + // .Count(), + + // HaveSignedCount = t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id + // && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) + // && t.ReadingTaskState==ReadingTaskState.HaveSigned).Count() + + // }); - .Count(), + var query = _visitTaskRepository.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)) + .GroupBy(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.Trial.ExperimentName,t.TrialReadingCriterionId,t.TrialReadingCriterion.CriterionName }) + .Select(g => new IRImageReadingToBeDoneDto() + { + TrialId = g.Key.TrialId, + ResearchProgramNo = g.Key.ResearchProgramNo, + ExperimentName = g.Key.ExperimentName, + TrialCode = g.Key.TrialCode, + CriterionName = g.Key.CriterionName, + TrialReadingCriterionId = g.Key.TrialReadingCriterionId, - HaveSignedCount = t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id - && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) - && t.ReadingTaskState==ReadingTaskState.HaveSigned).Count() + //UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) + //.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.SubjectVisit.IsUrgent).Count(), - }); + UnReadCount = g.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect) + // 前序 不存在 未一致性核查未通过的 + .Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum)) + //前序 不存在 未生成任务的访视 + .Where(t => t.TrialReadingCriterion.IsAutoCreate == false ? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) : true) + .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)) + .Count(), - //var query = _visitTaskRepository.Where(t=>t.DoctorUserId==_userInfo.Id && (t.TaskState == TaskState.Effect ||t.TaskState==TaskState.Freeze)) - // .GroupBy(t=>new {t.SubjectId,t.TrialId,t.Subject.Code,t.Trial.ResearchProgramNo,t.Trial.ExperimentName, t.BlindSubjectCode}) - // .Select(t => new IRImageReadingToBeDoneDto() - // { - // TrialId = t.Id, - // ResearchProgramNo = t.ResearchProgramNo, - // ExperimentName = t.ExperimentName, - // TrialCode = t.TrialCode, - // UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) - // .Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.SubjectVisit.IsUrgent).Count(), - // ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) - // .Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(), + HaveSignedCount = g.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) + && t.ReadingTaskState==ReadingTaskState.HaveSigned).Count(), - // }); + }); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc); @@ -624,7 +640,7 @@ namespace IRaCIS.Core.Application ExperimentName = g.Key.ExperimentName, TrialCode = g.Key.TrialCode, CriterionName=g.Key.CriterionName, - + TrialReadingCriterionId=g.Key.TrialReadingCriterionId, UrgentCount = g.Where(u => u.VisitTask.IsUrgent && u.ReadingMedicalReviewDialogList.OrderByDescending(l=>l.CreateTime).First().UserTypeEnumInt==(int) UserTypeEnum.MIM).Count(),