Esempio n. 1
0
        public async Task <IActionResult> PostAsync([Required][FromBody] IReadOnlyCollection <AddExtendedQueryTagEntry> extendedQueryTags)
        {
            _logger.LogInformation("DICOM Web Add Extended Query Tag request received, with extendedQueryTags {ExtendedQueryTags}.", extendedQueryTags);

            EnsureFeatureIsEnabled();
            AddExtendedQueryTagResponse response = await _mediator.AddExtendedQueryTagsAsync(extendedQueryTags, HttpContext.RequestAborted);

            Response.AddLocationHeader(response.Operation.Href);
            return(StatusCode((int)HttpStatusCode.Accepted, response.Operation));
        }
        public async Task <IActionResult> PostAsync([FromBody] IEnumerable <AddExtendedQueryTagEntry> extendedQueryTags)
        {
            _logger.LogInformation("DICOM Web Add Extended Query Tag request received, with extendedQueryTags {extendedQueryTags}.", extendedQueryTags);

            EnsureFeatureIsEnabled();
            AddExtendedQueryTagResponse response = await _mediator.AddExtendedQueryTagsAsync(extendedQueryTags, HttpContext.RequestAborted);

            return(StatusCode(
                       (int)HttpStatusCode.Accepted, response));
        }
Esempio n. 3
0
        public async Task GivenOperationId_WhenAddingTags_ReturnIdWithHeader()
        {
            Guid id       = Guid.NewGuid();
            var  expected = new AddExtendedQueryTagResponse(
                new OperationReference(id, new Uri("https://dicom.contoso.io/unit/test/Operations/" + id, UriKind.Absolute)));
            IMediator mediator   = Substitute.For <IMediator>();
            var       controller = new ExtendedQueryTagController(
                mediator,
                Options.Create(new FeatureConfiguration {
                EnableExtendedQueryTags = true
            }),
                NullLogger <ExtendedQueryTagController> .Instance);

            controller.ControllerContext.HttpContext = new DefaultHttpContext();

            var input = new List <AddExtendedQueryTagEntry>
            {
                new AddExtendedQueryTagEntry
                {
                    Level = QueryTagLevel.Instance,
                    Path  = "00101001",
                    VR    = DicomVRCode.PN,
                },
                new AddExtendedQueryTagEntry
                {
                    Level          = QueryTagLevel.Instance,
                    Path           = "11330001",
                    PrivateCreator = "Microsoft",
                    VR             = DicomVRCode.SS,
                }
            };

            mediator
            .Send(
                Arg.Is <AddExtendedQueryTagRequest>(x => ReferenceEquals(x.ExtendedQueryTags, input)),
                Arg.Is(controller.HttpContext.RequestAborted))
            .Returns(expected);

            var actual = await controller.PostAsync(input) as ObjectResult;

            Assert.NotNull(actual);
            Assert.IsType <OperationReference>(actual.Value);
            Assert.True(controller.Response.Headers.TryGetValue(HeaderNames.Location, out StringValues header));
            Assert.Single(header);

            Assert.Equal((int)HttpStatusCode.Accepted, actual.StatusCode);
            Assert.Same(expected.Operation, actual.Value);
            Assert.Equal("https://dicom.contoso.io/unit/test/Operations/" + id, header[0]);

            await mediator.Received(1).Send(
                Arg.Is <AddExtendedQueryTagRequest>(x => ReferenceEquals(x.ExtendedQueryTags, input)),
                Arg.Is(controller.HttpContext.RequestAborted));
        }