Skip to content

Proxy SmartHealthcare Interoperability Proxy

An authorization layer between SMART apps and FHIR servers that stores no clinical data.

Proxy Smart

Proxy Smart sits between SMART on FHIR applications and the FHIR servers that hold the records. It terminates the OAuth flow, validates and narrows scopes, enforces consent, and forwards what survives. Clinical data is never stored on the way through, which keeps the proxy out of the compliance surface that holding records would create.

Around that core sit a set of SMART apps built on a shared component library, an admin dashboard for the platform itself, and an MCP endpoint that exposes the admin API to AI clients.

Where it sits

┌─────────────────────────────────────────────────────────────┐
│                      Frontend Apps                           │
│  Patient Portal │ Consent │ DTR │ Patient Picker │ Admin UI │
│                      SMART DICOM Template                   │
│                                                             │
│  All built with @proxy-smart/shared-ui (SmartAppShell)      │
└──────────────────────────┬──────────────────────────────────┘
                           │ SMART App Launch 2.2.0
┌──────────────────────────▼──────────────────────────────────┐
│                    Proxy Smart Backend                        │
│  Elysia/Bun │ OAuth Proxy │ FHIR Proxy │ MCP Server          │
└──────────┬──────────┬──────────┬────────────────────────────┘
           │          │          │
     ┌─────▼───┐ ┌────▼────┐ ┌──▼───────┐
     │Keycloak │ │FHIR R4  │ │Orthanc   │
     │  (IdP)  │ │Server(s)│ │(DICOMweb)│
     └─────────┘ └─────────┘ └──────────┘

Keycloak is the identity provider; the proxy never issues its own tokens. FHIR servers and DICOMweb endpoints are registered at runtime through the admin UI rather than baked into configuration.

Apps

Three apps ship from this repository:

AppPortLocationPurpose
Admin UI5173frontend/ui/Platform administration dashboard
Patient Picker5176packages/patient-picker/Patient selection during standalone SMART launch
SMART DICOM Template5180frontend/smart-dicom-template/Starter kit for imaging algorithm SMART apps

Three more live in their own repositories and release on their own cadence:

AppPortRepositoryPurpose
Patient Portal5173max-health-inc/patient-portalPatient-facing health records, imaging, IPS
Consent Manager5174max-health-inc/consent-appFHIR Consent resource management
DTR / Prior Auth5175max-health-inc/dtr-appDa Vinci DTR questionnaires and PA workflow

Each external app builds its static assets in its own CI and pushes them into a shared apps_static Docker volume mounted at /app/backend/public/apps. The backend serves them from /apps/{app-name}/. That decoupling is deliberate: an app can ship without a platform release.

Where to start

If you are deploying the platform, read Deployment and then Environment Variables. If you are integrating an app against it, OAuth & Authentication and the FHIR Proxy describe the two surfaces you will talk to. If you are assessing spec conformance, the SMART 2.2.0 Checklist tracks implementation status and Compliance Reports publishes the Inferno results from each environment.

Everything else is in the sidebar.

External references

Proxy Smart — Healthcare Interoperability Platform