Skip to main content

Sample DICOM Routing to Storage Production

The ENSDEMO namespace contains a production named Demo.DICOM.Production.StorageOpens in a new tab. This production demonstrates a basic DICOM function, sending an image from a modality to a RIS or PACS system for storage.

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 with Ensemble and sends a C-STORE request message to the production through the duplex business service.

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

  3. Ensemble 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. Ensemble sends the response message back to the modality with the originating message ID.

generated description: storage prod config

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” in Configuring Ensemble.

  2. In Studio, 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 Studio 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.StorageOpens in a new tab production uses the business process based on the class, Demo.DICOM.Process.StorageOpens in a new tab, 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.

LocalAET

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

When you run the Demo.DICOM.Production.StorageOpens in a new tab production for the first time, it creates the DICOM association necessary for Ensemble to connect to a test DICOM application for this demonstration production. You can view this association in the ENSDEMO namespace from the 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.

RemoteAET

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 ENSDEMO, the Demo.DICOM.Production.StorageOpens in a new tab production uses a sample custom business process class, Demo.DICOM.Process.StorageOpens in a new tab, 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 Ensemble Productions.

The Demo.DICOM.Process.StorageOpens in a new tab 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 Studio 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 demonstration production included with Ensemble 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