public async Task OnNCreateRequestAsync_ShouldRespond() { var port = Ports.GetNext(); using (DicomServer.Create <AsyncDicomNServiceProvider>(port, logger: _logger.IncludePrefix("DicomServer"))) { var client = new Network.Client.DicomClient("127.0.0.1", port, false, "SCU", "ANY-SCP") { 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 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); }
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; }
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); var response = new DicomNCreateResponse(request, DicomStatus.Success); response.Command.Add(DicomTag.AffectedSOPInstanceUID, _filmSession.SOPInstanceUID); return response; }
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; }