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); 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); }
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); }
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); }