HL7 Messages are used to transfer electronic data between disparate healthcare systems, each sending information about a particular event such as a patient admission. HL7 messages are in human-readable (ASCII) format, though they may require some effort to interpret. This section describes the contents of an HL7 message and how an HL7 message is organized.
An HL7 message consists of one or more segments. Each segment is displayed on a different line of text. A carriage return character (\r, which is 0D in hexadecimal) separates one segment from another.
Each segment consists of one or more composites, also known as fields. A pipe (|) character is used to separate one composite from another. If a composite contains other composites, these sub-composites (or sub-fields) are normally separated by caret (^) characters.
Here’s a fun animated video that demonstrates exactly what an HL7 message looks like:
Check out the following blog for a more deeper dive: https://blog.interfaceware.com/understanding-hl7-messages/
The following sections elaborate further on the intricacies of an HL7 message and how to read the standard. For more information about the different HL7 message types and their uses, please see our HL7 Message Types page.
In an HL7 message, each segment of the message contains one specific category of information, such as patient information or patient visit data. The name of each segment in the message is specified by the first field of the segment, which is always three characters long. Over 120 different HL7 segments are available for use in HL7 messages, this example message contains four HL7 segments: MSH, PID, NK1 and PV1. Different types of HL7 messages contain different HL7 segments.
The HL7 segments in this example contain the following information:
With HL7 messages being used to communicate all kinds of healthcare related information to a variety of disparate systems, sometimes HL7 messages need to contain customized data that cannot be included in any defined segment for its message type. To accommodate for this, the HL7 Standard enables system vendors to create a Z-segment with customized fields to transmit this data.
By convention, all custom segments begin with the letter Z. For example, a ZPD segment could be created to contain customized patient demographics information. Z-segments can be placed anywhere in an HL7 message, however are typically located as the last segment in a message. Applications that process HL7 messages are usually configured to ignore HL7 Z-segments that they do not know how to handle.
For more information on how Iguana can support custom Z-segments, please visit https://help.interfaceware.com/v6/hl7-custom-zsegment.
Each segment of an HL7 message consists of one or more composites (also known as fields). By default, the | (pipe) character is used to separate one composite from another.
A composite can be a primitive data type (such as a character string or a number), or can contain other composites. If a composite contains other composites, these sub-composites (or sub-fields) are normally separated by ^ characters. If a sub-composite also contains composites, these sub-sub-composites are normally separated by & characters. Sub-sub-composites must be primitive data types.
For an example of a typical composite, consider the PID segment of the sample message seen in the previous sections:
PID||0493575^^^2^ID 1|454721||DOE^JOHN^^^^|DOE^JOHN^^^^|19480203|M||B|254 MYSTREET AVE^^MYTOWN^OH^44123^USA||(216)123-4567|||M|NON|400003403~1129086|
In this segment, the fifth composite is the patient name, which is DOE^JOHN^^^^. (The four ^^^^ characters at the end of this composite indicates that it has a total of six sub-composites, and that only the first two of the sub-composites are defined.) In this composite, DOE represents the family name of the patient, and JOHN is the patient’s given name.
In order to be as flexible as possible and achieve a consensus, the HL7 committees were forced to define many segment fields as optional. The downside of this decision is that you cannot be certain that particular information will be present in a given message. This is one of the reasons why the same message may vary significantly from vendor to vendor.
In HL7 messages, certain special characters separate one composite in a segment from another, or separate one sub-composite from another. These special characters are known as delimiter characters.
The following table lists the default delimiter characters used in HL7:
|0x0D||Marks the end of each segment.|
|~||Separates repeating fields.|