Skip to content

FHIR Translation Matrix

Synura translates HL7v2 messages into FHIR R4 resources. Every translation is deterministic, auditable and round-trip tested. This page documents exactly what goes in and what comes out.

When an HL7v2 message arrives at Synura, the translation engine parses each segment, maps it to the corresponding FHIR resource and produces a compliant FHIR R4 Bundle. The original HL7v2 message is preserved in the audit log. Nothing is discarded, nothing is inferred, nothing is hallucinated.

Translation happens at the exchange layer. The sending system does not change. The receiving system gets clean FHIR. Both sides keep working the way they always have.

Translation is part of the Translate tier and everything above it. Every standard HL7v2 message type listed on this page is in scope. Every FHIR resource listed on this page is produced.

Customers configure their own mapping rules per connection. Synura runs the translation engine and provides the rule format. If your implementation is standard, configure and go.

For non-standard implementations, Orchestrate adds bespoke translation work. Synura account engineers build the rules with you, test them against your real message traffic and deploy them. Custom message types, custom Z-segment schemas and organisation-specific field interpretations live there.


Admissions, Discharges and Transfers (ADT)

Section titled “Admissions, Discharges and Transfers (ADT)”

ADT messages are the backbone of patient flow. They tell downstream systems when a patient arrives, leaves or moves.

Triggered when a patient is admitted. Carries demographics, visit details, next of kin, insurance and diagnosis information.

What comes in (HL7v2)What comes out (FHIR R4)
Patient demographics (name, DOB, address, NHS/MRN, gender, contact details)Patient
Visit details (admission date, ward, bed, attending clinician, admission type)Encounter
Sending and receiving system identifiers, message timestamp, event typeMessageHeader
Next of kin (name, relationship, contact number, address)RelatedPerson
Admission diagnosis (ICD-10/SNOMED codes, description, clinical status)Condition
Allergy alerts (allergen, reaction type, severity, clinical status)AllergyIntolerance
Insurance and coverage details (plan, group number, subscriber, period)Coverage

Triggered when a patient is discharged. Carries final diagnosis, discharge disposition and updated visit details.

What comes in (HL7v2)What comes out (FHIR R4)
Patient demographicsPatient
Visit details including discharge date, disposition and discharge locationEncounter (status: finished)
Message routing and event metadataMessageHeader
Discharge diagnosis codes and descriptionsCondition
Updated allergy information recorded during stayAllergyIntolerance

Triggered when patient information changes. Carries updated demographics, visit amendments or corrected clinical data.

What comes in (HL7v2)What comes out (FHIR R4)
Updated patient demographics (address change, GP change, contact update)Patient
Amended visit details (ward transfer, clinician change, expected discharge)Encounter
Message routing and event metadataMessageHeader
Updated next of kin or emergency contact detailsRelatedPerson
Revised diagnosis codesCondition
New or updated allergy recordsAllergyIntolerance
Updated insurance or coverage detailsCoverage

Lab results are the highest-volume message type in most health data exchanges. A single patient encounter can generate dozens of ORU messages.

Triggered when a lab or diagnostic system produces a result. Carries the test, the values, the reference ranges and the clinical context.

What comes in (HL7v2)What comes out (FHIR R4)
Patient demographicsPatient
Visit or encounter contextEncounter
Test results (LOINC codes, values, units, reference ranges, abnormal flags)Observation (one per result line)
Report metadata (report status, result status, performing lab, report date)DiagnosticReport (groups related Observations)
Original order reference that triggered this resultServiceRequest
Message routing and event metadataMessageHeader
Clinical notes or comments attached to resultsAnnotation (on DiagnosticReport)

Order messages initiate clinical workflows. A provider sends an order; a lab, pharmacy or radiology department receives it.

Triggered when a clinician places an order for a test, procedure or service. Carries the order details, clinical context and patient information.

What comes in (HL7v2)What comes out (FHIR R4)
Patient demographicsPatient
Visit or encounter contextEncounter
Order details (test code, priority, specimen requirements, ordering clinician)ServiceRequest
Message routing and event metadataMessageHeader
Diagnosis justifying the order (ICD-10/SNOMED code, clinical indication)Condition
Clinical notes or special instructions for the performing labAnnotation (on ServiceRequest)

