SMART App Launch 2.2.0
Full OAuth 2.0 with PKCE, JWT validation, scope-based access control, and refresh token rotation.
SMART App Launch 2.2.0, OAuth 2.0, MCP Server & AI-Powered Admin
Comprehensive documentation for the Proxy Smart platform: a stateless FHIR proxy with OAuth 2.0, SMART App Launch 2.2.0, and an intelligent admin interface.
Proxy Smart sits between SMART apps and FHIR servers, handling authentication and authorization without storing clinical data. The platform includes 6 frontend apps, an MCP server, and a shared component library.
┌─────────────────────────────────────────────────────────────┐
│ 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)│
└─────────┘ └─────────┘ └──────────┘| App | Port | Location | Purpose |
|---|---|---|---|
| Admin UI | 5173 | frontend/ui/ | Platform administration dashboard |
| Patient Picker | 5176 | packages/patient-picker/ | Patient selection during standalone SMART launch |
| SMART DICOM Template | 5180 | frontend/smart-dicom-template/ | Starter kit for imaging algorithm SMART apps |
| App | Port | Repository | Purpose |
|---|---|---|---|
| Patient Portal | 5173 | max-health-inc/patient-portal | Patient-facing health records, imaging, IPS |
| Consent Manager | 5174 | max-health-inc/consent-app | FHIR Consent resource management |
| DTR / Prior Auth | 5175 | max-health-inc/dtr-app | Da Vinci DTR questionnaires and PA workflow |
Deployment: External apps deploy independently from their own CI pipelines. Each app builds its static assets and pushes them into a shared
apps_staticDocker volume mounted at/app/backend/public/apps. The backend serves them at/apps/{app-name}/. This decouples app release cycles from the core platform.
@proxy-smart/shared-ui with SmartAppShell, design system, hooks/mcp exposing all admin tools@proxy-smart/shared-ui, SmartAppShell, design system, hooks