diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 0000f8de..4be81c82 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1165,13 +1165,32 @@ namespace IRaCIS.Application.Services await _readingCalculateService.VerifyVisitTaskQuestions(inDto); - if ((await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() + var clinicalDataList = await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto() { SubjectId = taskInfo.SubjectId, TrialId = taskInfo.TrialId, VisitTaskId = taskInfo.Id, - })).Count() > 0 && !taskInfo.IsReadClinicalData) + }); + + var isBaseLine = false; + if (taskInfo.SourceSubjectVisitId != null) + { + isBaseLine = await _subjectVisitRepository.Where(x => x.Id == taskInfo.SourceSubjectVisitId).Select(x => x.IsBaseLine).FirstOrDefaultAsync(); + } + + var isNeedReadClinicalData = false; + + if (isBaseLine) + { + isNeedReadClinicalData = clinicalDataList.Count() > 0; + } + else + { + isNeedReadClinicalData = clinicalDataList.Where(x => x.ClinicalDataLevel != ClinicalLevel.Subject).Count() > 0; + } + + if (isNeedReadClinicalData && !taskInfo.IsReadClinicalData) { throw new BusinessValidationFailedException($"临床数据未阅读!"); }