HL7 v2.5.1 FHIR R4 converter

Paste a v2.5.1 message (ADT, ORM, ORU, SIU, ACK) and get a FHIR R4 message Bundle — or paste a Bundle and get the pipe-delimited message back. Every mapped element is traced field by field, and anything the mapping drops is listed rather than silently lost.

● Runs entirely in your browser — no uploads, no network calls
Source
Output

  

What this does, and what it doesn't

HL7 v2.5.1 and FHIR R4 do not line up one-to-one. v2 is a positional, segment-oriented wire format with a lot of site-local convention baked in; FHIR is a resource graph with required codings and canonical value sets. Any converter has to make choices, so this one makes them visible: the Mapping trace tab lists every element it read and where it put it, and the Not carried over tab lists every populated field it did not read. If a field matters to you and it shows up in that second list, the conversion lost it.

Segments understood

MSH MSA ERR EVN PID PV1 AL1 DG1 IN1 MRG ORC OBR OBX NTE SCH ZDS — the segment set defined in this site's HL7 v2.5.1 reference, which is where the field names and code tables used here come from. Segments outside that set are reported as unmapped rather than dropped quietly.

Message types

ADT A01/A02/A03/A04/A05/A08/A11/A13/A28/A31/A40, ORM^O01, ORR^O02, ORU^R01, SIU^S12 and ACK. Structure validation (required segments present, segment order) runs against those definitions.

Bundle shape

HL7 → FHIR emits a Bundle of type: "message": a MessageHeader built from MSH, followed by the resources it produced, each with a fullUrl. Resource ids are derived deterministically from the content, so converting the same message twice gives byte-identical output — useful for diffing two messages through the converter. FHIR → HL7 accepts that Bundle, any other Bundle, or a single bare resource.

Known simplifications

How faithful is it?

Press Round-trip check on any sample. Five of the six built-in messages come back byte-identical apart from the simplifications listed above; the SIU sample loses its RGS and AIS segments, which this converter does not map, and says so. The check is the honest answer to "can I trust this?" for your message, not just for the samples.