Esempio n. 1
0
        private DicomNCreateResponse CreateFilmBox(DicomNCreateRequest request)
        {
            if (_filmSession == null)
            {
                this.Logger.Error("A basic film session does not exist for this association {0}", CallingAE);
                SendAbort(DicomAbortSource.ServiceProvider, DicomAbortReason.NotSpecified);
                return(new DicomNCreateResponse(request, DicomStatus.NoSuchObjectInstance));
            }


            var filmBox = _filmSession.CreateFilmBox(request.SOPInstanceUID, request.Dataset);

            if (!filmBox.Initialize())
            {
                this.Logger.Error("Failed to initialize requested film box {0}", filmBox.SOPInstanceUID.UID);
                SendAbort(DicomAbortSource.ServiceProvider, DicomAbortReason.NotSpecified);
                return(new DicomNCreateResponse(request, DicomStatus.ProcessingFailure));
            }

            this.Logger.Info("Created new film box {0}", filmBox.SOPInstanceUID.UID);

            var response = new DicomNCreateResponse(request, DicomStatus.Success);

            response.Command.Add(DicomTag.AffectedSOPInstanceUID, filmBox.SOPInstanceUID);
            response.Dataset = filmBox;
            return(response);
        }
Esempio n. 2
0
        private DicomNCreateResponse CreateFilmSession(DicomNCreateRequest request)
        {
            if (_filmSession != null)
            {
                this.Logger.Error("Attemted to create new basic film session on association with {0}", CallingAE);
                SendAbort(DicomAbortSource.ServiceProvider, DicomAbortReason.NotSpecified);
                return(new DicomNCreateResponse(request, DicomStatus.NoSuchObjectInstance));
            }

            var pc = request.PresentationContext;

            bool isColor = pc != null && pc.AbstractSyntax == DicomUID.BasicColorPrintManagementMetaSOPClass;


            _filmSession = new FilmSession(request.SOPClassUID, request.SOPInstanceUID, request.Dataset, isColor);


            this.Logger.Info("Create new film session {0}", _filmSession.SOPInstanceUID.UID);
            if (request.SOPInstanceUID == null || request.SOPInstanceUID.UID == string.Empty)
            {
                request.Command.AddOrUpdate(DicomTag.AffectedSOPInstanceUID, _filmSession.SOPInstanceUID);
            }
            var response = new DicomNCreateResponse(request, DicomStatus.Success);

            return(response);
        }
        public async Task OnNCreateRequestAsync_ShouldRespond()
        {
            var port = Ports.GetNext();

            using (DicomServerFactory.Create <AsyncDicomNServiceProvider>(port, logger: _logger.IncludePrefix("DicomServer")))
            {
                var client = DicomClientFactory.Create("127.0.0.1", port, false, "SCU", "ANY-SCP");
                client.Logger = _logger.IncludePrefix(typeof(DicomClient).Name);

                DicomNCreateResponse            response = null;
                DicomRequest.OnTimeoutEventArgs timeout  = null;
                var request = new DicomNCreateRequest(
                    DicomUID.BasicFilmSession,
                    new DicomUID("1.2.3", null, DicomUidType.SOPInstance))
                {
                    OnResponseReceived = (req, res) => response = res,
                    OnTimeout          = (sender, args) => timeout = args
                };

                await client.AddRequestAsync(request).ConfigureAwait(false);

                await client.SendAsync().ConfigureAwait(false);

                Assert.NotNull(response);
                Assert.Equal(DicomStatus.Success, response.Status);
                Assert.Null(timeout);
            }
        }
        public DicomNCreateResponse OnNCreateRequest(DicomNCreateRequest request)
        {
            UpdateMppsStatusInLocalCollections(request);

            var resp = new DicomNCreateResponse(request, DicomStatus.Success);

            return(resp);
        }
Esempio n. 5
0
        private DicomNCreateResponse CreatePresentationLut(DicomNCreateRequest request)
        {
            if (_filmSession == null)
            {
                Logger.Error("Film Session on association with {0} does not exist", CallingAE);
                SendAbort(DicomAbortSource.ServiceProvider, DicomAbortReason.NotSpecified);
                return(new DicomNCreateResponse(request, DicomStatus.NoSuchObjectInstance));
            }

            _filmSession.CreatePresentationLut(request.SOPInstanceUID, request.Dataset);
            var response = new DicomNCreateResponse(request, DicomStatus.Success);

            response.Command.Add(DicomTag.AffectedSOPInstanceUID, _filmSession.SOPInstanceUID);
            return(response);
        }
Esempio n. 6
0
        public void Constructor_FromRequestWithoutSopInstanceUid_ShouldNotThrow()
        {
            var request =
                new DicomNCreateRequest(new DicomDataset
            {
                { DicomTag.CommandField, (ushort)DicomCommandField.NCreateRequest },
                { DicomTag.MessageID, (ushort)1 },
                { DicomTag.AffectedSOPClassUID, "1.2.3" }
            });

            DicomNCreateResponse response = null;
            var exception = Record.Exception(() => response = new DicomNCreateResponse(request, DicomStatus.Success));

            Assert.Null(exception);
            Assert.Null(response.SOPInstanceUID);
        }