Beispiel #1
0
        public async Task GivenDatasetWithInvalidVrValue_WhenValidatingWithFullValidation_ThenDatasetValidationExceptionShouldBeThrown()
        {
            var featureConfiguration = Substitute.For <IOptions <FeatureConfiguration> >();

            featureConfiguration.Value.Returns(new FeatureConfiguration
            {
                EnableFullDicomItemValidation = true,
            });
            var minValidator = new DicomElementMinimumValidator();

            _dicomDatasetValidator = new DicomDatasetValidator(featureConfiguration, minValidator, _queryTagService);

#pragma warning disable CS0618 // Type or member is obsolete
            DicomValidation.AutoValidation = false;
#pragma warning restore CS0618 // Type or member is obsolete

            // LO VR, invalid characters
            _dicomDataset.Add(DicomTag.SeriesDescription, "CT1 abdomen\u0000");

#pragma warning disable CS0618 // Type or member is obsolete
            DicomValidation.AutoValidation = true;
#pragma warning restore CS0618 // Type or member is obsolete

            await ExecuteAndValidateException <DatasetValidationException>(ValidationFailedFailureCode);
        }
        public DicomDatasetValidatorTests()
        {
            var featureConfiguration = Options.Create(new FeatureConfiguration()
            {
                EnableFullDicomItemValidation = false
            });
            var minValidator = new DicomElementMinimumValidator();

            _queryTagService = Substitute.For <IQueryTagService>();
            _queryTags       = new List <QueryTag>(QueryTagService.CoreQueryTags);
            _queryTagService.GetQueryTagsAsync(Arg.Any <CancellationToken>()).Returns(_queryTags);
            _dicomDatasetValidator = new DicomDatasetValidator(featureConfiguration, minValidator, _queryTagService);
        }
Beispiel #3
0
        public StoreService(
            IStoreResponseBuilder storeResponseBuilder,
            IDicomDatasetValidator dicomDatasetValidator,
            IStoreOrchestrator storeOrchestrator,
            ILogger <StoreService> logger)
        {
            EnsureArg.IsNotNull(storeResponseBuilder, nameof(storeResponseBuilder));
            EnsureArg.IsNotNull(dicomDatasetValidator, nameof(dicomDatasetValidator));
            EnsureArg.IsNotNull(storeOrchestrator, nameof(storeOrchestrator));
            EnsureArg.IsNotNull(logger, nameof(logger));

            _storeResponseBuilder  = storeResponseBuilder;
            _dicomDatasetValidator = dicomDatasetValidator;
            _storeOrchestrator     = storeOrchestrator;
            _logger = logger;
        }
Beispiel #4
0
        public async Task GivenDicomTagWithDifferentVR_WhenValidated_ThenShouldSkip()
        {
            var featureConfiguration = Options.Create(new FeatureConfiguration()
            {
                EnableFullDicomItemValidation = false
            });
            DicomTag     tag     = DicomTag.Date;
            DicomElement element = new DicomDateTime(tag, DateTime.Now);

            _dicomDataset.AddOrUpdate(element);

            _queryTags.Clear();
            _queryTags.Add(new QueryTag(tag.BuildExtendedQueryTagStoreEntry()));
            IDicomElementMinimumValidator validator = Substitute.For <IDicomElementMinimumValidator>();

            _dicomDatasetValidator = new DicomDatasetValidator(featureConfiguration, validator, _queryTagService);
            await _dicomDatasetValidator.ValidateAsync(_dicomDataset, requiredStudyInstanceUid : null);

            validator.DidNotReceive().Validate(Arg.Any <DicomElement>());
        }
        public async Task GivenDicomTagWithDifferentVR_WhenValidated_ThenShouldThrowException()
        {
            var featureConfiguration = Options.Create(new FeatureConfiguration()
            {
                EnableFullDicomItemValidation = false
            });
            DicomTag     tag     = DicomTag.Date;
            DicomElement element = new DicomDateTime(tag, DateTime.Now);

            _dicomDataset.AddOrUpdate(element);

            _queryTags.Clear();
            _queryTags.Add(new QueryTag(tag.BuildExtendedQueryTagStoreEntry()));
            IDicomElementMinimumValidator validator = Substitute.For <IDicomElementMinimumValidator>();

            _dicomDatasetValidator = new DicomDatasetValidator(featureConfiguration, validator, _queryTagService);
            await AssertThrowsAsyncWithMessage <DatasetValidationException>(
                () => _dicomDatasetValidator.ValidateAsync(_dicomDataset, requiredStudyInstanceUid: null),
                expectedMessage : $"The extended query tag '{tag}' is expected to have VR 'DA' but has 'DT' in file.");

            validator.DidNotReceive().Validate(Arg.Any <DicomElement>());
        }