FHIR Resources Explained: A Complete Guide
Laksh Patel, Founder, HealthInterops
Laksh Patel is the Founder of HealthInterops and creator of HL7ToolBox. With more than 17 years of software engineering experience and over 5 years specializing in healthcare interoperability, he has designed and delivered more than 3,000 healthcare interfaces across hospitals, laboratories, and enterprise healthcare systems.
This article is reviewed and maintained by the HL7ToolBox Team.
TL;DR
FHIR (Fast Healthcare Interoperability Resources) organizes healthcare information into reusable building blocks called Resources. Each resource represents a specific healthcare concept—such as a patient, appointment, observation, medication, or encounter—and can be exchanged using REST APIs and JSON.
Understanding the most common FHIR resources is essential for developers, integration engineers, healthcare analysts, and anyone building modern healthcare applications.
What Are FHIR Resources?
FHIR Resources are standardized data models defined by the HL7 FHIR specification. Each resource represents a single healthcare concept and can be independently created, updated, searched, or deleted using standard REST APIs.
Examples include:
- Patient
- Observation
- Practitioner
- Organization
- Appointment
- Encounter
- Medication
- DiagnosticReport
Unlike HL7 v2 messages, which bundle many types of information into delimited text messages, FHIR separates healthcare information into structured resources that are linked together through references.
Why FHIR Resources Matter
FHIR Resources provide several advantages:
- Standardized healthcare data
- Easy-to-use REST APIs
- JSON and XML support
- Cloud-native architecture
- Mobile-friendly applications
- AI-ready structured data
- Better interoperability between healthcare systems
Modern EHRs, patient portals, telemedicine platforms, and healthcare mobile apps increasingly rely on FHIR Resources.
Most Common FHIR Resources
| Resource | Purpose |
|---|---|
| Patient | Patient demographics |
| Practitioner | Healthcare provider |
| Organization | Hospital or clinic |
| Encounter | Patient visit |
| Appointment | Scheduled visit |
| Observation | Laboratory and clinical results |
| DiagnosticReport | Complete diagnostic reports |
| Condition | Diagnoses |
| Medication | Medication information |
| MedicationRequest | Medication prescriptions |
| AllergyIntolerance | Allergies |
| Procedure | Clinical procedures |
| Immunization | Vaccinations |
| Coverage | Insurance information |
| Bundle | Collection of resources |
Patient Resource
The Patient resource stores demographic information about an individual receiving healthcare.
- Name
- Gender
- Date of Birth
- Address
- Phone Number
- Identifiers
{
"resourceType": "Patient",
"id": "10001",
"identifier": [
{
"system": "https://hospital.example.org/mrn",
"value": "MRN10001"
}
],
"name": [
{
"family": "Smith",
"given": ["John"]
}
],
"gender": "male",
"birthDate": "1988-06-15"
}Common REST API:
GET /Patient/10001Practitioner Resource
Represents healthcare professionals such as Physicians, Nurses, Pharmacists, or Therapists.
{
"resourceType": "Practitioner",
"id": "2001",
"name": [
{
"family": "Johnson",
"given": ["Emily"]
}
]
}Common uses include linking providers to encounters, orders, and procedures.
Organization
Represents Hospitals, Laboratories, Clinics, Imaging Centers, or Insurance Companies.
{
"resourceType": "Organization",
"id": "hospital-1",
"name": "City General Hospital"
}Encounter
Represents an interaction (Emergency, Outpatient, Admission, Telehealth).
{
"resourceType": "Encounter",
"status": "finished",
"subject": {
"reference": "Patient/10001"
}
}Appointment
Used for scheduling healthcare appointments.
{
"resourceType": "Appointment",
"status": "booked",
"description": "Cardiology Consultation"
}Observation Resource
Stores laboratory results, vital signs, and clinical measurements (e.g. Blood Pressure, Glucose, WBC, Temperature, Pulse, Oxygen Saturation).
Example
{
"resourceType": "Observation",
"status": "final",
"code": {
"text": "White Blood Cell Count"
},
"valueQuantity": {
"value": 7.8,
"unit": "10^9/L"
}
}HL7 Equivalent: OBX
DiagnosticReport Resource
Groups multiple observations into a complete report (e.g. CBC, Pathology, Radiology, MRI, CT Scan).
Example
{
"resourceType": "DiagnosticReport",
"status": "final",
"code": {
"text": "Complete Blood Count"
}
}HL7 Equivalent: OBR + OBX
More Common Resources
Condition
Patient diagnoses (Diabetes, Hypertension).
HL7 = DG1Medication
Medication details (e.g. Amoxicillin 500 mg).
MedicationRequest
Prescriptions written by providers.
HL7 = ORMAllergyIntolerance
Patient allergy info.
HL7 = AL1Procedure
Surgery, Colonoscopy, Endoscopy, etc.
Immunization
Vaccination records.
Coverage
Insurance information.
HL7 = IN1Bundle Resource
The Bundle resource groups multiple FHIR resources into a single request or response.
Common Bundle Types:
- transaction
- batch
- collection
- document
- message
- searchset
{
"resourceType": "Bundle",
"type": "collection",
"entry": [
{
"resource": {
"resourceType": "Patient"
}
},
{
"resource": {
"resourceType": "Observation"
}
}
]
}Common Uses: Patient summaries, Bulk data exchange, Search results, FHIR messaging
Relationships Between FHIR Resources
A patient visit may involve many connected resources:
FHIR uses references to connect resources rather than embedding all information into a single message.
REST Operations
Every FHIR resource supports standard HTTP methods.
| Method | Operation |
|---|---|
| GET | Read resource |
| POST | Create resource |
| PUT | Update resource |
| PATCH | Partial update |
| DELETE | Remove resource |
| SEARCH | Query resources |
Best Practices
- Use resource references instead of duplicating information.
- Validate resources against FHIR profiles.
- Use standard terminologies (SNOMED CT, LOINC, ICD-10) where appropriate.
- Support pagination for large search results.
- Implement OAuth 2.0 and SMART on FHIR for secure access.
- Version your APIs and profiles as requirements evolve.
Common Mistakes
- Embedding unrelated information in a single resource.
- Ignoring required elements.
- Using custom extensions when standard fields exist.
- Failing to validate JSON payloads.
- Not handling resource references correctly.
Conclusion
FHIR Resources are the foundation of modern healthcare interoperability. By breaking healthcare information into standardized, reusable building blocks, FHIR makes it easier to build secure, scalable, and interoperable applications.
Whether you're creating a patient portal, integrating an EHR, building a laboratory interface, or developing AI-powered healthcare solutions, understanding resources such as Patient, Observation, Encounter, Appointment, Medication, and Bundle is essential.
As healthcare organizations continue adopting FHIR, mastering these resources will help developers and integration professionals build future-ready healthcare applications.
Frequently Asked Questions
What is a FHIR Resource?
A FHIR Resource is a standardized data structure that represents a specific healthcare concept, such as a patient, appointment, observation, or medication.
Which FHIR Resource stores patient demographics?
The Patient resource contains demographic information, identifiers, contact details, and other patient-specific data.
What is the difference between Observation and DiagnosticReport?
An Observation represents a single clinical measurement or result, while a DiagnosticReport groups multiple observations into a complete report.
What is a Bundle in FHIR?
A Bundle is a container that groups multiple FHIR resources into a single request or response. Common bundle types include `transaction`, `batch`, `collection`, `document`, and `searchset`.
How are FHIR Resources connected?
Resources are linked using references. For example, an Encounter resource references a Patient resource, and an Observation resource can reference both the Patient and the Encounter.
How do FHIR Resources differ from HL7 v2 messages?
HL7 v2 exchanges delimited text messages that contain multiple segments, while FHIR represents healthcare data as individual resources exchanged through REST APIs using JSON or XML.
Try HL7Toolbox
Explore and validate healthcare data using:
- FHIR Viewer – Visualize FHIR JSON in an easy-to-read format.
- FHIR Validator – Validate FHIR resources against the specification.
- HL7 Parser – Parse HL7 v2 messages and compare them with FHIR resources.
- HL7 Compare Tool – Compare different HL7 messages during migration projects.
References
- HL7 International FHIR resource model
- FHIR API implementation and healthcare application patterns
- Patient, Observation, Encounter, DiagnosticReport, and Bundle workflow examples
Editorial Review
HL7ToolBox content is written and reviewed by healthcare integration professionals with hands-on experience in HL7 v2.x, FHIR, healthcare APIs, and enterprise healthcare interfaces.