FHIR Resources: The Building Blocks of Healthcare Data

The Reader's Dilemma
Dear Marilyn,I keep hearing about FHIR "resources" but I'm confused. There are over 150 of them! How do I know which ones to use? And how do they connect to each other? It feels like I need a PhD just to understand a patient record.
Marilyn's Reply
Don't be overwhelmed by the number. Think of FHIR resources like LEGO blocks. Yes, there are thousands of different LEGO pieces, but most creations use only a handful of common ones. In healthcare, about 80% of your work will involve just 10-15 core resources.
The Spark: Understanding Core FHIR Resources
Patient Resource
The Patient resource is the heart of FHIR. It represents the individual receiving care and contains demographics, identifiers, and contact information.
{
"resourceType": "Patient",
"id": "example-patient",
"identifier": [{
"system": "http://hospital.org/mrn",
"value": "12345"
}],
"name": [{
"use": "official",
"family": "Smith",
"given": ["John", "Michael"]
}],
"gender": "male",
"birthDate": "1980-01-15",
"address": [{
"use": "home",
"line": ["123 Main Street"],
"city": "Boston",
"state": "MA",
"postalCode": "02101"
}],
"telecom": [{
"system": "phone",
"value": "555-123-4567",
"use": "mobile"
}]
}Key Insight: A patient can have multiple identifiers (MRN, SSN, insurance ID), multiple names (maiden name, married name), and multiple addresses. FHIR handles this complexity elegantly with arrays.
Observation Resource
The Observation resource captures measurements, test results, and clinical findings. It's incredibly versatile—used for vital signs, lab results, social history, and more.
{
"resourceType": "Observation",
"id": "blood-pressure",
"status": "final",
"category": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs",
"display": "Vital Signs"
}]
}],
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "85354-9",
"display": "Blood pressure panel"
}]
},
"subject": {
"reference": "Patient/example-patient"
},
"effectiveDateTime": "2024-01-15T10:30:00Z",
"component": [
{
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8480-6",
"display": "Systolic blood pressure"
}]
},
"valueQuantity": {
"value": 120,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
},
{
"code": {
"coding": [{
"system": "http://loinc.org",
"code": "8462-4",
"display": "Diastolic blood pressure"
}]
},
"valueQuantity": {
"value": 80,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}
]
}Key Insight: Notice the subject field with a reference to the Patient. This is how FHIR resources link together—through references that create a web of connected data.
MedicationRequest Resource
The MedicationRequest resource represents a prescription or order for medication. It captures what drug, how much, how often, and for how long.
{
"resourceType": "MedicationRequest",
"id": "prescription-001",
"status": "active",
"intent": "order",
"medicationCodeableConcept": {
"coding": [{
"system": "http://www.nlm.nih.gov/research/umls/rxnorm",
"code": "197361",
"display": "Lisinopril 10 MG Oral Tablet"
}]
},
"subject": {
"reference": "Patient/example-patient"
},
"authoredOn": "2024-01-15",
"requester": {
"reference": "Practitioner/dr-jones"
},
"dosageInstruction": [{
"text": "Take one tablet by mouth once daily",
"timing": {
"repeat": {
"frequency": 1,
"period": 1,
"periodUnit": "d"
}
},
"route": {
"coding": [{
"system": "http://snomed.info/sct",
"code": "26643006",
"display": "Oral route"
}]
},
"doseAndRate": [{
"doseQuantity": {
"value": 1,
"unit": "tablet"
}
}]
}],
"dispenseRequest": {
"numberOfRepeatsAllowed": 3,
"quantity": {
"value": 30,
"unit": "tablet"
},
"expectedSupplyDuration": {
"value": 30,
"unit": "days"
}
}
}Encounter Resource
The Encounter resource represents an interaction between a patient and healthcare provider. It could be an office visit, hospital stay, or telehealth session.
{
"resourceType": "Encounter",
"id": "office-visit-001",
"status": "finished",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "AMB",
"display": "ambulatory"
},
"type": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "185349003",
"display": "Encounter for check up"
}]
}],
"subject": {
"reference": "Patient/example-patient"
},
"participant": [{
"individual": {
"reference": "Practitioner/dr-jones"
}
}],
"period": {
"start": "2024-01-15T09:00:00Z",
"end": "2024-01-15T09:30:00Z"
},
"reasonCode": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "38341003",
"display": "Hypertensive disorder"
}]
}]
}How Resources Connect
FHIR resources form a graph of interconnected data. Here's how a typical patient visit connects:
This reference-based architecture allows you to query related data efficiently. Want all observations from a specific encounter? Just search by the encounter reference.
The Gauntlet: Test Your Knowledge
Quick Check
Which FHIR resource would you use to store a patient's blood pressure reading?
Quick Check
How do FHIR resources link to each other?
Quick Check
What coding system is commonly used for medication codes in FHIR?
Quick Check
What does the 'status' field in an Observation resource indicate?
Quick Check
Which resource represents a healthcare interaction like an office visit or hospital stay?