This chapter introduces Ensemble support for DICOM. It contains the following sections:
Digital Imaging and Communications in Medicine (DICOM) is a global information technology standard used in most hospitals worldwide. It is designed to ensure the interoperability of systems used to produce, store, display, process, send, retrieve, query, or print medical images and derived structured documents as well as to manage related workflow.
The DICOM standard is a product of the DICOM Standards Committee and its many international working groups. It is managed by the Medical Imaging & Technology Alliance, a division of the National Electrical Manufacturers Association (NEMA). For more information visit the organization’s web site at http://dicom.nema.org/
Ensemble supports DICOM documents as virtual documents. A virtual document
is a kind of message that Ensemble parses only partially. This kind of message has the standard Ensemble message header and the standard message properties such as ID
, and SessionId
. The data in the message, however, is not available as message properties; instead it is stored directly in an internal-use global, for greater processing speed. For background information, see Ensemble Virtual Documents
Ensemble provides specialized classes for use with DICOM communications. You can use these classes to add the following elements to an Ensemble production:
||Ensemble provides a couple of business service classes for DICOM, each with a specialized adapter.
||Ensemble provides a couple of sample business processes, shown in the sample productions, which are introduced later in this chapter.
||Ensemble provides one business operation classes for DICOM, with a specialized adapter.
||Ensemble provides a specialized message class for carrying DICOM documents as Ensemble virtual documents. Ensemble DICOM messages differ from other Ensemble messages in that the DICOM adapter is bidirectional and operates asynchronously.
The Ensemble implementation includes the ability to receive a message containing a DICOM-tagged image over TCP transport, to dissect that document and retrieve the tagged data items, and then to send that message to a DICOM recipient, again via TCP.
A DICOM message is a well defined entity which includes a metadata command set as well as the physical data set (which may or may not contain image data). To handle this type of messaging, Ensemble introduces a specialized business host that has characteristics of both a business service and a business operation; it can send and receive messages in both directions.
The DICOM adapter is a gateway into Ensemble, allowing DICOM data to be on an equal footing with HL7 and other supported standard data formats. You can route and edit messages using Get()
, and GetNext()
methods on values positionally in a message or by name. You can use ObjectScript in a business process to route messages. You can route, modify, and build DICOM messages using classes. There are, however, some significant differences with DICOM messages in Ensemble because of the following limitations:
Ensemble does not support a graphical detail editor like the one for HL7.
Ensemble is not
a DICOM viewer; it contains no means of seeing images.
The bidirectional nature of DICOM means you cannot write business processes using BPL; you must create a custom business process using ObjectScript.
Actual DICOM data is not stored in a Caché database, but is stored as an external file stream to reduce journaling overhead and prevent inflating the database with many large files.
The DICOM adapter uses TCP to talk to modalities and systems (a PACS
, for example), but Ensemble can also open DICOM format files and treat them as DICOM messages using the EnsLib.DICOM.File
class. Ensemble contains a file service in a demonstration production expressly for that purpose. The file service does not require an association because there is no communication with an originating entity via the DICOM protocol.
namespace contains sample productions to show common types of DICOM interfaces. The following chapters describe each of these productions: