This pattern uses the MedicalDeviceInput node to read measurements and alerts from medical devices. The device readings are transformed into HL7 observation result messages (ORU R01). The transformed messages are sent to a destination application such as an Electronic Medical Record (EMR) using the HL7 MLLP protocol.
This topic contains the following sections:
The Medical Devices flow processes the messages from the MedicalDeviceInput node. Each message has an expiry time added to it's MQRFH2 header. The messages are written to a queue ready for the Transform and Route flow. After a message has been written to the queue, a journal message is published for the device measurement.
The Transform and Route flow converts a device message to an HL7 observation result (ORU R01). The flow checks each device message to ensure it's measurement is valid. Invalid measurements are written to a queue and discarded. If the pattern is configured to lookup patient identifiers, the device identifier is used as a key to a database table to obtain the patient identifier associated with the device message. The transformed HL7 message is written to a no-match queue for the Sender flow.
The Sender flow reads the HL7 messages from a queue and sends them to the destination application using the HL7 MLLP protocol. The Sender flow retries a configurable number of times if message delivery is disrupted. The Sender flow checks the expiry time of the message. If the message has taken too long to be processed, the message is written to an expired queue and then discarded.
The pattern can optionally created a web service interface to the patient identifiers database. The interface is implemented using a message flow. Web service requests are received using a SOAPInput node and routed to a Compute node which performs the necessary database query or update. The flow requires a WSDL message set to configure the SOAP nodes. This message set is provided in the pattern resources topic.
The following tables show how the segments in an HL7 ORU R01 messages are constructed:
The MSH segment defines the intent, source identifier, destination identifier, and some specifics of the syntax of an HL7 message.
Field name | Field value in observation result message | Configured by pattern parameter |
---|---|---|
MSH.1.FieldSeparator | '|' | |
MSH.ServiceString | '^~\&' | |
MSH.3.SendingApplication | 'Message Broker' | Source identifier |
MSH.4.SendingFacility | '' | Source facility |
MSH.5.ReceivingApplication | 'EMR' | Destination identity |
MSH.6.ReceivingFacility | '' | Destination facility |
MSH.7.DateTimeOfMessage | Copied from the time stamp in the MedicalDeviceInput node message | |
MSH.9.MessageType | 'ORU^R01^ORU_R01' | |
MSH.10.MessageControlID | UUID or current time stamp in format yyyyMMddHHmmssSSSSSS | Message identifiers |
MSH.11.ProcessingID | 'P' | |
MSH.12.VersionID | '2.5' |
The PID segment is used by all applications as the primary means of communicating patient identification information. This segment contains permanent patient identifying and demographic information that, for the most part, is not likely to change frequently.
Field name | Field value in observation result message | Configured by pattern parameter |
---|---|---|
PID.3.PatientIdentifierList | This field is determined by the
Patient identifiers
pattern parameter.
The field is not valued if No patient identifiers in observation results is selected. The patient identifier from the message is copied to this field if Use patient identifiers from device . If Lookup patient identifiers in database is selected then the device identifier is used to lookup an associated patient identifier in a database. |
Patient identifiers |
The PV1 segment is used by patient administration applications to communicate information on an account or visit-specific basis.
Field name | Field value in observation result message | Configured by pattern parameter |
---|---|---|
PV1.2.PatientClass | 'I' | Patient class |
PV1.3.AssignedPatientLocation | Location from the MedicalDeviceInput node message |
In the reporting of clinical data, the OBR serves as the result header. It identifies the observation set represented by the following atomic observations. It includes the relevant ordering information when that applies. It contains many of the attributes that usually apply to all of the included observations.
Field name | Field value in observation result message | Configured by pattern parameter |
---|---|---|
OBR.7.ObservationDateTime | Same as MSH.7.DateTimeOfMessage | |
OBR.10.CollectorIdentifier | Same as PV1.3.AssignedPatientLocation |
The OBX segment is used to transmit a single observation or observation fragment. It represents the smallest indivisible unit of a result.
Field name | Field value in observation result message | Configured by pattern parameter |
---|---|---|
OBX.1.SetIDOBX | Numeric index of the OBX segment starting with 1. | |
OBX.2.ValueType | 'ST' | |
OBX.3.ObservationIdentifier | Primary and secondary identifiers from the MedicalDeviceInput node message, and a short description of the measurement type. | |
OBX.5.ObservationValue | Value from the MedicalDeviceInput node message. | |
OBX.6.Units | Units from the MedicalDeviceInput node message. | |
OBX.11.ObservationResultStatus | 'F' | |
OBX.14.DateTimeoftheObservation | Same as MSH.7.DateTimeOfMessage |
The pattern creates multiple OBX segments for waveform messages as they can contain multiple measurements.
In addition to the HL7 messages routed to the destination application, this pattern provides a number of other outputs. These outputs are either written to a queue or sent to a Publication node. The destination is determined by the pattern parameter Publish . If the Publish option is selected, all information is published by using a topic hierarchy that begins with the pattern instance name.
If the Write to queue option is selected, output is sent to queues with names that are generated from the pattern parameter Queue prefix and a fixed set of suffixes, as shown in the following table.
Note: The initial facet of each topic (the pattern instance name) is not shown.
Output | Queue Suffix | Topic | Notes |
---|---|---|---|
Journal | .JRNL | /Journal | This output provides a journal of
incoming messages in standard pattern format.
See Note 1. |
To Transform and Route | .RXF | Not applicable | Each message is sent to the Transform and Route flow. |
Messages in Error | .ERR | Not applicable | Messages that cannot be correctly processed are written to the error queue with error information in an MQRFH2 header. |
Canonical | .CAN | /Canonical | If the option to output a canonical feed is selected, a canonical HL7 form of the input message is written. |
To Sender | .DEST | Not applicable | Each message is sent to the Sender flow after it has been transformed to HL7. |
Expired Messages | .EXP | Not applicable | Messages that have exceeded the configured expiry time are written to this queue. |
Service Log | .LOG | Not applicable | Stores a copy of all SOAP request and response messages for the patient identifiers web service. |
No Matching Patient Identifier | .NOMATCH | Not applicable | Messages that have no matching patient identifier are written to this queue. |
Note 1: A journal message is produced from a source message by adding MQMD and MQRFH2 headers. The MQRFH2 header includes:
Back to the Healthcare: Medical devices to EMR pattern specification