What Is FHIR? How the HL7 FHIR Standard Works
FHIR is the HL7 standard for exchanging healthcare data through web APIs. This guide explains resources, the REST API, profiles, extensions and versions in plain terms.
Key takeaways
- FHIR (Fast Healthcare Interoperability Resources) is a standard from HL7 International that models healthcare data as small, reusable resources exchanged over web APIs.
- Most real-world FHIR traffic is RESTful HTTP with JSON payloads, but the specification also supports XML, messaging, documents and bulk export.
- The base specification is deliberately generic; profiles and implementation guides such as US Core define what a specific system or country actually requires.
- FHIR R4 (4.0.1) is the version most production systems and regulations target today, while R5 (5.0.0, published 2023) adds features many organizations are still evaluating.
FHIR in one paragraph
FHIR (Fast Healthcare Interoperability Resources) is a standard for representing and exchanging healthcare information electronically. It is published by HL7 International, the same standards body behind HL7 v2 and CDA. Instead of large, monolithic messages or documents, FHIR breaks clinical and administrative data into small, well-defined building blocks called resources (Patient, Observation, Encounter, MedicationRequest and so on) and exposes them through a web API that any developer familiar with HTTP and JSON can read.
That combination of a precise healthcare data model with ordinary web technology is why FHIR spread quickly. A team that has built a REST API before can make its first FHIR request in minutes, yet the resource definitions carry decades of clinical modeling experience. If you are trying to understand how FHIR relates to older HL7 standards, read HL7 vs FHIR after this guide.
Resources: the building blocks
A resource is the smallest unit of exchange in FHIR that makes sense on its own. Each resource type has a defined set of elements, data types, cardinality rules and a stable identity: every instance has a logical id and can be addressed at a URL such as [base]/Patient/123. The base specification defines roughly 150 resource types, grouped into areas such as foundation, base (individuals, entities, workflow), clinical, financial and specialized.
Resources link to each other through references. An Observation points to its subject Patient, an Encounter points to the Location and Practitioner involved, and a MedicationRequest points to the requester. Following those references lets a client assemble a full clinical picture without the server needing to pre-package it. Our FHIR resources guide walks through the resource types you will meet most often.
{
"resourceType": "Patient",
"id": "example-123",
"identifier": [
{ "system": "http://hospital.example.org/mrn", "value": "MRN-004512" }
],
"name": [{ "family": "Rivera", "given": ["Ana"] }],
"gender": "female",
"birthDate": "1984-07-19"
}Every resource can also carry a human-readable narrative (an XHTML summary in text), plus meta information such as version id, last-updated timestamp and the profiles it claims to conform to.
How FHIR works: the RESTful API
The most common way to use FHIR is its RESTful API. Resources live at predictable URLs and are manipulated with standard HTTP verbs. The specification defines a small set of interactions that every developer should know:
| Interaction | HTTP pattern | What it does |
|---|---|---|
| read | GET [base]/Patient/123 | Retrieve the current version of one resource |
| vread | GET [base]/Patient/123/_history/4 | Retrieve a specific historical version |
| search | GET [base]/Observation?patient=123&code=http://loinc.org|8867-4 | Find resources matching search parameters; returns a Bundle |
| create | POST [base]/Observation | Create a new resource; the server assigns the id |
| update | PUT [base]/Patient/123 | Replace a resource (or create it at a client-chosen id, if allowed) |
| patch | PATCH [base]/Patient/123 | Change part of a resource |
| delete | DELETE [base]/Patient/123 | Remove a resource |
| capabilities | GET [base]/metadata | Return the server's CapabilityStatement |
| batch / transaction | POST [base] with a Bundle | Submit several operations at once; a transaction succeeds or fails as a unit |
Beyond these, FHIR defines operations, invoked with a $ prefix, for behavior that does not fit simple CRUD: $everything on Patient, $validate, terminology operations such as $expand and $translate, and $export for bulk data. Servers declare which interactions, search parameters and operations they support in their CapabilityStatement, so a client can discover what is possible before sending real traffic. The FHIR API integration guide covers those mechanics in depth.
Formats and other exchange paradigms
FHIR resources have three official serializations: JSON, XML and RDF (Turtle). JSON dominates modern API work; XML remains common where existing tooling expects it. Clients select a format with the Accept header (application/fhir+json or application/fhir+xml) or the _format parameter.
REST is not the only option. The same resources can travel in other ways:
- Documents: a Bundle of type document whose first entry is a Composition, used for signed, persistent clinical documents such as discharge summaries.
- Messaging: a Bundle of type message with a MessageHeader, for event-driven exchange similar in spirit to HL7 v2.
- Subscriptions: servers notify clients when relevant data changes. R5 redesigned this around subscription topics, and a backport implementation guide brings that model to R4.
- Bulk data: the FHIR Bulk Data Access IG defines $export, which produces newline-delimited JSON files for population-level analytics and payer use cases.
Profiles, implementation guides and extensions
The base specification is intentionally broad so it can serve hospitals, labs, payers, public health and research worldwide. Almost every element is optional. That flexibility is useful, but two systems that are both "FHIR compliant" can still fail to understand each other. Profiles solve this.
A profile is a StructureDefinition that constrains a base resource for a particular use: making elements required, fixing code systems, limiting cardinality and marking which elements a system must support. Profiles, along with value sets, search parameter rules and narrative guidance, are packaged into an implementation guide (IG). In the United States, the US Core IG is the foundation that certified EHR APIs are tested against; other countries publish their own national base IGs, and domains such as payer exchange, oncology and public health have specialized IGs.
When the base model lacks something you need, FHIR provides extensions. Every resource and data type can carry extensions identified by a canonical URL that points to a definition. Extensions keep the core model small while letting local needs be represented in a computable, discoverable way. Elements marked modifierExtension change the meaning of the data and must be understood by the receiver, so they are used sparingly.
Practical rule
When someone says a system "supports FHIR", ask which version, which implementation guide and which profiles. Those three answers tell you far more than the word FHIR alone.
FHIR versions and maturity
FHIR was first published as a draft standard in 2014 and has gone through several releases. Each release is a separate, versioned specification, and resources are not automatically compatible across releases.
| Release | Version | Notes |
|---|---|---|
| DSTU2 | 1.0.2 | Early widely implemented release; still seen in legacy APIs |
| STU3 | 3.0.x | Intermediate release with significant adoption in some regions |
| R4 | 4.0.1 | First release with normative content (including Patient, Observation and the REST API); the current production baseline for most systems |
| R4B | 4.3.0 | Interim release that updated selected non-normative areas while keeping R4's normative content |
| R5 | 5.0.0 | Published in 2023; reworked subscriptions and many workflow resources |
Within each release, every resource carries a FHIR Maturity Model (FMM) level from 0 to 5, or a Normative status. Normative content is expected to change only in backward-compatible ways, which is why regulators and EHR vendors anchored on R4. For a detailed look at the differences, see FHIR R4 vs R5.
Who maintains FHIR and how it is used
HL7 International maintains FHIR through an open, consensus-based process. Work groups made up of volunteers from providers, vendors, payers and governments propose changes, publish ballots and resolve comments. Anyone can read the specification for free at hl7.org/fhir and follow development builds, and an open-source reference server, HAPI FHIR, along with HL7's official validator, help implementers test their work.
Regulation has accelerated adoption. In the US, the 21st Century Cures Act and ONC's certification rules require certified EHRs to offer standardized FHIR APIs secured with SMART on FHIR, and CMS rules require many payers to expose FHIR APIs for patient access, provider access, payer-to-payer exchange and prior authorization. Other countries are building national FHIR profiles for health records exchange. The result is that FHIR is now the default choice for new healthcare APIs, even when HL7 v2 still carries much of the traffic inside hospitals.
If you are planning a project, the FHIR implementation playbook explains the steps, and the FHIR integration companies directory lists firms that do this work.
Frequently asked questions
What does FHIR stand for?
FHIR stands for Fast Healthcare Interoperability Resources. It is pronounced "fire" and is published by HL7 International.
Is FHIR a database or a product?
Neither. FHIR is a specification for data models and APIs. Products such as FHIR servers, EHR APIs and integration platforms implement it, and many store data in their own internal formats while exposing FHIR at the interface.
Does FHIR replace HL7 v2?
Not in the short term. HL7 v2 remains the workhorse for in-hospital event messaging, and most organizations run both. FHIR is the usual choice for new APIs, apps and cross-organization access. See FHIR vs HL7 v2 for a detailed comparison.
Which FHIR version should I build on?
For most production work today, R4 (4.0.1) is the safe default because regulations, US Core and major EHR APIs target it. Evaluate R5 for new internal platforms where you control both ends, and track R6 development for the long term.
Is FHIR free to use?
Yes. The specification is published openly by HL7 International and can be implemented without paying licensing fees. Some code systems referenced by FHIR, such as SNOMED CT or CPT, have their own licensing terms.
References
- HL7 FHIR Overview
- HL7 FHIR R4 specification (4.0.1)
- HL7 FHIR R5 specification (5.0.0)
- HL7 FHIR US Core Implementation Guide
- FHIR Bulk Data Access IG
FHIR® is a registered trademark of HL7 International. This guide is independent educational content and is not legal or compliance advice.
Related guides
- HL7 vs FHIR: What's the Difference?"HL7 or FHIR?" is a confusing question because FHIR is an HL7 standard. This guide separates the organization from its family of standards and explains where each fits.
- FHIR Resources Explained: Structure, Categories and Key ResourcesA practical tour of FHIR resources: what every resource contains, how they are grouped, the ones you will meet in almost every integration, and how references, maturity levels and profiles fit together.
- FHIR API Integration: How It Works End to EndA practical walk-through of integrating with a FHIR REST API, from reading the CapabilityStatement to authentication, searching, paging, error handling, rate limits and testing.
- FHIR R4 vs R4B vs R5: What Changed and Which Version to UseR5 brings topic-based subscriptions, CodeableReference and a batch of new resources, yet most production systems still run R4. Here is what changed and how to decide.
Related FHIR services
- FHIR IntegrationWhat FHIR integration services include, how projects are delivered, technical risks to plan for, and the questions to ask before hiring an integration partner.
- HL7 FHIR ConsultingWhat HL7 FHIR consultants deliver, from interoperability strategy and regulatory readiness to architecture reviews and IG authoring, and how to pick a firm.
- FHIR API DevelopmentHow FHIR API development services design and build compliant FHIR REST APIs: profiles, CapabilityStatements, SMART auth, testing and choosing a capable team.
Find the Right FHIR Integration Partner for Your Healthcare Project
Tell us what you need to build or connect. We review every request and share a short list of relevant vendors from our directory — no obligation.