By EHR
Oracle Health (Cerner) bulk FHIR export for research.
Clinical Extract connects to Oracle Health, formerly Cerner, as a System application on your tenant and runs the Cerner bulk FHIR export for the study cohort’s Group through Oracle Health’s certified FHIR R4 API. The variables your protocol approved come back as study.csv with a data dictionary.
1 Works with Oracle Health
Oracle Health support on your tenant.
Oracle Health’s certified API (ONC §170.315(g)(10)) exports a Group of patients through HL7 FHIR Bulk Data Access with system-level SMART authorization. Clinical Extract uses that exchange for the token request on your tenant, the Group kickoff, the status poll under bulk-export/jobs and each file download, read-only and in your environment.
This is the Cerner bulk data export under Oracle Health’s name. Your tenant ID appears in every URL, which keeps the export to your organization, and the Group you name keeps it to the study cohort.
- The study cohort as NDJSON, flattened to CSV
- Patient, Encounter, Condition, Observation, MedicationRequest and Procedure files land in your study folder. Clinical Extract writes the approved variables to study.csv, with a data-dictionary.json entry for each column.
- Coded columns
- Diagnoses, biomarkers, staging, medications and procedures come out as ICD-10-CM, LOINC, RxNorm and SNOMED CT codes, each column traced to its FHIR element.
- The oncology lens
- ER, PR, HER2, PD-L1, EGFR, KRAS, BRAF, ALK, MSI and TNM clinical and pathologic arrive as named columns.
- Roster pull and the cohort builder
- Match a list of MRNs or names with graded results, or build the cohort from coded criteria and read the feasibility count before the export.
2 Connecting
Registering in code Console and enabling your tenant.
Oracle Health setup happens once, in three steps.
- Register. In code Console, Clinical Extract is an application of type System. Its system account is issued in Cerner Central, its public keys are held as a JWKS in System Account Management, and its system scopes are one
system/<Resource>.readscope per exported type plussystem/Group.read. The system account’s client ID is issued. - Activate. Your organization enables the application for your tenant, whose tenant ID names it in every URL, and names the study Group.
- Export. The token request goes to authorization.cerner.com for your tenant, the kickoff to your tenant’s Group and the status poll to the job URL. Each file URL answers 307 to the NDJSON file, which Clinical Extract fetches with the bearer token.
Our team also builds Oracle Health interfaces outside research.
3 Export time
Minutes per study on Oracle Health.
Jones et al. (JAMIA, 2024) measured (g)(10) bulk export at five sites: Cerner ran above 8,000 resources per minute, and it took the sites 2 to 119 days (mean 65) from submitting cohort criteria to the first successful bulk request. Clinical Extract asks your tenant only for the study cohort and the resource types the protocol names. A 212-patient study of about 58,000 resources exports in minutes at that rate, and with the criteria and the count from the cohort builder, your organization sets up the study Group when the protocol is approved.
The export runs asynchronously. Clinical Extract polls the job URL at the interval Retry-After gives and downloads every file the manifest lists, following each 307 to its NDJSON file. Source: Jones et al. J Am Med Inform Assoc. 2024, doi:10.1093/jamia/ocae040.
Every header of the kickoff, status and manifest exchange is in our guide to bulk FHIR export.
4 Facts
Oracle Health connection facts.
| Endpoint | FHIR R4 base https://fhir-ehr.cerner.com/r4/{tenant-id}; the tenant ID names your organization in every URL |
|---|---|
| Registration | code Console: an application of type System; its system account issued in Cerner Central, Clinical Extract’s public keys as a JWKS in System Account Management, one system/<Resource>.read scope per exported type plus system/Group.read |
| Authentication | SMART Backend Services: a JWT signed RS384 with Clinical Extract’s private key, exchanged at https://authorization.cerner.com/tenants/{tenant-id}/protocols/oauth2/profiles/smart-v1/token for an access token with one system/<Resource>.read scope per exported type plus system/Group.read |
| Export type | Group export: GET .../r4/{tenant-id}/Group/{group-id}/$export with _type; 202 Accepted with a Content-Location status URL under bulk-export/jobs |
| Status and files | 202 with Retry-After while the export runs; 200 with the JSON manifest; each bulk-export/files URL answers 307 to the NDJSON file, fetched with the bearer token, one resource per line |
| Output | study.csv (UTF-8, one row per cohort patient, one column per approved variable) with data-dictionary.json (description, fhirSource and example per column); the NDJSON files and the manifest kept beside them in your study folder |
The table scrolls sideways.
Sources: Oracle Health FHIR R4 documentation, HL7 Bulk Data Access, SMART Backend Services.
5 Specimens
What the exchange and the output look like.
Every value is synthetic. The cohort is a 212-patient breast cancer study with 24 approved variables; the manifest counts and the row shown come from it.
GET https://fhir-ehr.cerner.com/r4/{tenant-id}/Group/{group-id}/$export
?_type=Patient,Encounter,Condition,Observation,MedicationRequest,Procedure
Accept: application/fhir+json
Prefer: respond-async
Authorization: Bearer {access token}
202 Accepted
Content-Location: https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/jobs/{job-id} { "transactionTime": "2026-09-28T14:02:11Z", "request": "https://fhir-ehr.cerner.com/r4/{tenant-id}/Group/{group-id}/$export?_type=Patient,Encounter,Condition,Observation,MedicationRequest,Procedure", "requiresAccessToken": true, "output": [ { "type": "Patient", "url": "https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/files/{file-1}", "count": 212 }, { "type": "Encounter", "url": "https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/files/{file-2}", "count": 3120 }, { "type": "Condition", "url": "https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/files/{file-3}", "count": 1684 }, { "type": "Observation", "url": "https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/files/{file-4}", "count": 48310 }, { "type": "MedicationRequest", "url": "https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/files/{file-5}", "count": 3905 }, { "type": "Procedure", "url": "https://fhir-ehr.cerner.com/r4/{tenant-id}/bulk-export/files/{file-6}", "count": 912 } ], "error": [] }
{"resourceType":"Observation","id":"eObs-3f9a","status":"final","category":[{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/observation-category","code":"laboratory"}]}],"code":{"coding":[{"system":"http://loinc.org","code":"16112-5","display":"Estrogen receptor [Interpretation] in Tissue"}]},"subject":{"reference":"Patient/eKx3p9Qa"},"effectiveDateTime":"2024-03-20","valueCodeableConcept":{"coding":[{"system":"http://snomed.info/sct","code":"10828004","display":"Positive"}]}} patient_ref,birth_year,gender,dx_code,dx_date,stage_group,er_status,pr_status,her2_status,first_chemo
eKx3p9Qa,1961,female,C50.412,2024-03-14,IIA,Positive,Positive,Negative,paclitaxel { "er_status": { "description": "Estrogen receptor status (LOINC 16112-5)", "fhirSource": "Observation.valueCodeableConcept", "example": "Positive" } }
6 Questions
Questions about Oracle Health
Does Oracle Health support bulk FHIR export?
Oracle Health is certified to ONC §170.315(g)(10), and its FHIR R4 API exposes the Group export with system-level authorization. Clinical Extract runs it as a System application on your tenant.
Is this the same as a Cerner bulk FHIR export?
Oracle Health is Cerner’s current name, and the certified bulk data export is the same API. Clinical Extract runs it against your tenant and writes study.csv and its data dictionary.
What is the tenant ID?
The identifier of your organization’s Oracle Health tenant. It is part of every FHIR URL and of the token endpoint, so every request Clinical Extract makes is scoped to your organization.
What does our organization enable?
The System application, once, for your tenant, and a Group for each study, named by its ID.
How fast is a study export on Oracle Health?
Minutes for a study. Jones et al. measured Cerner above 8,000 resources per minute; a 212-patient study of about 58,000 resources finishes in minutes at that rate, because the request covers the cohort and its resource types only.
Next
See Clinical Extract run on one of your studies.
Tell us which EHR you run and what the study or registry needs. We reply within one business day to set a meeting time.