# Scaffolding Smart On Fhir

Scaffold a SMART-on-FHIR app (SMART App Launch v2, EHR launch and standalone launch...

- Repository: https://github.com/maziyarpanahi/openmed (5755 stars)
- Category: Writing
- License: Apache-2.0
- Last updated: 2026-10-31
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add maziyarpanahi/openmed --skill scaffolding-smart-on-fhir -g -a claude-code -y`
Codex: `npx skills add maziyarpanahi/openmed --skill scaffolding-smart-on-fhir -g -a codex -y`
Cursor: `npx skills add maziyarpanahi/openmed --skill scaffolding-smart-on-fhir -g -a cursor -y`
Gemini CLI: `npx skills add maziyarpanahi/openmed --skill scaffolding-smart-on-fhir -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add maziyarpanahi/openmed`

## Description

Scaffold a SMART-on-FHIR app (SMART App Launch v2, EHR launch and standalone launch, OAuth2 PKCE, scopes, token handling, fhirContext) so an OpenMed-powered tool can run inside Epic or Cerner/Oracle Health. Covers the .well-known/smart-configuration discovery, authorize/token sequence, scopes like patient/DocumentReference.rs and launch/patient, and fetching clinical notes the app then de-identifies and runs NER on locally with OpenMed. Use when the user wants to embed OpenMed inside an EHR, mentions SMART on FHIR, OAuth2 launch, scopes, Epic/Cerner app, or clinician-facing FHIR app. Pairs adjacent.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Scaffolding SMART on FHIR

To put an OpenMed-powered tool *inside* a clinician's EHR (Epic, Cerner/Oracle
Health), you build a **SMART on FHIR** app: a web app the EHR launches with an
OAuth2 flow, granting scoped, time-limited access to the patient's FHIR data.
The app fetches the clinical notes, then runs OpenMed **on-device** (de-id +
NER), so PHI is processed locally and only de-identified output, if anything,
leaves the browser/host.

## When to use

Reach for this when the deliverable is a clinician-facing app embedded in an
EHR, or a standalone app authorizing against an EHR's FHIR endpoint. Triggers:
"SMART on FHIR", "EHR launch", "OAuth2 scopes", "Epic/Cerner app",
"embed OpenMed in the chart". For pulling notes at *cohort* scale (no UI), use
`exporting-bulk-fhir` instead.

## Two launch flows

- **EHR launch**, clinician clicks your app in the chart. The EHR opens your
  `launch_uri?iss=<fhir-base>&launch=<opaque>`; you complete OAuth2 and inherit
  the current patient/encounter context.
- **Standalone launch**, user opens your app directly; it discovers the FHIR
  server and runs OAuth2, and the user/EHR picks the patient.

Both use **SMART App Launch v2**: OAuth2 authorization code flow with **PKCE**
(required in v2), discovered via `.well-known/smart-configuration`.

## Quick start: the launch sequence

```
1. EHR launch URL:
   GET https://app.example/launch?iss=https://ehr.example/fhir&launch=abc123

2. Discover endpoints:
   GET https://ehr.example/fhir/.well-known/smart-configuration
   -> { "authorization_endpoint": ".../authorize",
        "token_endpoint": ".../token",
        "code_challenge_methods_supported": ["S256"],
        "capabilities": ["launch-ehr","client-public","context-ehr-patient", ...] }

The rest: https://github.com/maziyarpanahi/openmed/blob/HEAD/skills/scaffolding-smart-on-fhir/SKILL.md
