Skip to content
FHIRVendors

FHIR service

SMART on FHIR App Development Services

SMART on FHIR lets an application launch from inside an EHR or patient portal, receive an OAuth 2.0 access token, and read or write FHIR data within the scopes the user and organization allow. SMART development services build those apps, from the authorization handshake and clinical UI to the EHR-specific registration and review work needed to get them deployed at health systems.

  • EHR launch, standalone launch and backend services authorization per SMART App Launch 2.x
  • Clinician-facing and patient-facing app UI that works inside EHR frames and on mobile
  • Scope design, token handling, PKCE and secure storage of credentials
  • Registration, testing and marketplace preparation with each target EHR

Types of SMART apps a developer builds

Launch typeWho uses itTypical example
EHR launchClinicians inside the EHRRisk calculator or specialty dashboard opened from a patient chart
Standalone launch (provider)Clinicians outside the EHRCare-team app that signs in against the EHR's authorization server
Standalone launch (patient)Patients and caregiversConsumer app pulling records from a patient portal
Backend servicesNo user presentScheduled sync, population analytics, Bulk Data export

The SMART on FHIR guide explains each flow in depth. Most products end up needing more than one, for example an EHR-launched UI plus a backend service for data refresh.

What a SMART development engagement delivers

  • Authorization implementation following the SMART App Launch specification: discovery via `.well-known/smart-configuration`, authorization code flow with PKCE, launch context handling, token refresh and, for backend services, asymmetric client authentication with signed JWTs.
  • Scope design: the narrowest scopes that support the workflow. SMART 2.x scopes such as `patient/Observation.rs` express read and search separately, which matters when EHRs review your request.
  • Front-end application sized for EHR embedding, with handling for iframe or new-window launch, session timeouts and accessibility.
  • Data access layer using US Core-conformant queries, with defensive handling when optional elements are absent.
  • EHR onboarding package: app descriptions, security questionnaire answers, redirect URIs, JWKS endpoint and test evidence for each target platform.
GET /oauth2/authorize?response_type=code
  &client_id=my-smart-app
  &redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback
  &launch=xyz123
  &scope=launch%20openid%20fhirUser%20patient%2FPatient.r%20patient%2FObservation.rs
  &state=af0ifjsldkj
  &aud=https%3A%2F%2Fehr.example.org%2Ffhir
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
Authorization request for an EHR launch, using SMART 2.x granular scopes and PKCE

EHR-specific work you should budget for

SMART is a common specification, but every EHR implements registration, supported scopes and launch behavior a little differently. Expect per-platform work for:

  • Developer program enrollment and app registration (see our Epic and Oracle Health integration pages for platform specifics).
  • Differences in supported SMART versions, scope syntax and refresh token policies.
  • How the app is surfaced in clinician workflows, which is usually configured by each health system's EHR team.
  • Customer-by-customer activation, where each health system approves and enables the app on its own instance.

Sandbox success is not deployment

An app that works in a vendor sandbox may still need security review, marketplace listing and per-customer configuration before a clinician can open it. Build these steps into the plan from the start.

Delivery approach

  1. Workflow design with clinicians: where in the EHR the app is launched, what it shows in the first seconds, and what (if anything) it writes back.
  2. Data feasibility check: confirm the needed data is available via FHIR on each target EHR, at the required granularity.
  3. Auth-first prototype: complete launch and token exchange against sandboxes before investing in UI.
  4. Build and usability testing inside realistic EHR frames and screen sizes.
  5. Security review and registration with each EHR vendor and pilot customer.
  6. Pilot go-live, measurement, then rollout to additional sites.

How to evaluate SMART on FHIR developers

Browse SMART on FHIR developers and put these questions to your shortlist:

  • Which SMART apps have you taken from sandbox to live clinical use, and on which EHRs?
  • Do you implement SMART 2.x features such as PKCE and granular scopes, and how do you fall back when an EHR supports only 1.0 behavior?
  • Where do you store tokens and private keys, and how are keys rotated?
  • How do you handle the app being opened for the wrong patient or with an expired session?
  • Who prepares security questionnaires and marketplace submissions?

Engagement models

SMART apps are usually built as a fixed-scope MVP for one EHR followed by phased expansion to additional platforms, or by a dedicated product team on a monthly rate. Cost drivers include the number of target EHRs, read-only versus write-back, UI complexity, clinical validation needs, and any EHR program or marketplace fees, which are set by the EHR vendor rather than the developer. Ongoing costs include EHR upgrade regression testing and certificate and key rotation.

Frequently asked questions

What is the difference between SMART on FHIR and plain FHIR?

FHIR defines the data model and API. SMART App Launch is an HL7 implementation guide that defines how apps are authorized (OAuth 2.0 and OpenID Connect), how they receive launch context such as the current patient, and how scopes limit access.

Can one SMART app run on multiple EHRs?

Yes, that is the purpose of the standard. In practice you will still need per-EHR registration, testing and occasional workarounds for differences in supported scopes, resources and launch behavior.

Can a SMART app write data back to the EHR?

Sometimes. It depends on which write interactions the EHR exposes for the resource, whether your app is granted write scopes, and whether the health system enables them. Many apps are read-only at launch and add write-back later.

What are SMART Backend Services used for?

Server-to-server access with no user present, such as scheduled data refresh or Bulk Data export. The client authenticates with a signed JWT using its registered key pair rather than a user login.

Do SMART apps need to support CDS Hooks too?

Not necessarily. CDS Hooks is a separate HL7 specification for surfacing decision-support cards at specific workflow points, and it can link to a SMART app. Build it only if your workflow benefits from proactive prompts inside the EHR.

Related FHIR services

Related guides

Listed smart on fhir providers

Vendors in our directory that state they offer this service. Not a ranking · affiliated company shown first and labelled · others alphabetical.

Find the Right FHIR Integration Partner for Your Healthcare Project

Tell us what you need to build or connect. We review every request and share a short list of relevant vendors from our directory — no obligation.