diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index be9329053..4aa316ac3 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -164,7 +164,7 @@ namespace IRaCIS.Core.Application.Image.QA throw new BusinessValidationFailedException("CRC申请重传的/QC同意重传的质疑,在CRC设置重传完成前不允许关闭质疑"); } - + #region 之前 @@ -840,7 +840,7 @@ namespace IRaCIS.Core.Application.Image.QA /// [HttpPut("{trialId:guid}/{subjectVisitId:guid}/{id:guid}/{type:int}")] [TypeFilter(typeof(TrialResourceFilter))] - public async Task UpdateModality(Guid id, Guid subjectVisitId, int type, [FromQuery] string modality, [FromQuery] string bodyPart) + public async Task UpdateModality(Guid id, Guid subjectVisitId, int type, [FromQuery] string modality, [FromQuery] string bodyPart) { var DicomSeriesdata = await _repository.GetQueryable().Where(x => x.StudyId == id).ToListAsync(); @@ -1116,7 +1116,7 @@ namespace IRaCIS.Core.Application.Image.QA var dbSubjectVisit = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException(); - + var trialConfig = await _trialRepository .Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }) .FirstOrDefaultAsync(t => t.TrialId == trialId) @@ -1259,6 +1259,42 @@ namespace IRaCIS.Core.Application.Image.QA } + + [HttpGet("{subjectVisitId:guid}")] + public async Task VerifyCRCRequestToQC(CRCRequestToQCCommand cRCRequestToQCCommand) + { + var dbSubjectVisitList = await _subjectVisitRepository.Where(t => cRCRequestToQCCommand.SubjectVisitIds.Contains(t.Id), true).ToListAsync(); + + //普通提交 + if (dbSubjectVisitList.Count() == 1) + { + var sv = dbSubjectVisitList[0]; + + var existObj = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.SubmitState != SubmitStateEnum.Submitted && t.VisitNum < sv.VisitNum); + + if (sv.PDState == PDStateEnum.PDProgress) + { + + if (existObj != null) + { + return ResponseOutput.NotOk($"系统检测发现该受试者当前访视之前的访视:{existObj.VisitName},未提交,疾病进展确认对阅片时限要求很高,请将上述访视提交或标记失访后,再提交当前访视!", ApiResponseCodeEnum.BusinessValidationFailed); + } + } + else + { + if (existObj != null) + { + + return ResponseOutput.NotOk($"系统检测发现该受试者当前访视之前的访视:{existObj.VisitName},未提交。请尽快完成上述访视的影像上传和提交!", ApiResponseCodeEnum.NeedTips); + } + } + } + + return ResponseOutput.Ok(); + + + } + /// /// CRC RequestToQC 批量提交 /// @@ -1267,11 +1303,10 @@ namespace IRaCIS.Core.Application.Image.QA [TypeFilter(typeof(TrialResourceFilter))] public async Task CRCRequestToQC(CRCRequestToQCCommand cRCRequestToQCCommand) { - var trialConfig = await _trialRepository + var trialConfig = (await _trialRepository .Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification, t.IsUrgent, t.IsHaveFirstGiveMedicineDate, t.ClinicalInformationTransmissionEnum }) - .FirstOrDefaultAsync(t => t.TrialId == cRCRequestToQCCommand.TrialId); + .FirstOrDefaultAsync(t => t.TrialId == cRCRequestToQCCommand.TrialId)).IfNullThrowException(); - if (trialConfig == null) return Null404NotFound(trialConfig); var dbSubjectVisitList = await _subjectVisitRepository.Where(t => cRCRequestToQCCommand.SubjectVisitIds.Contains(t.Id), true).Include(t => t.Subject).ToListAsync(); @@ -1411,7 +1446,6 @@ namespace IRaCIS.Core.Application.Image.QA /// /// /// - /// /// /// [HttpPost("{trialId:guid}/{subjectVisitId:guid}/{auditState:int}")] @@ -1431,7 +1465,7 @@ namespace IRaCIS.Core.Application.Image.QA return ResponseOutput.NotOk("有质疑未关闭,不允许该操作"); } - + var trialConfig = await _trialRepository .Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }) @@ -1944,24 +1978,7 @@ namespace IRaCIS.Core.Application.Image.QA - /// - /// 验证QC是否可以操作 数据库查询判断当前QC执行人和登陆的用户是否一致 - /// - /// - /// - private async Task VerifyQCCanOpt(Guid subjectVisitId) - { - var optUser = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).FirstOrDefaultAsync(); - if (optUser == null) return Null404NotFound(optUser); - - if (optUser.CurrentActionUserId != _userInfo.Id) - { - return ResponseOutput.NotOk("其他QC正在进行审核,当前操作不允许"); - } - - return ResponseOutput.Ok(); - }