Back to blogFHIR & HL7 Standards

FHIR resources explained: Patient, Encounter, Observation and the ones you'll use most

The FHIR resources you'll actually use in healthcare integration, explained one by one: Patient, Encounter, Observation and the rest of the working set.

WeHub21/07/2026 · ~6 min read
Summarize this article with:
The preview of FHIR resources explained: Patient, Encounter, Observation and the ones you'll use most post

Written for the integration architect and hands-on engineer, on either side of the Atlantic; UK Core and US Core are named as the profiling layers so the piece travels. It deliberately targets resource-level queries rather than "what is FHIR" definitional ground, and its distinctive value is the boundary discipline (Observation versus Condition, Practitioner versus PractitionerRole) that generic references list but don't argue for. Anchors the UK Core conformance and v2-to-FHIR mapping pieces, and links back to the standards map as its hub.

The integration spec lands and it names fifteen FHIR resources. The team, sensibly, treats them like database tables to populate, and three sprints later the estate has vital signs stored as Conditions, diagnoses stored as Observations, and an Encounter resource being used as a general-purpose notes field. Everything validates. Nothing means what it should.

FHIR's resource model rewards a little upfront orientation. This is that orientation: the dozen or so resources real integrations actually touch, what each is for, and the boundaries between them that matter.

In brief

FHIR expresses healthcare data as resources: small, self-contained records with defined structures, linked to each other by references. The specification defines well over a hundred types, but a working set of roughly a dozen carries most integrations, and it splits naturally into four groups: identity (Patient, Practitioner, Organization, Location), activity (Encounter, Appointment, ServiceRequest, MedicationRequest), findings (Observation, Condition, DiagnosticReport) and paperwork (DocumentReference, Bundle). The most common failures aren't structural; they're category errors, like recording diagnoses as Observations, and they're avoidable once the boundaries are clear.

How to read a FHIR resource

Four habits make every resource below easier to work with. First, every resource is mostly optional by design; the profiles you build against (UK Core in the NHS, US Core in the States) are what make elements mandatory. Second, resources point at each other through references, and a resource whose references don't resolve is a sentence with missing words. Third, coded content lives in a structure called CodeableConcept: a code, the system it comes from, and a human-readable display, which is where terminology governance meets the resource model. Fourth, status fields (an Encounter that's planned versus in-progress versus finished, an Observation that's preliminary versus final) carry real clinical meaning and are the elements downstream logic most often ignores.

The identity set: Patient, Practitioner, Organization, Location

Every resource in this group answers a "who" or "where" question that the rest of the working set points back to.

  • Patient the anchor: it holds demographics and, crucially, identifiers. In a UK context the NHS number sits here in a defined identifier slot, and almost every other resource in the working set points back to a Patient.
  • Practitioner identifies a person by their professional identity, independent of any specific role.
  • PractitionerRole captures that same person acting in a role. Dr Rahman as a human is a Practitioner, while Dr Rahman as a cardiology consultant at a specific organisation is a PractitionerRole.
  • Organization supplies the institutional context, such as the Trust, the practice, or the department.
  • Location pins down the physical context, such as the ward, the consulting room, or the site.

The boundary that matters: Practitioner and PractitionerRole are easily flattened into one, and systems that do it spend years untangling clinicians who work across sites.

fhir working set map

The activity set: Encounter, Appointment, ServiceRequest, MedicationRequest

This group is about intent and activity, distinct from what was found, which belongs to the next group.

  • Encounter marks an episode of interaction, such as an admission, an outpatient appointment, or an A&E attendance. It has a class (inpatient, ambulatory, emergency), a status lifecycle, and start and end times, and it's the resource that gives clinical events their "when and in what context".
  • Appointment reserves a practitioner, location and time ahead of the visit actually happening, sitting just before the Encounter in time. It carries its own status lifecycle (proposed, booked, arrived, fulfilled, cancelled, noshow), separate from the Encounter's.
  • ServiceRequest carries the ask, such as a lab order, an imaging request, or a referral.
  • MedicationRequest records the prescription: what was ordered, for whom, by whom, and with what instructions.

