Production access is free and self-serve with an account. · Try the demo

FinchNode

Patient-authorized EHR integration

What we learned building patient-authorized FHIR connections across EHRs.

A transparent implementation report covering the patterns that repeated, the behaviors that did not, and the evidence boundary behind FinchNode’s current integration work.

Updated: 2026-08-25 · 14 min read

The bottom line

FHIR creates a common resource model, but a production patient-access connection still varies by organization discovery, OAuth registration, SMART metadata, scopes, patient context, token lifecycle, and resource availability. A reliable aggregation layer must preserve those differences as explicit state rather than hiding them behind a universal-coverage claim.

Key takeaways

  • A supported vendor is not the same as a specific organization: endpoints, scopes, and available data vary within every family.
  • The recurring engineering work is discovery, authorization, patient context, normalization, provenance, and lifecycle handling—not merely issuing a FHIR GET request.
  • One API can give an application a stable contract while still reporting source-specific limits and incomplete data honestly.

Evidence boundary: Based on FinchNode implementation work, public vendor documentation, synthetic testing, and directory validation as of August 25, 2026.

Author: FinchNode Engineering

Evidence boundary: what this report does and does not claim

These notes describe FinchNode’s implementation experience, not a certification of every endpoint operated by an EHR vendor. They cover registration, authorization, callback, token exchange, patient context, representative FHIR reads, and lifecycle behavior as observed during integration work.

A supported vendor logo is not evidence that every organization or record will work. Endpoint routing, approved scopes, and the data an organization publishes all differ, so plan for source-specific variation rather than uniform coverage.

No patient records, credentials, access tokens, or protected health information were used to prepare this public report.

The implementation patterns we observed

The exact state changes as onboarding advances, so this table records the evidence available on the review date rather than making a permanent coverage promise.

Selected FinchNode integration patterns reviewed on August 25, 2026
Source familyObserved engineering patternWhat varies by organization
Epic / MyChartStandalone patient OAuth, PKCE-capable authorization, organization endpoint routingEndpoint routing and the resources each organization publishes
Oracle HealthDirectory-driven tenant routing plus tenant SMART/OIDC discoveryTenant environment, discovered metadata, and granted scopes
athenahealthSeparate preview and production registrations with signed OIDC validationPractice-level registration and the branded login the patient sees
Veradigm / AllscriptsOrganization-specific FHIR routing with authorization metadata on distinct hostsAuthorization host and FHIR base per organization
MEDITECHStrict callback registration, PKCE, and environment-specific FHIR basesEnvironment-specific FHIR bases and callback registration
Medicare Blue ButtonBeneficiary authorization for claims and coverage rather than an EHR clinical recordCoverage and claims CMS holds for the beneficiary

What repeated across integrations

  • A source-selection step must resolve the organization the patient recognizes to the endpoint the application needs.
  • Authorization metadata, redirect URIs, client type, scopes, and PKCE behavior must match the registered application exactly.
  • The authorized patient context must be bound to the source connection before clinical resources are read.
  • FHIR searches can return empty, partial, paginated, duplicated, or differently profiled results without the connection itself being broken.
  • Refresh, expiry, revocation, disconnect, and reauthorization require explicit lifecycle states and audit evidence.
  • Every normalized record needs source identity and freshness metadata so applications can explain where it came from.

What did not become uniform

FHIR R4 does not make every organization expose the same profiles, search parameters, history, notes, or terminology. Even inside one vendor family, tenant configuration and product versions can change the result. Patient matching and portal enrollment can also prevent a technically correct authorization request from producing a usable record.

FinchNode therefore treats completeness, source status, and provenance as part of the API response. The platform should never manufacture a complete longitudinal record when a source returned less information.

The architecture that survived those differences

  1. 1. Resolve the source

    Search a maintained organization directory and retain the selected endpoint identity.

  2. 2. Discover and authorize

    Read supported SMART metadata, create a state-bound authorization request, and validate the callback.

  3. 3. Bind patient context

    Associate the granted source patient identifier with an application-scoped FinchNode subject.

  4. 4. Retrieve with limits

    Follow server-provided pagination, record OperationOutcome details, and avoid assuming unsupported searches.

  5. 5. Normalize without erasing provenance

    Create stable application categories while preserving source identifiers, resource type, and timestamps.

  6. 6. Enforce sharing and lifecycle state

    Apply the application-specific consent boundary to reads, webhooks, revocation, and deletion.

Primary sources

More FinchNode interoperability guides

Frequently asked questions

Does FinchNode claim to connect to every EHR?

No. FinchNode provides one application contract across supported patient-access sources. Availability still depends on the organization endpoint, application approval, patient authorization, scopes, and returned data.

Why can two FHIR servers return different patient records?

FHIR standardizes resources and API patterns, but servers can support different profiles, searches, data histories, terminology, and tenant configurations. The underlying patient record can also differ by organization.

What does a complete EHR integration have to cover?

Registration, endpoint routing, authorization, callback and token exchange, patient context, representative data reads, refresh or expiry, revocation, disconnect, and monitoring.

Is this a benchmark of EHR vendors?

No. It is an implementation field report with explicit evidence limits. It should not be read as a vendor performance score or universal compatibility certification.