Generating an HL7 Report from a DICOM SR

A powerful interoperability task is to consume a DICOM Structured Report from a modality and generate a standard HL7 ORU_R01 (Observation Result) message for a LIS or EMR system.

This advanced tutorial shows how to use transformers to loop over the findings in an SR and dynamically create repeating OBX segments in an outbound HL7 message.

Tutorial video coming soon!

How to Create HL7 from a DICOM SR

This workflow can be initiated by either a DICOM Receiver or a Directory Scanner. It then uses the powerful For Each and Append Segment transformers to build the HL7 message.

  1. Start the Workflow
    Begin with either a DICOM Receiver or a Directory Scanner to receive the DICOM SR file. Drag a sample SR into the receiver's message template to populate the binding tree.
  2. Add and Template the HL7 Sender
    Add a TCP Sender (MLLP) activity and configure its connection details. In its "Message Template", paste a sample HL7 ORU_R01 message. Use the binding tree to drag and drop values from the DICOM message's root fields (e.g., PatientName drops onto the PID-5, PatientID onto the PID-3) into the appropriate PID segment fields. Notice how the tooltip helps you navigate the HL7 message structure.
  3. Loop Through Findings with a Transformer
    Click the Transformer tab on the TCP Sender. From the toolbox, add a For Each transformer. In its properties, set the "Source Path" to the Findings array in the Structured Report by dragging it from the binding tree.
  4. Map DICOM tags to variables
    Add a Set Variable between the For Each and Next transformers by dragging from the binding tree. e.g, Report/Findings/Aorta/Height
  5. Append OBX Segments in the Loop
    Add an Append Segment transformer and drop it between the For Each and Next transformers. In its Line text box, enter the content of the segment to create: OBX|${ForEachIterator}||^^||${Aorta/Height}|.

When the workflow runs, this will create a new OBX segment for every finding in the report.