Skip to main content

Observation

Overview

The Observation resource represents clinical observations and measurements within the Provider System Access API. Observations capture vital signs, laboratory results, assessments, and other clinical findings that support healthcare delivery and quality reporting.

Key Use Cases:

  • Retrieve patient vital signs and measurements
  • Access laboratory test results and diagnostic findings
  • Query clinical assessments and survey responses
  • Support quality reporting and clinical decision making

Relationships to Other Resources:

  • Patient - Observations are made about specific patients
  • Encounter - Observations are often recorded during healthcare encounters
  • Practitioner - Healthcare providers who perform or interpret observations
  • Organization - Healthcare organizations where observations are made

Resource Schema

Key fields in the Observation resource:

{
"resourceType": "Observation",
"id": "string",
"identifier": [
{
"system": "http://example.org/observation-id",
"value": "obs-123"
}
],
"status": "registered|preliminary|final|amended|corrected|cancelled|entered-in-error|unknown",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "vital-signs|laboratory|procedure|survey|exam|therapy|activity",
"display": "Vital Signs"
}
]
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "85354-9",
"display": "Blood pressure panel with all children optional"
}
]
},
"subject": {
"reference": "Patient/patient-123"
},
"encounter": {
"reference": "Encounter/encounter-456"
},
"effectiveDateTime": "2023-12-01T10:30:00Z",
"valueQuantity": {
"value": 120,
"unit": "mmHg",
"system": "http://unitsofmeasure.org",
"code": "mm[Hg]"
}
}

Key Fields:

  • id - Unique identifier for the observation
  • status - Current state of the observation
  • category - Classification of observation type
  • code - What was observed (LOINC codes preferred)
  • subject - Patient the observation is about
  • encounter - Healthcare encounter when observation was made
  • effectiveDateTime - When observation was made
  • value[x] - Actual result or finding

Operations

Read

Retrieve a specific observation by ID.

GET /Observation/{id}
Example Request
curl -X GET https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Observation/obs-123 \
-H "Accept: application/fhir+json"

Search for observations using various criteria.

GET Method

Use GET for simple searches with parameters in the query string.

GET /Observation?parameter=value

POST Method

Use POST for complex searches with form-encoded parameters.

POST /Observation/_search

Search Parameters

Patient-based Search:

ParameterTypeRequiredDescriptionExample
patientreferenceYesPatient the observation is aboutpatient=Patient/patient-123
categorytokenNoObservation categorycategory=vital-signs
codetokenNoObservation codecode=85354-9
datedateNoDate/time of observationdate=2023-12-01
encounterreferenceNoEncounter when observation was madeencounter=Encounter/encounter-456
statustokenNoObservation statusstatus=final

ID-based Search:

ParameterTypeRequiredDescriptionExample
categorytokenNoObservation categorycategory=vital-signs
codetokenNoObservation codecode=85354-9
datedateNoDate/time of observationdate=2023-12-01
encounterreferenceNoEncounter when observation was madeencounter=Encounter/encounter-456
statustokenNoObservation statusstatus=final

Common Search Patterns

Find vital signs for a patient:

GET /Observation?patient=Patient/patient-123&category=vital-signs&status=final

Search by observation code:

GET /Observation?code=85354-9&_count=20

Find observations from specific encounter:

GET /Observation?encounter=Encounter/encounter-456

Search by date range:

GET /Observation?patient=Patient/patient-123&date=ge2023-01-01&date=le2023-12-31

Examples

Request Examples

Find patient vital signs
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Observation/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "patient=Patient/patient-123&category=vital-signs&_count=10"
Search by observation code
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Observation/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "code=85354-9&status=final"
Find laboratory results
curl -X POST https://fhir.netsmartcloud.com/provider/system-access/v2/{tenant-id}/Observation/_search \
-H "Accept: application/fhir+json" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "patient=Patient/patient-123&category=laboratory&_count=5"

Response Examples

Successful Search Response

Observation Search Bundle
{
"resourceType": "Bundle",
"type": "searchset",
"total": 2,
"entry": [
{
"resource": {
"resourceType": "Observation",
"id": "obs-123",
"identifier": [
{
"system": "http://example.org/observation-id",
"value": "obs-123"
}
],
"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 with all children optional"
}
]
},
"subject": {
"reference": "Patient/patient-123"
},
"encounter": {
"reference": "Encounter/encounter-456"
},
"effectiveDateTime": "2023-12-01T10: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]"
}
}
]
}
}
]
}

Individual Observation Response

Single Observation Resource
{
"resourceType": "Observation",
"id": "obs-456",
"identifier": [
{
"system": "http://example.org/observation-id",
"value": "obs-456"
}
],
"status": "final",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/observation-category",
"code": "laboratory",
"display": "Laboratory"
}
]
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "33747-0",
"display": "Hemoglobin A1c/Hemoglobin.total in Blood"
}
]
},
"subject": {
"reference": "Patient/patient-123"
},
"encounter": {
"reference": "Encounter/encounter-789"
},
"effectiveDateTime": "2023-11-15T08:00:00Z",
"valueQuantity": {
"value": 6.5,
"unit": "%",
"system": "http://unitsofmeasure.org",
"code": "%"
},
"referenceRange": [
{
"low": {
"value": 4.0,
"unit": "%"
},
"high": {
"value": 6.0,
"unit": "%"
},
"text": "Normal range for non-diabetic adults"
}
]
}

Empty Result Set

No Observations Found
{
"resourceType": "Bundle",
"type": "searchset",
"total": 0,
"entry": []
}

Integration Patterns

Common Workflows

1. Retrieve Patient Vital Signs

# Step 1: Search for vital signs observations
GET /Observation?patient=Patient/patient-123&category=vital-signs

# Step 2: Get specific observation details
GET /Observation/obs-123

# Step 3: Find related encounter information
GET /Encounter/encounter-456

2. Laboratory Results Review

# Step 1: Find laboratory observations for patient
GET /Observation?patient=Patient/patient-123&category=laboratory

# Step 2: Filter by date range
GET /Observation?patient=Patient/patient-123&category=laboratory&date=ge2023-01-01

# Step 3: Get specific lab result
GET /Observation/obs-456
  • Patient - Subjects of observations
  • Encounter - Healthcare encounters when observations are made
  • Practitioner - Healthcare providers performing observations
  • Organization - Healthcare organizations where observations occur

Include Parameters

Use _include to fetch related resources in a single request:

# Get observation with patient information
GET /Observation?code=85354-9&_include=Observation:patient

# Get observation with encounter details
GET /Observation?patient=Patient/patient-123&_include=Observation:encounter

Error Handling

The Observation resource follows standard FHIR error handling patterns. For detailed error responses and troubleshooting guidance, see the Common Errors page.

Observation-Specific Error Scenarios

  • 404 Not Found: Observation ID doesn't exist or has been deleted
  • 400 Bad Request: Invalid search parameters or malformed queries
  • Empty Results: No observations match the search criteria

Troubleshooting Tips

  • Empty Results: Verify patient exists and has observations in the specified date range
  • Invalid Parameters: Check parameter names match the FHIR specification
  • Performance Issues: Use _count parameter to limit result sets and improve response times

Supported Profiles