diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs index 604bc582e..f1785dfc7 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs @@ -29,6 +29,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IGeneralCalculateService _generalCalculateService, IRepository _readingTaskQuestionAnswerRepository, IVisitTaskHelpeService _visitTaskHelpeService, + IRepository _noneDicomStudyFileRepository, IHttpContextAccessor httpContext, ILogger _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ICriterionCalculateService { @@ -1083,6 +1084,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var noneDicomFiles = await _noneDicomStudyFileRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId) + .Select(x => new { x.FileType, x.FileName }).ToListAsync(); + var hasZip = noneDicomFiles.Any(x => x.FileType == "application/zip" + || x.FileType == "application/x-zip-compressed" + || x.FileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); + var hasImage = noneDicomFiles.Any(x => x.FileType.StartsWith("image/", StringComparison.OrdinalIgnoreCase) + || x.FileName.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) + || x.FileName.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase) + || x.FileName.EndsWith(".png", StringComparison.OrdinalIgnoreCase)); + + if (!hasZip || !hasImage) + { + throw new BusinessValidationFailedException(_localizer["CriterionImageFileVerify"]); + } + var question = await _readingQuestionTrialRepository.Where(x => x.LesionType == LesionType.ROI && x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).FirstNotNullAsync(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs index 7f05e0469..e338ace11 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs @@ -35,6 +35,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IGeneralCalculateService _generalCalculateService, IVisitTaskHelpeService _visitTaskHelpeService, IRepository _readingTaskQuestionAnswerRepository, + IRepository _taskStudyRepository, + IRepository _noneDicomStudyFileRepository, ILogger _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ICriterionCalculateService { /// @@ -1597,6 +1599,18 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var noneDicomFiles = await _noneDicomStudyFileRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId) + .Select(x => new { x.FileType, x.FileName }).ToListAsync(); + var hasDicom = await _taskStudyRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId); + var hasZip = noneDicomFiles.Any(x => x.FileType == "application/zip" + || x.FileType == "application/x-zip-compressed" + || x.FileName.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); + + if (!hasDicom || !hasZip) + { + throw new BusinessValidationFailedException(_localizer["CriterionImageFileVerify"]); + } + var question = await _readingQuestionTrialRepository.Where(x => x.LesionType == LesionType.ROI && x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).FirstNotNullAsync();