public async Task <IActionResult> GetStudyMetadataAsync([FromHeader(Name = IfNoneMatch)] string ifNoneMatch, string studyInstanceUid)
        {
            _logger.LogInformation("DICOM Web Retrieve Metadata Transaction request received, for study: {studyInstanceUid}.", studyInstanceUid);

            RetrieveMetadataResponse response = await _mediator.RetrieveDicomStudyMetadataAsync(studyInstanceUid, ifNoneMatch, HttpContext.RequestAborted);

            return(CreateResult(response));
        }
        public async Task GivenARequestWithValidInstanceIdentifierAndExpiredIfNoneMatchHeader_WhenRetrievingSopInstanceMetadata_ThenResponseMetadataIsReturnedSuccessfully(string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid, string ifNoneMatch, string eTag)
        {
            RetrieveMetadataResponse response = SetupRetrieveMetadataResponseForValidatingCache(false, eTag);

            _retrieveMetadataService.RetrieveSopInstanceMetadataAsync(studyInstanceUid, seriesInstanceUid, sopInstanceUid, ifNoneMatch).Returns(response);

            RetrieveMetadataRequest request = new RetrieveMetadataRequest(studyInstanceUid, seriesInstanceUid, sopInstanceUid, ifNoneMatch);

            await ValidateRetrieveMetadataResponse(response, request);
        }
        public async Task GivenARequestWithValidInstanceIdentifierAndIfNoneMatchHeader_WhenRetrievingSopInstanceMetadata_ThenNotModifiedResponseIsReturned(string studyInstanceUid, string seriesInstanceUid, string sopInstanceUid, string ifNoneMatch)
        {
            RetrieveMetadataResponse response = SetupRetrieveMetadataResponseForValidatingCache(true, ifNoneMatch);

            _retrieveMetadataService.RetrieveSopInstanceMetadataAsync(studyInstanceUid, seriesInstanceUid, sopInstanceUid, ifNoneMatch).Returns(response);

            RetrieveMetadataRequest request = new RetrieveMetadataRequest(studyInstanceUid, seriesInstanceUid, sopInstanceUid, ifNoneMatch);

            await ValidateRetrieveMetadataResponse(response, request);
        }
        public async Task GivenRetrieveInstanceMetadataRequestForInstance_WhenIsSuccessful_ThenSuccessStatusCodeIsReturnedAsync()
        {
            VersionedInstanceIdentifier sopInstanceIdentifier = SetupInstanceIdentifiersList(ResourceType.Instance).First();

            _metadataStore.GetInstanceMetadataAsync(sopInstanceIdentifier, DefaultCancellationToken).Returns(new DicomDataset());

            string ifNoneMatch = null;
            RetrieveMetadataResponse response = await _retrieveMetadataService.RetrieveSopInstanceMetadataAsync(_studyInstanceUid, _seriesInstanceUid, _sopInstanceUid, ifNoneMatch, DefaultCancellationToken);

            Assert.Single(response.ResponseMetadata);
        }
        public async Task GivenRetrieveInstanceMetadataRequestForSeries_WhenIsSuccessful_ThenSuccessStatusCodeIsReturnedAsync()
        {
            List <VersionedInstanceIdentifier> versionedInstanceIdentifiers = SetupInstanceIdentifiersList(ResourceType.Series);

            _metadataStore.GetInstanceMetadataAsync(versionedInstanceIdentifiers.First(), DefaultCancellationToken).Returns(new DicomDataset());
            _metadataStore.GetInstanceMetadataAsync(versionedInstanceIdentifiers.Last(), DefaultCancellationToken).Returns(new DicomDataset());

            string ifNoneMatch = null;
            RetrieveMetadataResponse response = await _retrieveMetadataService.RetrieveSeriesInstanceMetadataAsync(_studyInstanceUid, _seriesInstanceUid, ifNoneMatch, DefaultCancellationToken);

            Assert.Equal(response.ResponseMetadata.Count(), versionedInstanceIdentifiers.Count());
        }
        public async Task GivenARequestWithValidInstanceIdentifier_WhenRetrievingStudyInstanceMetadata_ThenResponseMetadataIsReturnedSuccessfully()
        {
            string studyInstanceUid = TestUidGenerator.Generate();
            string ifNoneMatch      = null;

            RetrieveMetadataResponse response = SetupRetrieveMetadataResponse();

            _retrieveMetadataService.RetrieveStudyInstanceMetadataAsync(studyInstanceUid).Returns(response);

            RetrieveMetadataRequest request = new RetrieveMetadataRequest(studyInstanceUid, ifNoneMatch);

            await ValidateRetrieveMetadataResponse(response, request);
        }
Example #7
0
        public async Task GivenRetrieveMetadataRequestForStudy_WhenIsSuccessful_ThenInstanceMetadataIsRetrievedSuccessfully()
        {
            List <DicomDataset> datasetList = SetupDatasetList(ResourceType.Study);
            string ifNoneMatch = null;

            // Add metadata for all instances in the given list
            await _metadataStore.StoreInstanceMetadataAsync(datasetList.First(), version : 0);

            await _metadataStore.StoreInstanceMetadataAsync(datasetList.Last(), version : 1);

            RetrieveMetadataResponse response = await _retrieveMetadataService.RetrieveStudyInstanceMetadataAsync(_studyInstanceUid, ifNoneMatch, DefaultCancellationToken);

            ValidateResponseMetadataDataset(datasetList.First(), response.ResponseMetadata.First());
            ValidateResponseMetadataDataset(datasetList.Last(), response.ResponseMetadata.Last());
        }
        private async Task ValidateRetrieveMetadataResponse(RetrieveMetadataResponse response, RetrieveMetadataRequest request)
        {
            RetrieveMetadataResponse actualResponse = await _retrieveMetadataHandler.Handle(request, CancellationToken.None);

            Assert.Same(response, actualResponse);
        }
 private static IActionResult CreateResult(RetrieveMetadataResponse response)
 {
     return(new MetadataResult(response));
 }
Example #10
0
 public MetadataResult(RetrieveMetadataResponse response)
     : base(EnsureArg.IsNotNull(response, nameof(response)).ResponseMetadata)
 {
     _response = response;
 }