Encounter — Care interaction
The clinical context in which every delivered service unfolds: outpatient visit, hospitalisation, emergency, telehealth. Every result, prescription, document points to an Encounter to be bound to a stay.
Purpose
Encounter represents an interaction between a patient and a healthcare provider for the purpose of providing healthcare or assessing the health status of the patient. The resource covers the full duration — from registration to discharge — and every type: outpatient visit, MCO inpatient stay, emergency, home health, telehealth, nursing home, day hospital.
Encounter is the administrative container for clinical data. An
Observation, a Condition, a MedicationRequest, a Procedure all point to the
Encounter via their encounter field to be bound to the stay. This
modelling lets an EHR easily aggregate the data of an episode.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | External identifiers (visit number, encounter id from the HIS). |
status | code | 1..1 | planned, in-progress, on-hold, discharged, completed, cancelled, discontinued, entered-in-error, unknown. |
class | CodeableConcept[] | 0..* | Encounter class (IMP=inpatient, AMB=ambulatory, EMER=emergency, HH=home health, VR=virtual…). |
priority | CodeableConcept | 0..1 | Priority (R=routine, EM=emergency…). |
type | CodeableConcept[] | 0..* | Specific type (SNOMED CT). |
serviceType | CodeableReference(HealthcareService)[] | 0..* | Service rendered (cardiology, ER…). |
subject | Reference(Patient | Group) | 0..1 | Patient or group. |
subjectStatus | CodeableConcept | 0..1 | Subject status (arrived, triaged, departed…). |
episodeOfCare | Reference(EpisodeOfCare)[] | 0..* | Parent care episode (chain of encounters). |
basedOn | Reference[] | 0..* | ServiceRequest / CarePlan that initiated the encounter. |
participant | BackboneElement[] | 0..* | Participants (attending physician, admitting, nurse…) with their role. |
appointment | Reference(Appointment)[] | 0..* | Associated appointment. |
actualPeriod | Period | 0..1 | Actual Encounter period (start, end). |
plannedStartDate | dateTime | 0..1 | Planned admission date. |
length | Duration | 0..1 | Encounter length. |
reason | BackboneElement[] | 0..* | Reason (SNOMED code + Condition reference). |
diagnosis | BackboneElement[] | 0..* | Diagnosis(es) with role (AD=admission, DD=discharge, CC=chief complaint, billing…). |
account | Reference(Account)[] | 0..* | Billing account. |
admission | BackboneElement | 0..1 | Admission details (preAdmissionIdentifier, origin, admitSource, destination, dischargeDisposition). |
location | BackboneElement[] | 0..* | Successive locations occupied (room, bed…). |
serviceProvider | Reference(Organization) | 0..1 | Responsible organisation. |
partOf | Reference(Encounter) | 0..1 | Parent Encounter (encounter of encounters, transfers). |
Status and class
The status + class pair is the most-used semantic:
status=planned + class=IMP— planned admission.status=in-progress + class=IMP— inpatient.status=in-progress + class=EMER— patient in ER.status=in-progress + class=AMB— outpatient consultation in progress.status=in-progress + class=VR— telehealth.status=discharged + class=IMP— discharged, file not finalised.status=completed— file finalised, archived.
JSON example
Emergency admission to ICU for chest pain, status in-progress, class inpatient, priority emergency.
{
"resourceType": "Encounter",
"id": "example",
"status": "in-progress",
"class": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "IMP",
"display": "inpatient encounter"
}]
}],
"priority": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ActPriority",
"code": "EM",
"display": "emergency"
}]
},
"type": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "183807002",
"display": "Inpatient stay 9 days"
}]
}],
"subject": { "reference": "Patient/example" },
"participant": [{
"type": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
"code": "ATND",
"display": "attender"
}]
}],
"actor": { "reference": "Practitioner/example" }
}],
"actualPeriod": {
"start": "2026-05-14T10:25:30+01:00"
},
"reason": [{
"value": [{
"concept": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "29857009",
"display": "Chest pain"
}]
}
}]
}],
"diagnosis": [{
"condition": [{ "reference": { "reference": "Condition/example" } }],
"use": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/diagnosis-role",
"code": "AD",
"display": "Admission diagnosis"
}]
}]
}],
"location": [{
"location": { "reference": "Location/icu-101a", "display": "ICU room 101 bed A" },
"status": "active"
}],
"serviceProvider": { "reference": "Organization/hosp01" }
} class=IMP(inpatient encounter),priority=EM(emergency).participantwith typeATND(attender) references a Practitioner.diagnosiswith roleAD(admission diagnosis) points to a Condition.locationwithstatus=activeshows the current bed (ICU 101 bed A).
REST API
GET /Encounter/example— direct fetch.GET /Encounter?patient=example&status=in-progress— patient's active encounters.GET /Encounter?patient=example&date=ge2026-05-01— recent encounters.GET /Encounter?patient=example&class=IMP— hospitalisations.GET /Encounter/example/$everything— composite operation returning all resources attached to the Encounter.
Profiles
| Profile | Regulator | Restrictions |
|---|---|---|
| US Core Encounter | HL7 US Realm | Must carry status, class, type, subject, actualPeriod, and a participant with role. |
| IPS Encounter | HL7 + CEN/TC 251 | Minimum cardinality + international value sets. |
| FR Core Encounter | ANS | Must carry identifier (IEP) and link the Organization to FINESS. |
Common pitfalls
- Wrong
classcode system: using SNOMED CT forclassinstead of v3-ActCode makesclass=IMPqueries fail. Always usev3-ActCode. status/subjectStatusconfusion:statusis administrative (planned, in-progress…),subjectStatusis the clinical state of the patient (arrived, triaged, departed…).- Multiple
actualPeriod.startwithoutend: an Encounter stuck in-progress indefinitely pollutes queries. Always close (status=discharged + actualPeriod.end) on discharge. - No HIS-side
identifier: without an IEP / visit number, you cannot correlate with v2 flows (PV1-19). Always carry a typed identifier. - Duplicate locations: each move (room transfer, bed change) adds an entry to
locationwith its ownperiod. Only one entry should havestatus=active. - Missing reference to Patient: an Encounter without
subjectis anonymous and illegal in production (regulators).
Related resources
- Patient — encounter subject.
- Practitioner — referenced by
participant. - Condition — encounter diagnosis.
- Observation — clinical data linked via
encounter. - EpisodeOfCare — parent episode (multiple Encounters for the same problem).
- Appointment — originating appointment.
- Account — associated billing.
- HL7 v2 equivalent — ADT^A01 segment PV1.