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;