Health1st AI Logo
Core engine · HL7 v2 ↔ FHIR

Turn any HL7 v2 message into validated FHIR — losing nothing.

Bidirectional HL7 v2 ↔ FHIR with round-trip fidelity. Every message type maps to the right FHIR resource, every code is normalized, every bundle is validated against US Core — AI-drafted and human-reviewed. The mapping that used to take weeks is drafted in minutes; your team just reviews it.

  • ADT, ORM, ORU, SIU, MDM, DFT, VXU → the correct FHIR resources
  • Round-trip fidelity: v2 → FHIR → v2, tested and diffed
  • US Core R4.0.1 conformance with exportable reports
  • Custom Z-segments and non-conformant senders handled
HL7 v2.5.1 · ADT^A01inbound
MSH|^~\&|EPIC|HOSP|H1ST|DST|202601..||ADT^A01|
PID|1||MRN12345^^^HOSP^MR||DOE^JOHN^A||
    19701225|M|||123 MAIN ST^^AUSTIN^TX
PV1|1|I|ICU^101^A|||...admit...
DG1|1|I10|E11.9^Type 2 diabetes mellitus
PIDPatient
PV1Encounter
DG1Condition
AIMapping
Agent
validate · normalize · map
FHIR R4 · Bundleoutbound
{ "resourceType": "Patient",
  "identifier": [{ "value": "MRN12345" }],
  "name": [{ "family": "Doe",
             "given": ["John","A"] }],
  "gender": "male",
  "birthDate": "1970-12-25" }

{ "resourceType": "Condition",
  "code": { "coding": [{
    "system": "…/icd-10-cm",
    "code": "E11.9" }] } }
US CoreR4.0.1validated
An inbound HL7 v2.5.1 ADT^A01 admission message is parsed segment by segment — PID maps to a FHIR Patient, PV1 to an Encounter, and the DG1 diagnosis segment (ICD-10 E11.9, Type 2 diabetes) to a FHIR Condition — by the AI Mapping Agent, validated against US Core and FHIR R4.0.1. The reverse direction (FHIR back to HL7 v2) is also supported.

In short

Health1st translates HL7 v2 to FHIR — and FHIR back to HL7 v2 — with AI agents that map, normalize and validate, under human review. An inbound message is parsed segment-by-segment, mapped to the correct FHIR resources (PID → Patient, PV1 → Encounter, OBX → Observation), code-normalized (local lab codes → LOINC, ICD-10 E11.9 → a coded Condition), assembled into a referentially-correct bundle, and validated against US Core R4.0.1. Because most hospitals still run HL7 v2 for real-time messaging, translation is bidirectional with round-trip fidelity — the exact bridge the Cures Act transition to FHIR requires.
Coverage

Every message type, mapped to the right resource

HL7 v2 trigger events map to specific FHIR resources — not a lossy dump into a generic bundle. Here's how the common message types translate.

HL7 v2 messageTrigger eventFHIR resourcesMapping notes
ADTA01/A03/A04/A08 — admit, discharge, register, updatePatient · Encounter · Location · CoveragePID → Patient, PV1 → Encounter, IN1 → Coverage; DG1 → Condition
ORM / OMGO01 — new / changed orderServiceRequest · Specimen · TaskORC/OBR → ServiceRequest; ordering provider → PractitionerRole
ORUR01 — observation / lab resultDiagnosticReport · Observation · SpecimenOBR → DiagnosticReport, OBX → Observation; LOINC-coded
SIUS12/S14/S15 — schedule new, modify, cancelAppointment · Schedule · SlotSCH → Appointment; AIL/AIP → participants & location
MDMT02/T08 — document notification & contentDocumentReference · Composition · BinaryTXA → DocumentReference; OBX content → Binary attachment
DFTP03 — post detail financial transactionChargeItem · Account · ClaimFT1 → ChargeItem; CPT/HCPCS via terminology service
VXUV04 — unsolicited vaccination updateImmunization · PatientRXA → Immunization; CVX-coded vaccine
MFN / ADT mergesMaster files, A40 patient mergePatient (link) · Organization · LocationIdentity merges reconciled by the Identity agent (EMPI)

Reverse direction (FHIR → HL7 v2) is supported for each type, so downstream systems that consume v2 keep working unchanged.

Inside the engine

The translation pipeline, step by step

