public async Task OnNGetRequestAsync_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) }; DicomNGetResponse response = null; DicomRequest.OnTimeoutEventArgs timeout = null; var request = new DicomNGetRequest( 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); } }
private DicomNGetResponse GetPrintJob(DicomNGetRequest request) { if (_printJobList.ContainsKey(request.SOPInstanceUID.UID)) { var printJob = _printJobList[request.SOPInstanceUID.UID]; var sb = new System.Text.StringBuilder(); var dataset = new DicomDataset(); if (request.Attributes != null && request.Attributes.Length > 0) { foreach (var item in request.Attributes) { sb.AppendFormat("GetPrintJob attribute {0} requested", item); sb.AppendLine(); var value = printJob.Get(item, ""); dataset.Add(item, value); } Logger.Info(sb.ToString()); } var response = new DicomNGetResponse(request, DicomStatus.Success); response.Dataset = dataset; return response; } else { var response = new DicomNGetResponse(request, DicomStatus.NoSuchObjectInstance); return response; } }
private DicomNGetResponse GetPrinterConfiguration(DicomNGetRequest request) { var dataset = new DicomDataset(); var config = new DicomDataset(); var sequence = new DicomSequence(DicomTag.PrinterConfigurationSequence, config); dataset.Add(sequence); var response = new DicomNGetResponse(request, DicomStatus.Success); response.Command.Add(DicomTag.AffectedSOPInstanceUID, request.SOPInstanceUID); response.Dataset = dataset; return response; }
private DicomNGetResponse GetPrinter(DicomNGetRequest request) { var ds = new DicomDataset(); var sb = new System.Text.StringBuilder(); if (request.Attributes != null && request.Attributes.Length > 0) { foreach (var item in request.Attributes) { sb.AppendFormat("GetPrinter attribute {0} requested", item); sb.AppendLine(); var value = Printer.Get(item, ""); ds.Add(item, value); } Logger.Info(sb.ToString()); } if (ds.Count() == 0) { ds.Add(DicomTag.PrinterStatus, Printer.PrinterStatus); ds.Add(DicomTag.PrinterStatusInfo, ""); ds.Add(DicomTag.PrinterName, Printer.PrinterName); ds.Add(DicomTag.Manufacturer, Printer.Manufacturer); ds.Add(DicomTag.DateOfLastCalibration, Printer.DateTimeOfLastCalibration.Date); ds.Add(DicomTag.TimeOfLastCalibration, Printer.DateTimeOfLastCalibration); ds.Add(DicomTag.ManufacturerModelName, Printer.ManufacturerModelName); ds.Add(DicomTag.DeviceSerialNumber, Printer.DeviceSerialNumber); ds.Add(DicomTag.SoftwareVersions, Printer.SoftwareVersions); } var response = new DicomNGetResponse(request, DicomStatus.Success); response.Dataset = ds; this.Logger.Info(response.ToString(true)); return response; }