diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs index c63e757d2..b89ece8e1 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs @@ -32,7 +32,21 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool IsApplyHeavyReading { get; set; } = false; } - public class GetIRMedicalFeedbackListInDto:PageInput + public class GetNextIRMedicalFeedbackInDto + { + /// + /// 项目Id + /// + [NotDefault] + public Guid TrialId { get; set; } + + public Guid TrialReadingCriterionId { get; set; } + + public Guid SubjectId { get; set; } + } + + + public class GetIRMedicalFeedbackListInDto:PageInput { /// /// 项目Id @@ -43,7 +57,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool? IsUrgent { get; set; } - public MedicalReviewAuditState? AuditState { get; set; } + public Guid? SubjectId { get; set; } + + + public MedicalReviewAuditState? AuditState { get; set; } public string SubjectCode { get; set; } = string.Empty; @@ -78,7 +95,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool? IsInvalid { get; set; } public Guid? TrialReadingCriterionId { get; set; } - } + + /// + /// 获取不加急的 + /// + public bool IsNotHaveSigned { get; set; } = false; + + } public class GetIRMedicalFeedbackListOutDto { diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index b59c45897..3a16532c3 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -780,22 +780,71 @@ namespace IRaCIS.Core.Application.Service return ResponseOutput.Result(result); } - /// - /// 获取IR医学审核信息 + /// 获取下一个IR医学反馈 /// /// /// + /// [HttpPost] + public async Task GetNextIRMedicalFeedback(GetNextIRMedicalFeedbackInDto inDto) + { + var list = await GetIRMedicalFeedbackList(new GetIRMedicalFeedbackListInDto() + { + TrialId=inDto.TrialId, + AuditState= MedicalReviewAuditState.Auditing, + TrialReadingCriterionId=inDto.TrialReadingCriterionId, + SubjectId=inDto.SubjectId, + PageIndex=1, + PageSize=1, + }); + + + if (list.CurrentPageData.Count() == 0) + { + list = await GetIRMedicalFeedbackList(new GetIRMedicalFeedbackListInDto() + { + TrialId = inDto.TrialId, + AuditState = MedicalReviewAuditState.Auditing, + TrialReadingCriterionId = inDto.TrialReadingCriterionId, + PageIndex = 1, + PageSize = 1, + }); + } + + + if (list.CurrentPageData.Count() > 0) + { + return list.CurrentPageData[0]; + } + else + { + throw new BusinessValidationFailedException(_localizer["MedicalReview_IRFinish"], ApiResponseCodeEnum.CloseCurrentWindows); + } + + + + + + } + + /// + /// 获取IR医学审核信息 + /// + /// + /// + [HttpPost] public async Task> GetIRMedicalFeedbackList(GetIRMedicalFeedbackListInDto inDto) { var taskMedicalReviewquery = _taskMedicalReviewRepository.Where(x => x.TrialId == inDto.TrialId).Include(x => x.VisitTask) .Where(x => x.VisitTask.DoctorUserId == _userInfo.Id) .Where(x => x.IsHaveQuestion) .WhereIf(!inDto.TaskBlindName.IsNullOrEmpty(), x => x.VisitTask.TaskBlindName == inDto.TaskBlindName) - .WhereIf(inDto.IsUrgent != null, x => x.VisitTask.IsUrgent == inDto.IsUrgent!) + .WhereIf(inDto.SubjectId != null, x => x.VisitTask.SubjectId == inDto.SubjectId!) + .WhereIf(inDto.IsUrgent != null, x => x.VisitTask.IsUrgent == inDto.IsUrgent!) .WhereIf(inDto.AuditState != null, x => x.AuditState == inDto.AuditState!) - .WhereIf(inDto.ReadingCategory != null, x => x.VisitTask.ReadingCategory == inDto.ReadingCategory!) + .WhereIf(inDto.IsNotHaveSigned, x => x.AuditState != MedicalReviewAuditState.HaveSigned) + .WhereIf(inDto.ReadingCategory != null, x => x.VisitTask.ReadingCategory == inDto.ReadingCategory!) .WhereIf(inDto.AuditAdviceEnum != null, x => x.AuditAdviceEnum == inDto.AuditAdviceEnum!) .WhereIf(inDto.DoctorUserIdeaEnum != null, x => x.DoctorUserIdeaEnum == inDto.DoctorUserIdeaEnum!) .WhereIf(inDto.IsClosedDialog != null, x => x.IsClosedDialog == inDto.IsClosedDialog!)