Parse, map & normalize, assemble, validate — with the right AI agent owning each stage and your team reviewing the result.

  1. 1

    Parse & structure

    The inbound HL7 v2 message is parsed segment-by-segment (MSH, PID, PV1, OBR, OBX, DG1…), with adaptive handling of custom Z-segments and non-conformant senders. Malformed messages are auto-repaired where safe and flagged where not.

  2. 2

    Map & normalize

    The Mapping agent proposes segment→resource mappings; the Terminology agent normalizes codes — HL7 tables to FHIR value sets, local lab codes to LOINC, ICD-10 E11.9 to a coded Condition. Every decision carries a confidence score and a plain-English rationale.

  3. 3

    Assemble the bundle

    Resources are stitched into a referentially-correct FHIR bundle — Patient, Encounter, Condition, Observation — with stable identifiers and provenance so references resolve and nothing is orphaned.

  4. 4

    Validate against US Core

    The Validation agent checks cardinality, must-support elements and value-set bindings against US Core R4.0.1 (and Da Vinci / IPS where relevant), producing an exportable conformance report.

HL7 v2.5.1 · ADT^A01inbound
MSH|^~\&|EPIC|HOSP|H1ST|DST|202601..||ADT^A01|
PID|1||MRN12345^^^HOSP^MR||DOE^JOHN^A||
    19701225|M|||123 MAIN ST^^AUSTIN^TX
PV1|1|I|ICU^101^A|||...admit...
DG1|1|I10|E11.9^Type 2 diabetes mellitus
PIDPatient
PV1Encounter
DG1Condition
AIMapping
Agent
validate · normalize · map
FHIR R4 · Bundleoutbound
{ "resourceType": "Patient",
  "identifier": [{ "value": "MRN12345" }],
  "name": [{ "family": "Doe",
             "given": ["John","A"] }],
  "gender": "male",
  "birthDate": "1970-12-25" }

{ "resourceType": "Condition",
  "code": { "coding": [{
    "system": "…/icd-10-cm",
    "code": "E11.9" }] } }
US CoreR4.0.1validated
An inbound HL7 v2.5.1 ADT^A01 admission message is parsed segment by segment — PID maps to a FHIR Patient, PV1 to an Encounter, and the DG1 diagnosis segment (ICD-10 E11.9, Type 2 diabetes) to a FHIR Condition — by the AI Mapping Agent, validated against US Core and FHIR R4.0.1. The reverse direction (FHIR back to HL7 v2) is also supported.
Beyond HL7 v2

The same engine, every other format

C-CDA, X12, NCPDP and DICOM run through the identical parse → map → validate pipeline — each with its own real code and exchange. Pick a format to see the actual transformation.

C-CDA R2.1 · CCDinbound
<ClinicalDocument>
 <recordTarget><patientRole>
  <patient><name>
   <given>John</given>
   <family>Doe</family></name>
 <section><!-- Problems -->
  <entry><observation>
   <value code="E11.9"/></observation>
ClinicalDocumentComposition
recordTargetPatient
Problems sectionCondition
AIDocument
Agent
validate · normalize · map
FHIR R4 · Bundleoutbound
{ "resourceType": "Composition",
  "type": { "text": "CCD" },
  "title": "Continuity of Care" }

{ "resourceType": "Condition",
  "subject": { "reference":
    "Patient/john-doe" },
  "code": { "coding": [{
    "system": "…/icd-10-cm",
    "code": "E11.9" }] } }
US CoreDocumentReferencevalidated
An inbound C-CDA R2.1 Continuity of Care Document is parsed — the ClinicalDocument header maps to a FHIR Composition, recordTarget to a Patient, and each Problems-section observation (ICD-10 E11.9) to a FHIR Condition — by the AI Document Agent, validated against US Core. The reverse direction (FHIR back to C-CDA) is also supported.

Round-trip fidelity is the honesty test

Anyone can throw an HL7 v2 message at an LLM and get FHIR-shaped JSON back. The hard part is losing nothing. Health1st tests fidelity the only way that matters: it converts v2 → FHIR → v2, diffs the output against the original, and surfaces any drift. Identifiers stay stable, references resolve, coded values survive normalization, and repeated fields aren't collapsed. That's what makes it safe to put in front of a system that still consumes HL7 v2 — and what separates a real engine from a demo.

Stable identifiers

MRNs, order numbers and account IDs preserved across the round trip.

Referential integrity

Every FHIR reference resolves; no orphaned Observations or Conditions.

Coded-value survival

LOINC, SNOMED, ICD-10 and CPT codes map out and back without loss.

How to migrate

From an HL7 v2 feed to validated FHIR in five steps