The boundary that matters: Appointment and Encounter are easy to conflate. An Appointment can be booked and cancelled without any Encounter ever existing, and a walk-in Encounter can happen with no Appointment behind it at all.

The findings set: Observation, Condition, DiagnosticReport

This group is about what was found, not what was requested or done.

  • Observation does the heavy lifting: a measurement or simple assertion at a point in time, such as a blood pressure reading, a potassium level, or a smoking status. It carries a coded "what" and a value, and it can hold components for multi-part results.
  • Condition works differently: it represents a clinical state with duration and management, such as a diagnosis or a problem-list entry.
  • DiagnosticReport acts as the grouping layer: the pathology or radiology report that packages a set of Observations with a conclusion, mirroring how results actually arrive from a lab.

The boundary that matters: Observation versus Condition is the single most common modelling error in FHIR work. A fasting glucose result is an Observation; the diabetes it contributes to diagnosing is a Condition.

The paperwork set: DocumentReference and Bundle

This group is about how document-shaped and resource-shaped data travel.

  • DocumentReference points to a document, such as a discharge summary PDF, a clinic letter, or a scanned form, carrying metadata about what it is and where it lives.
  • Bundle acts as the container: a set of resources travelling together as search results, as an atomic transaction, or as a message representing one event with everything it touches. If you've come from HL7 v2, a message Bundle is the nearest cousin to a classic v2 message.

Where teams misuse resources

Six patterns account for most of the pain, and all are boundary errors rather than syntax errors. Diagnoses recorded as Observations (or results as Conditions), which corrupts problem lists and analytics alike. Practitioner and PractitionerRole flattened into one, which breaks the moment a clinician works two roles. Codes sent without their system, which turns a CodeableConcept into an ambiguous string. Status fields defaulted and ignored, so preliminary results are treated as final. Appointment and Encounter merged into a single resource, usually because a scheduling system and a clinical system were integrated as if they recorded the same event, which breaks the moment a booking is cancelled that should never have touched a clinical record at all. And references to resources that were never sent, leaving receivers with orphaned pointers. None of these fail validation against base FHIR, which is exactly why profiles and terminology binding, covered in the UK Core piece on this blog, exist. This working set is also the level at which platforms operate day to day; producing, consuming and reshaping these resources inside workflows is the bread and butter WeHub Studio and Term were built for.

The bottom line

Don't learn a hundred resources; learn these well, and learn the boundaries between them better. The set above covers the overwhelming majority of real integration traffic, and the discipline that matters most is category: findings versus conditions, people versus roles, activity versus paperwork. A concrete first step: take your current integration's payloads and label every piece of clinical content with which resource it should be. The mislabels you find are cheaper to fix now than after they've spent a year in a shared record.

Keywords

FHIR resources explainedFHIR Patient resourceFHIR Observationcommon FHIR resourcesFHIR EncounterCodeableConceptFHIR Bundle
ShareLinkedInX

Ready to fix this in your workflow stack?

Talk to the people who build the platform not a sales desk reading from a script.

Frequently asked questions

The specification defines well over a hundred, but a working set of roughly a dozen (the identity, activity, findings and paperwork groups above) carries most real integrations. Learn those deeply and look the rest up as they arrive.

An Observation is a point-in-time measurement or assertion: a result, a vital sign, a status. A Condition is a clinical state with duration and management: a diagnosis or problem-list entry. A glucose reading is an Observation; the diabetes is a Condition, and keeping that boundary clean is what keeps problem lists trustworthy.

It's FHIR's structure for coded content: the code itself, the code system it belongs to (SNOMED CT, LOINC and so on) and a human-readable display. A code without its system is ambiguous, which is why terminology governance and the resource model are inseparable in practice.

Because people and roles have different lifecycles. One human clinician (Practitioner) may hold several roles across organisations and specialties (PractitionerRoles), and modelling them separately is what lets systems represent that reality without duplicating people.

Ready when you are

Turn healthcare workflow ideas into production-ready delivery.

Pick the products you need and an integration specialist will get you set up. No call centre, no hard sell just a straight conversation about your integration.

Talk to sales