Developers / HL7 v2
Laboratories, imaging, PAS and device feeds

HL7 v2 still runs most feeds. We take it as it comes

Point your MLLP sender at a HealthOS listener and keep sending what you send today. Results land as structured data against the right person, and vital signs land on the chart where they are scored.

In short

  • MLLP over TCP, with TLS and optional client certificates.
  • An ACK for every message, with AE or AR and a reason when we can’t take it.
  • ORU^R01 results are filed per person, with critical values raised to the care team.

Step by step: Send HL7 v2 results and vital signs over MLLP, with screenshots of each step.

The listener

Each feed is its own connector in the provider’s HealthOS, with its own listener port. The provider’s administrator sets which sending facilities it accepts (MSH-4 and MSH-6) and, if they want, which message types each one may send. A message from a facility the connector doesn’t know, or of a type it hasn’t allowed, is held back rather than filed.

Messages run through the ESB like any other source, so the provider can see each one, its mapping and what it wrote in the admin portal’s flow history.

Acknowledgements

Every message gets an ACK with your MSH-10 control id in MSA-2. If an ACK goes missing and you resend the same MSH-10, the message is filed once.

MSA-1MeansWhat to do
AAAccepted and filedMove on
AEUnderstood, but it couldn’t be processed. MSA-3 says whyFix the message and resend it
ARRejected, usually a malformed message or one this feed doesn’t acceptCheck the feed’s set-up with the provider

Results

An ORU^R01 is matched to a person in the receiving organisation on the identifiers in PID-3 (MRN, IHI and Medicare number) and filed as structured results, one per OBX, with units, reference ranges and abnormal flags. LOINC codes are kept as sent.

A value flagged critical raises a notification to the treating team, so the result reaches someone who can act on it. A result we can’t match to a person isn’t filed against a guess. It is reported back, and the provider sees it in the flow history.

Vital signs

A bedside monitor, a vitals cart or a remote monitoring hub can send observations in an ORU^R01 with LOINC vital sign codes. Those become a charted vital signs set, the same as one a nurse enters, so the NEWS score is calculated and the deterioration rules run.

One OBR group with its OBX segments is one set. Anything we can’t map with confidence, such as an unknown code, a unit we can’t convert or a value outside charting ranges, is filed as a structured result instead. Nothing is dropped.

Other message types

ADT and other message types come in through the same listener and are mapped by the connector’s templates in the ESB. If you send something unusual, send us samples and we’ll map it with the provider.

TLS

MLLP has no security of its own, so any feed that crosses more than a private link should run MLLP over TLS. Listeners accept TLS 1.2 or 1.3, and can require a client certificate from a CA the provider names. A listener that is meant to be encrypted never quietly falls back to plain TCP.

Send us a sample feed

A day of de-identified messages is enough for us to show you how they will land.