The StoreClient example demonstrates how to use the DCF to construct and use the high level store SCU class LaurelBridge.DCF.Dicom.Store.StoreClient.
Classes
Class | Description | |
---|---|---|
Options |
Command line options class for parsing user options for StoreClient.
| |
Program |
Basic store service class user example which should be run with StoreSCP.
|
Remarks
Supported OS Platforms:
- Windows - .Net Framework 4.7.2 64-bit and 32-bit
- Windows - .Net Core 2.1 64-bit and 32-bit
- Linux - .Net Core 2.1 64-bit
Examples
StoreClient Sample Code
public class Program : IStoreClientListener { private static readonly ILogger Logger = LogManager.GetCurrentClassLogger(); private readonly Options _options; /// <summary> /// Main entry point for StoreClient. /// </summary> /// <param name="args">Program arguments.</param> [STAThread] public static void Main(string[] args) { try { Options options; if (!Options.TryParse(args, out options)) { throw new ArgumentException("bad command line parameters"); } new Program(options); } catch (Exception e) { Console.WriteLine("Error during execution: {0}", e); Environment.ExitCode = 1; } finally { if (System.Diagnostics.Debugger.IsAttached) { Console.Write("Press any key to continue . . . "); Console.ReadKey(); } } } /// <summary> /// The class submits a store job. /// </summary> /// <param name="options">Parsed command line options class.</param> public Program(Options options) { _options = options; DCF.Dicom.Store.StoreClient client = new DCF.Dicom.Store.StoreClient(); StoreJobStatus status = client.SubmitStoreJob(CreateStoreJobDescription(), this); Console.WriteLine("status for the job: " + Environment.NewLine + status); } /// <summary> /// Make a StoreJobDescriptions. Multiple instances of datasets may be added to the job. /// </summary> /// <returns>The StoreJobDescription.</returns> private StoreJobDescription CreateStoreJobDescription() { StoreJobDescription sjd = new StoreJobDescription(); sjd.CalledAETitle = _options.CalledAETitle; sjd.CallingAETitle = _options.CallingAETitle; sjd.CalledHost = _options.RemoteHost; sjd.CalledPort = _options.RemotePort.ToString(); sjd.AddInstance(new DicomInstanceInfo(_options.InputPath)); sjd.SessionSettings.SendDimseTimeoutSeconds = 60; sjd.SessionSettings.ReceiveDimseTimeoutSeconds = 60; return sjd; } /// <summary> /// Implementation of StoreClientListener interface. /// </summary> /// <param name="status">The status for an store job instance.</param> public virtual void StoreObjectComplete(StoreJobInstanceStatus status) { int base10DimseStatus = status.DimseStatusCode; string hexDimseStatus = base10DimseStatus.ToString("X"); string stringDimseStatus = StoreDimseStatus.GetStatusAsString(status.DimseStatusCode); Logger.InfoFormat("Received storeObjectComplete event status({0}) (0x{1}), {2}", base10DimseStatus, hexDimseStatus, stringDimseStatus); } /// <summary> /// Implementation of StoreClientListener interface. /// </summary> /// <param name="status">The status for the store job.</param> public virtual void StoreJobComplete(StoreJobStatus status) { Logger.Info("Received storeJobComplete event " + Environment.NewLine + "status = " + JobStatus.GetStatusAsString(status.Status) + Environment.NewLine + "statusInfo = " + JobStatusInfo.GetStatusAsString(status.StatusInfo) ); } }