Patient-authorized EHR integration
Oracle Health FHIR integration: discovery, authorization, and tenant routing.
A developer guide to the parts of an Oracle Health connection that live outside the resource request itself.
Updated: 2026-08-25 · 10 min read
The bottom line
Oracle Health implements SMART-style OAuth and FHIR, but an application still needs to resolve the correct organization environment, use registered callbacks, request appropriate context, and validate the discovered issuer and endpoints before reading data.
Key takeaways
- Treat the FHIR base and authorization metadata as tenant-specific input.
- Keep Millennium, Soarian, sandbox, and production evidence distinct.
- Validate patient context and granted scopes instead of assuming the requested set was approved.
Evidence boundary: Based on Oracle Health’s public authorization documentation and FinchNode directory and discovery implementation work. Live production patient validation remains a separate evidence threshold.
Author: FinchNode Engineering
Resolve the organization before authorization
A patient recognizes a hospital or clinic, while an application needs a FHIR base and authorization server. The connection flow should retain the selected organization, resolve its published endpoint, and perform SMART or OIDC discovery against an allowed host before constructing the authorization request.
Validate discovered metadata
const fhirBase = new URL(selectedOrganization.fhirBaseUrl);
if (fhirBase.protocol !== 'https:') throw new Error('https_required');
assertAllowedHealthcareHost(fhirBase.hostname);
const metadataUrl = new URL('.well-known/smart-configuration', `${fhirBase}/`);
const smart = await fetchJson(metadataUrl, { timeoutMs: 8_000 });
for (const value of [smart.authorization_endpoint, smart.token_endpoint]) {
const endpoint = new URL(value);
if (endpoint.protocol !== 'https:') throw new Error('invalid_smart_metadata');
assertAllowedHealthcareHost(endpoint.hostname);
}
Bind authorization to returned context
- Use the exact registered redirect URI and client type for the environment.
- Validate one-time state and PKCE before accepting the token response.
- Record the granted scope string because it can be narrower than the request.
- Require the expected patient context before issuing patient-scoped reads.
- Validate OIDC issuer, signature, audience, expiry, and nonce when identity scopes are used.
Separate implementation evidence from production coverage
FinchNode has validated Oracle Health developer testing and directory-driven routing. The public claim remains intentionally narrower than universal production support because a full live production patient lifecycle has a higher evidence requirement than successful discovery or sandbox authorization.
More FinchNode interoperability guides
Frequently asked questions
Is Oracle Health the same as Cerner for FHIR integrations?
Oracle Health includes the platform historically known as Cerner, but products and organization environments can differ. Use the endpoint and implementation guidance for the selected organization and workflow.
Does Oracle Health support SMART on FHIR?
Oracle Health documents OAuth 2.0 authorization with the SMART on FHIR profile, including registered redirect URIs and launch context.
Why is tenant discovery important?
The patient chooses an organization, and that organization determines the correct FHIR base and authorization metadata. Hard-coding one endpoint does not cover a multi-organization product.
Does a published endpoint prove production access?
No. It proves that an endpoint was published. Application approval, organization configuration, authorization, scopes, patient context, data reads, and lifecycle behavior must still be validated.