Skip to main content

Sample DICOM Routing to Storage Production

The sample production named Demo.DICOM.Production.Storage demonstrates a basic DICOM function, sending an image from a modality to a RIS or PACS system for storage. This production contains the business service EnsLib.DICOM.Service.TCPOpens in a new tab, the business process Demo.DICOM.Process.Storage, and the business operation EnsLib.DICOM.Operation.TCPOpens in a new tab.

The scenario for this production is a DICOM modality sending a request message to send a document to a storage system. The production does the following:

  1. The DICOM modality establishes an association and sends a C-STORE request message to the production through the duplex business service.

  2. The business process checks the connection to the output storage system and establishes the association if needed.

  3. The production recognizes the request, stores the originating message ID, and forwards the DICOM document message to the storage system through the duplex business operation.

  4. The business operation returns the C-STORE response message from the storage system to the business process.

  5. The production sends the response message back to the modality with the originating message ID.

The following steps outline the procedure to add this type of interface to a production:

  1. Create a generic production by clicking Create New Production on the Production Configuration page. See Creating and Configuring a Production.

  2. In an IDE, modify the production definition to add the StorageLocation property and compile the production. See Configuring a DICOM Production to Control the Storage Location for details.

  3. Add a DICOM duplex business service to the production using the EnsLib.DICOM.Service.TCPOpens in a new tab class.

  4. Configure the DICOM business service settings specifically for a routing to storage production.

  5. Create a business process class that routes the incoming DICOM document to a storage system from the incoming C-STORE-RQ message and passes the returned C-STORE-RSP message back to the originating system.

  6. Add a DICOM business process using the custom class from the previous step.

  7. Add a DICOM business operation.

  8. Test the production to verify that it receives a request message for a worklist and sends the appropriate response message documents back.

You can view the class code of Demo.DICOM.Production.Storage.cls using an IDE to see the production details.

Configuring the DICOM Routing to Storage Business Service

You can configure a DICOM business service by clicking it in the diagram on the Production Configuration page. Configuring a DICOM Duplex Business Host describes the details. This section describes the settings specific to the business service in the demonstration storage production.

Duplex Target Config Names

Specify the configuration item within the production to which the business service should send any DICOM documents that it receives.

The Demo.DICOM.Production.Storage production uses the business process based on the class, Demo.DICOM.Process.Storage, which is described in Creating a Business Process Class for a DICOM Storage Production. This is a custom process that contains the logic for processing DICOM messages from the input modality and routing them to a storage system.


The called Application Entity Title (AET) that the remote DICOM peer uses to communicate with the production. This corresponds to the Called AET you use when defining an association in an interoperability-enabled namespace.

When you run the Demo.DICOM.Production.Storage production for the first time, it creates the DICOM association necessary to connect to a test DICOM application for this demonstration production. You can view this association in the production’s namespace from the Interoperability > Interoperate > DICOM > DICOM Settings page.

The EnsLib.DICOM.Service.TCPOpens in a new tab service of the demo production uses ENS-SCP for the value of LocalAET.


The calling Application Entity Title(s) of a remote DICOM peer.

When the adapter is in the role of Service Class Provider (SCP, server) it contains a comma-delimited list of names of the DICOM peers which are allowed to connect. A name can either be a literal string or a pattern/substitution.

The EnsLib.DICOM.Service.TCPOpens in a new tab service of the demo production uses JD-SCU for the value of RemoteAET.

Creating a Business Process Class for a DICOM Storage Production

In the sample Demo.DICOM.Production.Storage, the production uses a sample custom business process class, Demo.DICOM.Process.Storage, which demonstrates how to handle DICOM C-STORE request messages, send the DICOM document to storage and return a d C-STORE response message.

This custom class extends EnsLib.DICOM.ProcessOpens in a new tab, which is the superclass for all user-defined DICOM business processes. See its entry in the Class Reference for detailed information.

For information, see Developing Custom Business Processes in Developing Productions.

The Demo.DICOM.Process.Storage class uses the parameter SETTINGS to expose a new property, OperationDuplexName, for configuration.

Because of the duplex nature of DICOM communication, the business process must keep track of what is happening outside of the process. You can accomplish this using a context variable for the state of the process. The demonstration business process creates a CurrentState property for this purpose.

You can view the class code for Demo.DICOM.Process.Storage.cls using an IDE to see the processing details.

Testing the DICOM Routing to Storage Production

Once you have working associations and created a production, you can attempt to process valid DICOM message documents through the production. The sample DICOM demonstration production was developed using third-party software specifically developed for testing DICOM processing. You can use any of the many available software products, or test with your actual DICOM modality data.

FeedbackOpens in a new tab