ZKELETON//HL7 → FHIR Open converter

A free, in-browser HL7 v2 parser

Paste a raw HL7 v2 message and see it parsed into segments and fields — then converted to FHIR R4. It runs entirely in your browser, so you can parse real messages with PHI without uploading anything.

The short answer

This is a free online HL7 v2 parser that runs 100% in your browser. Paste a raw pipe-delimited HL7 message and it parses the segments and fields it recognizes — then goes one step further and emits a valid FHIR R4 bundle, surfacing anything it can’t place rather than dropping it. Nothing is uploaded; no message leaves the page, so you can safely parse real messages that contain PHI.

What it parses

Parse & convert — live

Here is a real lab result message parsed and converted by the engine. Paste your own into the converter and watch it happen as you type.

Live example — run by the actual engine Try this in the converter
HL7 v2 in
MSH|^~\&|LAB|RIVERSIDE|ZK|MERIDIAN|20240101103000||ORU^R01|MSG1|P|2.5.1
PID|1||MRN123^^^HOSP^MR||DOE^JANE^Q||19850312|F
OBR|1||ORD9|24323-8^Comprehensive metabolic panel^LN
OBX|1|NM|2345-7^Glucose^LN||105|mg/dL|70-99|H|||F
FHIR R4 out
{
  "resourceType": "Observation",
  "id": "observation-1",
  "status": "final",
  "category": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/observation-category",
          "code": "laboratory",
          "display": "Laboratory"
        }
      ]
    }
  ],
  "code": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "2345-7",
        "display": "Glucose"
      },
      {
        "system": "http://loinc.org",
        "code": "2339-0",
        "display": "Glucose"
      }
    ],
    "text": "Glucose"
  },
  "subject": {
    "reference": "urn:uuid:00000000-0000-4000-8000-000000000001"
  },
  "valueQuantity": {
    "value": 105,
    "unit": "mg/dL",
    "system": "http://unitsofmeasure.org",
    "code": "mg/dL"
  },
  "interpretation": [
    {
      "coding": [
        {
          "code": "H",
          "system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation",
          "display": "High"
        }
      ],
      "text": "High"
    }
  ],
  "referenceRange": [
    {
      "low": {
        "value": 70,
        "unit": "mg/dL",
        "system": "http://unitsofmeasure.org",
        "code": "mg/dL"
      },
      "high": {
        "value": 99,
        "unit": "mg/dL",
        "system": "http://unitsofmeasure.org",
        "code": "mg/dL"
      },
      "text": "70-99"
    }
  ]
}

Nothing needed review for this message

Every populated field above was mapped. When a field can’t be mapped, it appears here instead of being dropped — that’s the guarantee.

Why parse in the browser?

Open the parser

Built by Zkeleton

Zkeleton builds conversion and data infrastructure for healthcare. This converter is free, runs entirely in your browser, and never sends a message anywhere — we keep it open because clean data plumbing should be a commodity, not a toll.