ZKELETON//HL7 → FHIR Open converter

HL7 PV1 → FHIR Encounter

The PV1 (patient visit) segment becomes a FHIR R4 Encounter. PV1-2 (patient class) drives both the encounter class and a sensible status, and the provider fields become participants with the right participation type.

The short answer

An HL7 PV1 segment maps to a FHIR Encounter: PV1-2class (I→inpatient, O→ambulatory, E→emergency) and status, PV1-3location, PV1-7/8/9/17participant (attender/referrer/consultant/admitter), PV1-10serviceType, PV1-44/45period.

Field-by-field

HL7 fieldFHIR pathNotes
PV1-2Encounter.class + statusPatient class → v3-ActCode (I→IMP, O→AMB, E→EMER…). Status: a discharge date → finished, P → planned, else in-progress.
PV1-3Encounter.locationAssigned patient location (PL) → point of care / room / bed.
PV1-7 / 8 / 9 / 17Encounter.participantAttending / referring / consulting / admitting provider (XCN), with the matching participation type.
PV1-10Encounter.serviceTypeHospital service (e.g. MED, SUR).
PV1-14 / PV1-36Encounter.hospitalizationAdmit source / discharge disposition.
PV1-19Encounter.identifierVisit number.
PV1-44 / PV1-45Encounter.periodAdmit date/time → start, discharge date/time → end.
PV1-4— surfacedAdmission type is surfaced for review (not yet mapped).

Live example

This is produced by the actual converter — paste your own message and it runs the same way, entirely in your browser.

Live example — run by the actual engine Try this in the converter
HL7 v2 in
MSH|^~\&|ADT|HOSP|ZK|MERIDIAN|20240101103000||ADT^A01|MSG1|P|2.5.1
PID|1||MRN123^^^HOSP^MR||DOE^JANE||19850312|F
PV1|1|I|3West^301^A^HOSP||||1234^SMITH^JOHN^^^DR|||MED|||||||||V100|||||||||||||||||||||||||20240101103000
FHIR R4 out
{
  "resourceType": "Encounter",
  "id": "encounter-1",
  "status": "in-progress",
  "class": {
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
    "code": "IMP",
    "display": "inpatient encounter"
  },
  "identifier": [
    {
      "value": "V100",
      "type": {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
            "code": "VN",
            "display": "Visit number"
          }
        ],
        "text": "VN"
      }
    }
  ],
  "subject": {
    "reference": "urn:uuid:00000000-0000-4000-8000-000000000001"
  },
  "period": {
    "start": "2024-01-01"
  },
  "participant": [
    {
      "type": [
        {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
              "code": "ATND",
              "display": "attender"
            }
          ]
        }
      ],
      "individual": {
        "display": "DR JOHN SMITH",
        "identifier": {
          "value": "1234"
        }
      }
    }
  ],
  "serviceType": {
    "text": "MED"
  },
  "location": [
    {
      "location": {
        "display": "3West, 301, A, HOSP"
      }
    }
  ]
}

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.

Related mappings

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.