Oracle Health (Cerner)
Access
Section titled “Access”- Register through Oracle Health’s code console. A sandbox account and public FHIR documentation are available.
- SMART Backend Services with a JWT. Base and token URLs are built from the customer’s tenant id.
system/*.readis rejected withinvalid_scope. List every scope you need explicitly; the server narrows the grant to what that tenant allows.
Extraction approach
Section titled “Extraction approach”Patient-level search, starting from a known patient list (your denominator). Typical searches:
| Purpose | Search |
|---|---|
| Lab and screening results | Observation?patient=<id>&code=<codes>&date=ge<start> |
| Blood pressure | Observation?patient=<id>&code=85354-9&date=<period> (panel with components) |
| Reports (e.g. mammography) | DiagnosticReport?patient=<id>&date=ge<start> |
| Active problems | Condition?patient=<id>&clinical-status=active |
| Medications | MedicationRequest?patient=<id>&intent=order&date=ge<start> |
| Procedures | Procedure?patient=<id>&date=ge<start> |
Guard against empty parameter values — an empty code= matches nothing rather than everything.
Known behaviour
Section titled “Known behaviour”Small, unordered pages
Section titled “Small, unordered pages”Searches return 10 results per page, in no particular order, unless you ask for more. One
patient with 93 matching records came back as 10 entries and a next link. Always send _count
(100 works) and walk every next link.
The LOINC is not the first coding
Section titled “The LOINC is not the first coding”In blood pressure panels, component.code.coding[0] is a proprietary Cerner code. The LOINC codes
(8480-6 systolic, 8462-4 diastolic) appear later in the array. A parser that reads only
coding[0] silently finds zero readings. Scan every coding.
Encounter types don’t match measure value sets
Section titled “Encounter types don’t match measure value sets”Encounter.type uses local codes that do not match the measures’ qualifying-encounter value sets.
Plan to qualify visits another way.
Missing or coarse dates
Section titled “Missing or coarse dates”- Conditions frequently have no
recordedDate. performedDateTimeon many historical screenings is a year only (2019). Decide how a year-only date is treated against lookback windows and apply it consistently.
Exclusion data is thin
Section titled “Exclusion data is thin”Advanced illness and frailty evidence is not reliably exposed, so the related denominator exclusions are hard to apply from FHIR alone.
It is slow, not busy
Section titled “It is slow, not busy”Per-patient extraction is almost entirely waiting on the server. Running several workers in parallel (each taking a share of the patient list) is the main lever on run time.