Scheduling messages coordinate appointments between systems. They carry the who, when, where and why of every booked slot.

Triggered when an appointment is booked. Carries patient, clinician, location, time and reason for visit.

What comes in (HL7v2)What comes out (FHIR R4)
Patient demographicsPatient
Appointment details (date, time, duration, location, type, status)Appointment
Visit contextEncounter
Reason for appointment (referral, follow-up, clinical indication)Condition or ServiceRequest (depending on context)
Message routing and event metadataMessageHeader

Pharmacy messages carry medication orders from prescriber to dispenser. They contain the drug, dose, route, frequency and clinical justification.

Triggered when a prescriber creates or updates a medication order. Carries the full prescription with structured dosing instructions.

What comes in (HL7v2)What comes out (FHIR R4)
Patient demographicsPatient
Medication details (drug code, dose, route, frequency, duration, quantity)MedicationRequest
Visit or encounter contextEncounter
Diagnosis justifying the prescriptionCondition
Allergy information relevant to prescribing decisionsAllergyIntolerance
Insurance and formulary coverageCoverage
Message routing and event metadataMessageHeader

Standard HL7v2 has edges. Custom message types, locally defined Z-segments and organisations that interpret the spec their own way. For these, Orchestrate adds bespoke translation work.

If your systems send non-standard or locally defined message types, Synura maps them. We build the translation rules with you, test them against your real message traffic and deploy them across your endpoints.

Z-segments are the HL7 escape hatch. They carry organisation-specific data that no standard segment covers.

Z-segment passthrough as FHIR Extensions is baseline Translate. The data is preserved without loss; downstream systems receive the Extensions and interpret them as they need.

Custom Z-segment schemas live at Orchestrate. Synura builds the FHIR mapping for each Z-field with semantic meaning specific to your organisation, so the engine produces canonical FHIR with full structured semantics rather than passthrough Extensions.

Standard translations assume standard implementations. In practice, every organisation interprets the HL7 spec slightly differently. Field overloading, local code systems, non-standard segment ordering. Orchestrate-tier mapping work encodes your organisation’s specific interpretation of the spec so what arrives in FHIR is exactly what was intended in HL7.


Every resource Synura produces conforms to FHIR R4 (v4.0.1). Resources are bundled as FHIR Transaction Bundles with proper references between resources (Patient referenced by Encounter, Encounter referenced by Observation, and so on).

FHIR ResourceWhat it represents
PatientThe individual receiving care. Demographics, identifiers, contact details.
EncounterA clinical interaction. Admission, visit, appointment.
ObservationA measured or observed value. Lab result, vital sign, assessment score.
DiagnosticReportA clinical report grouping related observations. Lab panel, radiology report.
ServiceRequestAn order or referral for a service, test or procedure.
MessageHeaderRouting metadata. Source, destination, event type, timestamp.
RelatedPersonA person related to the patient. Next of kin, emergency contact, guardian.
ConditionA clinical condition, diagnosis or problem. ICD-10 or SNOMED coded.
AllergyIntoleranceA recorded allergy or adverse reaction. Drug, food, environmental.
CoverageInsurance or funding coverage. Plan, subscriber, period.
AnnotationClinical notes or comments attached to a resource.
AppointmentA scheduled clinical event. Date, time, location, participants.
MedicationRequestA prescription or medication order. Drug, dose, route, frequency.
ExtensionsOrganisation-specific data preserved from non-standard HL7 segments (Z-segment passthrough).

Synura translates structured HL7v2 messages into structured FHIR resources. It does not:

  • Infer missing data. If a field is empty in the HL7 message, the corresponding FHIR element is absent. No guessing.
  • Validate clinical content. Synura validates message structure, not clinical accuracy. A diagnosis code passes through if it is syntactically valid, regardless of clinical appropriateness.
  • Store patient data beyond transit. Messages are processed, translated and delivered. The audit log records metadata (timestamps, message types, status). Payload data is not retained after delivery.

Questions about translation coverage for your specific message types? hello@synura.io