From c958e49118d98f7e94a98ee4a48e07db6733c1c1 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 5 Jul 2023 17:50:31 +0800 Subject: [PATCH] S_014 --- .../ClinicalData/ClinicalAnswerService.cs | 38 +++++++++++++++---- .../Service/Reading/Dto/ClinicalAnswerDto.cs | 13 ++++++- .../DTO/PersonalWorkstationViewModel.cs | 4 ++ .../TrialSiteUser/PersonalWorkstation.cs | 27 +++++++++++++ .../Reading/ReadingPeriod/ReadModule.cs | 12 ++++-- IRaCIS.Core.Domain/Trial/Trial.cs | 2 + 6 files changed, 84 insertions(+), 12 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 68fef00a2..be0fdf01a 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -462,17 +462,41 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Ok(true); } - /// - /// 获取CRC确认列表 - /// - /// - /// - [HttpPost] + /// + /// 获取PM待确认列表 + /// + /// + /// + [HttpPost] + public async Task> GetPMConfirmList(GetPMConfirmListInDto inDto) + { + return await GetCRCConfirmList(new GetCRCConfirmListInDto() + { + TrialId = inDto.TrialId, + IsCRCConfirm = true, + IsPMConfirm = false, + PageIndex = inDto.PageIndex, + PageSize = inDto.PageSize, + Asc = inDto.Asc, + SortField = inDto.SortField, + TrialReadingCriterionId = inDto.TrialReadingCriterionId + + }); + } + + /// + /// 获取CRC确认列表 + /// + /// + /// + [HttpPost] public async Task> GetCRCConfirmList(GetCRCConfirmListInDto inDto) { var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId) .WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId) - .WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) + .WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm) + .WhereIf(inDto.IsPMConfirm != null, x => x.IsCRCConfirm == inDto.IsPMConfirm) + .WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId) .Select(x => new GetCRCConfirmListOutDto() { diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index aac6cfa29..e8e10dee6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -119,10 +119,21 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string Answer { get; set; } = string.Empty; } + public class GetPMConfirmListInDto: PageInput + { + public Guid TrialId { get; set; } + + public Guid TrialReadingCriterionId { get; set; } + } + public class GetCRCConfirmListInDto:PageInput { - public Guid? TrialReadingCriterionId { get; set; } + public bool? IsCRCConfirm { get; set; } + + public bool? IsPMConfirm { get; set; } + + public Guid? TrialReadingCriterionId { get; set; } public Guid? SubjectId { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs index 5f446672e..e7022b3b6 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs @@ -105,6 +105,10 @@ namespace IRaCIS.Core.Application.Contracts public int? ToBeApprovalCount { get; set; } } + public class GetPMClinicalDataToBeDoneListOutDto: TrialBaseInfoDto + { + public int? ToBeApprovalCount { get; set; } + } public class ReviewerSelectToBeDoneQuery : PageInput { diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index f69071b47..1b92caf81 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -293,6 +293,33 @@ namespace IRaCIS.Core.Application } + /// + /// 获取PM核对临床数据 + /// + /// + /// + [HttpPost] + public async Task>> GetPMClinicalDataToBeDoneList(ReviewerSelectToBeDoneQuery inQuery) + { + var query = _trialRepository + .Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id)) + .Select(t => new GetPMClinicalDataToBeDoneListOutDto() + { + TrialId = t.Id, + ResearchProgramNo = t.ResearchProgramNo, + ExperimentName = t.ExperimentName, + TrialCode = t.TrialCode, + + + ToBeApprovalCount = t.ReadModuleList.Where(u => u.IsCRCConfirm&&!u.IsPMConfirm).Count() + }); + + var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); + + + return ResponseOutput.Ok(result, new { ToBeApprovalCount = query.Sum(x=>x.ToBeApprovalCount) }); ; + } + #endregion diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs index fba287340..1be9cb363 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs @@ -119,11 +119,15 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("SubjectVisitId")] public SubjectVisit SubjectVisit { get; set; } + [JsonIgnore] + [ForeignKey("TrialId")] + public Trial Trial { get; set; } - /// - /// 阅片配置的类型 - /// - public ReadingSetType ReadingSetType { get; set; } + + /// + /// 阅片配置的类型 + /// + public ReadingSetType ReadingSetType { get; set; } diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs index 82d213ea8..989903670 100644 --- a/IRaCIS.Core.Domain/Trial/Trial.cs +++ b/IRaCIS.Core.Domain/Trial/Trial.cs @@ -53,6 +53,8 @@ namespace IRaCIS.Core.Domain.Models public List TrialSiteList { get; set; } = new List(); [JsonIgnore] public List TrialSiteUserList { get; set; } = new List(); + [JsonIgnore] + public List ReadModuleList { get; set; } = new List(); public Guid IndicationTypeId { get; set; } = Guid.Empty;