The same path whether you're modernizing a legacy interface estate or standing up a new FHIR API for CMS-0057-F.

  1. 1

    Point us at a sample feed

    Send a batch of representative HL7 v2 messages — ADT, ORU, whatever your interface carries. The Onboarding agent learns the format, including custom Z-segments, from the samples.

  2. 2

    Review the AI-drafted mapping

    The Mapping and Terminology agents draft segment-to-resource mappings and code crosswalks. Your team reviews each mapping in the studio, with a plain-English explanation and confidence score for every field.

  3. 3

    Validate against US Core

    Run output through the Validation agent to check conformance against US Core, Da Vinci or IPS profiles, and export a conformance report for procurement and audit.

  4. 4

    Round-trip test both directions

    Confirm fidelity by converting v2 → FHIR → v2 (and back) and diffing the result, so no data is lost when messages flow to systems that still speak HL7 v2.

  5. 5

    Promote and deliver

    Approve the mapping, version it, and let the Orchestration agent route messages in real time, batch or streaming — with guaranteed delivery, retry and replay.

Capabilities

What the engine actually guarantees

Not ‘we use AI’ — measurable behavior: bidirectionality, round-trip fidelity, message coverage, terminology accuracy and conformance.

Bidirectional, not one-way

v2 → FHIR to expose modern APIs and patient access; FHIR → v2 to keep feeding the ADT, lab and pharmacy systems that still run HL7 v2. Both directions are first-class.

Round-trip fidelity

Convert v2 → FHIR → v2 and diff the result. The Transformation agent preserves data through the round trip so translation never silently drops fields.

Every message type mapped

ADT, ORM, ORU, SIU, MDM, DFT and VXU each map to the correct FHIR resources — Patient, Encounter, DiagnosticReport, Appointment, DocumentReference, ChargeItem, Immunization.

Terminology done right

HL7 v2 tables to FHIR value sets, local codes to LOINC/SNOMED, ICD-10 to coded Conditions, CPT/HCPCS on charges — normalized and confidence-scored by the Terminology agent.

US Core conformance built in

Output is validated against US Core R4.0.1, Da Vinci and IPS — must-support, cardinality and bindings — with an exportable report auditors and buyers accept.

Z-segments & non-conformant senders

Adaptive parsing handles custom Z-segments, proprietary variants and messy real-world senders, with safe auto-repair of malformed messages and clear flags where review is needed.

One engine, a whole fleet around it

The engine doesn't work alone

Translation is the core — but a clean HL7 v2 ↔ FHIR conversion also needs normalized codes, conformance validation, identity resolution, guaranteed delivery, and a full audit trail. Eight specialized agents surround the engine so every message that ships is correct, conformant, deliverable, and traceable.

The coreHL7 v2 ⇄ FHIR
Translation Engine
parse · map · normalize · validate · deliver

Mapping Agent

AI-drafts the field- and segment-level mappings the engine executes — with rationale your team reviews.

Terminology Agent

Normalizes ICD-10, SNOMED, LOINC, RxNorm & NDC so the mapped output actually passes validation.

Validation Agent

Conformance-tests every bundle against US Core, Da Vinci & IPS before a single message ships.

Orchestration Agent

Routes, retries and guarantees delivery — real-time, batch or streaming — so nothing is silently lost.

Identity Agent

Patient matching / EMPI keeps records lined up across every connected source and destination.

Compliance Agent

Consent, provenance, immutable audit and SMART / OAuth policy on every exchange of PHI.

Observability Agent

Monitors throughput and latency and flags anomalies before they turn into outages.

Onboarding Agent

Learns a new partner's format from sample messages and bootstraps the first interfaces in days.

Diagram: the HL7 v2 to FHIR translation engine sits at the center, surrounded by eight supporting AI agents — Mapping, Terminology, Validation, Orchestration, Identity, Compliance, Observability and Onboarding — that make each conversion correct, conformant, deliverable and auditable.

Follow one message

An inbound ADT^A01 hits the engine. The Mapping Agent drafts the segment-to-resource mapping; the Terminology Agent resolves the DG1 code to ICD-10/SNOMED; the engine assembles the FHIR bundle; the Validation Agent conformance-checks it against US Core; the Identity Agent reconciles the patient; the Compliance Agent records provenance and consent; and the Orchestration Agent delivers it with retry and guaranteed delivery — while Observability watches the whole path. Your analysts review; the agents do the work.

Frequently asked questions

See a live HL7 v2 ↔ FHIR translation on your own messages.

Send us a sample feed. We'll show you the AI-drafted mapping, the US Core conformance report, and the round-trip diff — on a live demo, no obligation.

Explore the platform