diff --git a/IRaCIS.Core.API/Controllers/StudyController.cs b/IRaCIS.Core.API/Controllers/StudyController.cs index 619f62b9a..c58a5cffa 100644 --- a/IRaCIS.Core.API/Controllers/StudyController.cs +++ b/IRaCIS.Core.API/Controllers/StudyController.cs @@ -228,13 +228,14 @@ namespace IRaCIS.Api.Controllers { _logger.LogError(e.Message + e.StackTrace); + _provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid); + + return ResponseOutput.NotOk(e.Message, ApiResponseCodeEnum.ProgramException); + } - - - + return ResponseOutput.Ok(archiveResult); - } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyListService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyListService.cs index 78273cc4b..d6e8ac967 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyListService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyListService.cs @@ -393,18 +393,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc //小于当前访视 最近的最早拍片日期 var before = visitList.Where(u => u.VisitNum < verifyInfo.VisitNum).Max(k => k.EarliestScanDate); - if (before != null && before > waitUploadItem.StudyDate) + if (before != null && waitUploadItem.StudyDate !=null && before > waitUploadItem.StudyDate) { - result.Add(new VerifyStudyUploadResult() { ErrorMesseage = "当前访视检查时间不能小于该访视之前检查的时间,请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); + result.Add(new VerifyStudyUploadResult() { ErrorMesseage = $"当前访视检查时间{waitUploadItem.StudyDate?.ToString("yyyy-MM-dd")}不能早于前序访视检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); return; } //大于当前访视 最近的最晚拍片日期 var after = visitList.Where(u => u.VisitNum > verifyInfo.VisitNum).Min(k => k.LatestScanDate); - if (after != null && after < waitUploadItem.StudyDate) + if (after != null && waitUploadItem.StudyDate != null && after < waitUploadItem.StudyDate) { - result.Add(new VerifyStudyUploadResult() { ErrorMesseage = "当前访视检查时间不能大于该访视之后的检查时间,请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); + result.Add(new VerifyStudyUploadResult() { ErrorMesseage = $"当前访视检查时间{waitUploadItem.StudyDate?.ToString("yyyy-MM-dd")}不能晚于该访视之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误", StudyInstanceUid = waitUploadItem.StudyInstanceUid }); return; } } diff --git a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs index 50dc9c719..c0ca3803c 100644 --- a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs +++ b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs @@ -79,6 +79,33 @@ namespace IRaCIS.Core.Application.Contracts [TypeFilter(typeof(TrialResourceFilter))] public async Task> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy) { + var visitList = await _subjectVisitRepository.Where(t => t.SubjectId == addOrEditNoneDicomStudy.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToListAsync(); + + var currentVisitNum = await _subjectVisitRepository.Where(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => t.VisitNum).FirstOrDefaultAsync(); + + if (addOrEditNoneDicomStudy.Id == null) + { + //更新验证的时候,排除自己 + visitList = visitList.Where(t => t.Id != addOrEditNoneDicomStudy.Id).ToList(); + } + + //小于当前访视 最近的最早拍片日期 + var before = visitList.Where(u => u.VisitNum < currentVisitNum).Max(k => k.EarliestScanDate); + + if (before != null && before > addOrEditNoneDicomStudy.ImageDate) + { + throw new BusinessValidationFailedException($"当前访视检查时间{addOrEditNoneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}不能早于前序访视检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); + } + + + //大于当前访视 最近的最晚拍片日期 + var after = visitList.Where(u => u.VisitNum > currentVisitNum).Min(k => k.LatestScanDate); + + if (after != null && after < addOrEditNoneDicomStudy.ImageDate) + { + throw new BusinessValidationFailedException($"当前访视检查时间{addOrEditNoneDicomStudy.ImageDate.ToString("yyyy-MM-dd")}不能晚于该访视之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); + + } NoneDicomStudy? optEntity = null; using (await _mutex.LockAsync()) diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs index 7bac14d09..7b9dfc93b 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs @@ -318,7 +318,7 @@ namespace IRaCIS.Core.Application.Contracts { public string StudyInstanceUid { get; set; } = String.Empty; - public DateTime StudyDate { get; set; } + public DateTime? StudyDate { get; set; } }