ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.

EncounterHistory — Historical states of an Encounter

A new resource introduced in FHIR R5. Captures every significant transition of a stay (ward change, unit transfer, administrative class change) without mutating the parent Encounter resource.

Purpose of the resource

Before R5, a status change of an Encounter — admission, ward transfer, temporary trip to a scanner, final discharge — was either represented by updating the Encounter (history loss) or by creating several distinct Encounters (semantic-link loss). EncounterHistory settles the debate: one stable parent Encounter + N EncounterHistory resources, one for each transition.

Typical cases: patient admitted in ED, transferred to ICU, then promoted to a pulmonary ward, finally discharged. Four EncounterHistory entries for a single pivot Encounter.

Key fields

FieldTypeCardinalityRole
identifierIdentifier[]0..*External identifiers.
encounterReference(Encounter)0..1Pivot Encounter.
statuscode1..1Encounter status at that point (in-progress, finished…).
classCodeableConcept1..1Encounter class at that point (IMP, AMB, EMER, FLD…).
typeCodeableConcept[]0..*Specific transition type.
serviceTypeCodeableReference0..*Caring service.
subjectReference(Patient | Group)0..1Affected patient.
subjectStatusCodeableConcept0..1Patient state (conscious, sedated…).
actualPeriodPeriod0..1Actual period of this history slice.
plannedStartDate / plannedEndDatedateTime0..1Planned period.
lengthDuration0..1Total duration.
locationBackboneElement[]0..*Locations occupied during the slice (bed, room, ward).

JSON example

History slice for the transfer of a patient to ICU between 08:15 and 18:30:

json encounterhistory-example.json
{
  "resourceType": "EncounterHistory",
  "id": "transfer-to-icu",
  "identifier": [{ "system": "http://hospital.example/encounters/history", "value": "EH-2026-0042" }],
  "encounter": { "reference": "Encounter/example-stay" },
  "status": "in-progress",
  "class": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
      "code": "IMP",
      "display": "Inpatient encounter"
    }]
  },
  "type": [{
    "coding": [{
      "system": "http://snomed.info/sct",
      "code": "11486-8",
      "display": "Critical care transfer"
    }]
  }],
  "subject": { "reference": "Patient/example" },
  "actualPeriod": {
    "start": "2026-05-16T08:15:00+02:00",
    "end": "2026-05-16T18:30:00+02:00"
  },
  "location": [{
    "location": { "reference": "Location/icu-room-101" },
    "form": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/location-physical-type",
        "code": "ro",
        "display": "Room"
      }]
    },
    "period": {
      "start": "2026-05-16T08:15:00+02:00",
      "end": "2026-05-16T18:30:00+02:00"
    }
  }]
}

Typical use cases

  • Ward transfers: ADT^A02 translated into EncounterHistory for each transfer.
  • Temporary trip: scanner, MRI, outpatient consultation during a stay.
  • Outpatient → inpatient conversion: ADT^A06.
  • Bed management trace: bed occupancy by hour, bed optimisation.
  • Identity vigilance audit: every class change is traced.

Common pitfalls

  • EncounterHistory without encounter: floating history is unusable. Always link to the pivot Encounter.
  • Updating the Encounter AND creating EncounterHistory: keep the Encounter immutable and create one EncounterHistory per transition; otherwise dual traceability.
  • Overlapping periods: actualPeriod of two consecutive EncounterHistory must be consistent (end of A = start of B).
  • Status (resource) / Encounter current status confusion: EncounterHistory.status represents the Encounter state at that history point, not the current state.
  • No location: if the slice represents a location change, omitting location makes the slice useless.
  • Encounter — the pivot resource.
  • Location — each occupied location.
  • Patient — subject.
  • EpisodeOfCare — multi-Encounter episode.
  • Account — billing by slice.

See also: Encounter — the pivot resource and ADT^A02 — legacy v2 transfer.