diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 9484ed445..c2ebcf57e 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -2536,11 +2536,47 @@ + + + CRC 确认临床数据 + + + + + + + CRC 取消确认 + + + + + + + PM确认临床数据 + + + + + 临床数据问题 + + + 获取问题计算关系 + + + + + + + 获取计算问题 + + + + 获取系统临床数据预览 @@ -2682,11 +2718,16 @@ - + 临床级别 + + + 受试者ID + + 最晚拍片日期 @@ -2922,6 +2963,46 @@ 是否启用 + + + 项目临床数据Id + + + + + 问题名称 + + + + + 自定义计算标记 + + + + + 数值类型 + + + + + 单位 + + + + + 自定义单位 + + + + + 项目临床数据Id + + + + + 临床问题类型(分组,单选。) + + 系统临床数据Id @@ -2947,6 +3028,11 @@ 子问题 + + + 关联问题 + + 表格问题 @@ -3067,6 +3153,16 @@ 单位 + + + 自定义计算标记 + + + + + 自定义计算问题 + + 查询临床数据基类 @@ -3097,16 +3193,6 @@ 项目临床数据Id - - - 自定义计算标记 - - - - - 自定义计算问题 - - 获取系统临床数据 @@ -10576,9 +10662,9 @@ vvv - + - 重阅审批 + SPM 重阅审批 diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 61a9dcec5..cc5a8696e 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -871,6 +871,7 @@ namespace IRaCIS.Core.Application 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(), @@ -906,38 +907,70 @@ namespace IRaCIS.Core.Application /// [HttpPost] public async Task>> GetMIMMedicalCommentsToBeDoneList(MedicalCommentsToBeDoneQuery inQuery, - [FromServices] IRepository _taskMedicalReviewRepository) + [FromServices] IRepository _taskMedicalReviewRepository, + [FromServices] IRepository _trialReadingCriterionRepository) { + + #region 废弃不能对包含聚合或子查询的表达式执行聚合函数 + var query = _taskMedicalReviewRepository - .Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id)) - .Where(t => t.IsClosedDialog == false) - .GroupBy(t => new - { - t.TrialId, - t.Trial.ResearchProgramNo, - t.Trial.ExperimentName, - t.Trial.TrialCode, - t.VisitTask.TrialReadingCriterionId, - t.VisitTask.TrialReadingCriterion.CriterionName - }) - .Select(g => new MedicalCommentsToBeDoneDto() - { - TrialId = g.Key.TrialId, - ResearchProgramNo = g.Key.ResearchProgramNo, - ExperimentName = g.Key.ExperimentName, - TrialCode = g.Key.TrialCode, - CriterionName = g.Key.CriterionName, + .Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id)) + .Where(t => t.IsClosedDialog == false) + .GroupBy(t => new + { + t.TrialId, + t.Trial.ResearchProgramNo, + t.Trial.ExperimentName, + t.Trial.TrialCode, + t.VisitTask.TrialReadingCriterionId, + t.VisitTask.TrialReadingCriterion.CriterionName + }) + .Select(g => new MedicalCommentsToBeDoneDto() + { + TrialId = g.Key.TrialId, + ResearchProgramNo = g.Key.ResearchProgramNo, + ExperimentName = g.Key.ExperimentName, + TrialCode = g.Key.TrialCode, + CriterionName = g.Key.CriterionName, - UrgentCount = g.Where(u => u.VisitTask.IsUrgent - && u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count(), + UrgentCount = g.Where(u => u.VisitTask.IsUrgent).Select(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First()) + .Count(t => t.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer), - ToBeReplyedCount = g.Where(u => - u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count(), + ToBeReplyedCount = g.Select(t => t.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First()).Count(t => t.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer), - ToBeReviewedCount=g.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() + ToBeReviewedCount = g.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() - }); + }); + #endregion + //var query = _trialReadingCriterionRepository + // .Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id)) + // //.Where(t => t.IsClosedDialog == false) + // .GroupBy(t => new + // { + // t.TrialId, + // t.Trial.ResearchProgramNo, + // t.Trial.ExperimentName, + // t.Trial.TrialCode, + // t.VisitTask.TrialReadingCriterionId, + // t.VisitTask.TrialReadingCriterion.CriterionName + // }) + // .Select(g => new MedicalCommentsToBeDoneDto() + // { + // TrialId = g.Key.TrialId, + // ResearchProgramNo = g.Key.ResearchProgramNo, + // ExperimentName = g.Key.ExperimentName, + // TrialCode = g.Key.TrialCode, + // CriterionName = g.Key.CriterionName, + + // UrgentCount = g.Where(u => u.VisitTask.IsUrgent).Select(u=>u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First()) + // .Count(t=>t.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer), + + // ToBeReplyedCount = g.Select(t=>t.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First()).Count(t=>t.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer), + + // ToBeReviewedCount=g.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() + + // }); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(MedicalCommentsToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);