HL7 Reference Guide
HL7 is the language many healthcare systems use when they need to tell each other that something happened. A patient was admitted. A visit was updated. A lab order was placed. A result was finalized. An appointment was booked, cancelled, or moved. A document became available. The message may look like a compact wall of pipes and carets, but underneath it is a workflow event that another system is expected to understand.
This guide is here to make that practical. It explains the core HL7 v2 building blocks, gives you reference pages for messages, segments, data types, fields, and tables, and connects those details to the daily work of building interfaces. Use it with HL7 Soup Web when you want to inspect and understand messages, then use Integration Soup when you are ready to receive, transform, route, validate, and send data between systems.
What HL7 is really for
HL7 v2 is not just a file format. It is a set of message contracts used by hospitals, labs, radiology systems, practice-management systems, billing systems, public-health gateways, registries, pharmacy systems, and many other clinical products. Most v2 interfaces are event driven: one system sends a message, another system accepts or rejects it, and both sides rely on the message structure to agree about what happened.
A useful way to read HL7 is from the outside in:
How to start with HL7
The fastest path is not to memorize every segment. Start with one real workflow and follow it end to end. If you are looking at an ADT feed, learn admission, transfer, discharge, update, cancel, and merge behavior. If you are looking at a results feed, learn how the patient, order, specimen, and observation groups hang together. If you are looking at scheduling, learn how appointments, resources, locations, and personnel are represented.
Use HL7 Soup Web to understand the message
HL7 Soup Web is the place to make an HL7 message readable before you build around it. Open, paste, or load sample messages and use the guide alongside the message view: click into fields, see the segment and datatype context, inspect table-backed values, and compare what the sender wrote with what the receiver expects.
That matters because most HL7 mistakes are not obvious in raw text. A value may be in the wrong component. A field may repeat. A code may be valid HL7 but not valid for this receiver. A message may be structurally parseable but still the wrong workflow event. HL7 Soup Web helps you slow the message down enough to see those problems.
Use Integration Soup to connect systems
Once you understand the message, the next job is operational: receive it, check it, transform it, route it, send it, and support it when something fails. That is where Integration Soup fits. It is the workflow and interface-engine side of the work: taking data from one system and making it safe and useful for another.
In a real interface, Integration Soup is where you make the business decisions visible. Route ADT messages by event, facility, patient class, or destination. Convert local lab codes into the receiver's codes. Turn a sender's gender values into the target system's expected codes. Write selected values to a database or create HL7 from database rows, CSV, JSON, XML, or other sources. Capture inbound messages, transformed outbound messages, ACKs, logs, retries, and exceptions so support staff can see what happened.
This is also where you should separate similar-looking concepts. HL7 tables tell you what a field's code set means. Integration Soup lookup tables are transformation assets: source value in, target value out. Built-in or generated data-table values can help with sample data and anonymized testing. Those are all useful, but they are not the same thing, and keeping them separate makes interfaces easier to explain later.
A practical workflow for your first interface
A good first HL7 workflow usually looks like this:
Tutorial path
If you are just beginning, use this guide for the HL7 concepts and the Integration Soup tutorials for hands-on product workflow:
Where to go in this guide
The main idea
HL7 becomes much less intimidating once you stop treating it as a wall of punctuation. Every message is trying to say: this event happened, here is the patient or business context, here are the values the receiver needs, and here is how both sides should prove that the exchange worked. Use this reference to understand that contract. Use HL7 Soup Web to inspect and test the message. Use Integration Soup to turn the contract into a workflow that connects systems together.