mirror of
https://github.com/AmanTahiliani/FHIR-Sandbox.git
synced 2026-08-07 11:53:56 -04:00
3.1 KiB
3.1 KiB
FHIR-Sandbox: SMART on FHIR Healthcare Platform
A production-quality Go-based platform for integrating with Electronic Health Record (EHR) systems using the SMART on FHIR protocol. This sandbox demonstrates authentication, persistence, and dashboarding for patient and practitioner data.
Features
- SMART on FHIR Launch: Supports the full SMART App Launch flow (EHR launch and standalone).
- Identity Resolution: Correctly handles practitioner identification from both
practitioneranduser(Practitioner/ID) fields in OAuth2 token responses. - SQLite Persistence: Persists patient and practitioner data upon successful launch using a pure-Go SQLite driver (no CGO required).
- Session Management: Server-side sessions stored in SQLite with secure, HttpOnly cookies.
- Responsive Dashboard: A modern UI built with Go
html/templatethat displays patient demographics and practitioner details. - Extensible Architecture: Clean package separation (
handlers,db,fhir,models,middleware,config) designed for growth.
Architecture
The project is structured into modular packages under /app:
/db: Database schema, migrations, and CRUD operations usingmodernc.org/sqlite./fhir: FHIR R4 resource definitions and SMART discovery/client logic./handlers: HTTP request handlers and template rendering./middleware: Session loading and authentication guards./models: Shared data structures./templates: HTML templates with layout inheritance.
Prerequisites
- Go 1.24+
- No external database required (uses embedded SQLite)
Getting Started
-
Clone the repository:
git clone https://github.com/AmanTahiliani/FHIR-Sandbox.git cd FHIR-Sandbox -
Run the application:
go run app/main.goThe server starts on
http://localhost:8080. -
Test with a Sandbox: Use the SMART Health IT Sandbox:
- App Launch URL:
http://localhost:8080/launch - Redirect URL:
http://localhost:8080/auth-redirect - The default configuration in
main.gois pre-set to work with the SmartHealthIT sandbox.
- App Launch URL:
Configuration
Configuration is currently managed in app/main.go via config.AppConfig. You can define multiple EHRs, set your redirect URI, and required scopes.
cfg := &config.AppConfig{
DBPath: "fhir_sandbox.db",
SMART: config.SMARTConfig{
RedirectURL: "http://localhost:8080/auth-redirect",
Scopes: []string{"openid", "profile", "launch", "patient/*.read", "user/*.read"},
},
EHRs: []config.EHRConfig{
{
Name: "SmartHealthIT Sandbox (R4)",
FHIRURL: "https://launch.smarthealthit.org/v/r4/fhir",
ClientID: "your-client-id",
},
},
}
Testing
The project includes unit tests for database logic and FHIR parsing.
go test ./...
Future Improvements
- Support for Observations, Conditions, and Encounters.
- Move configuration to a YAML/TOML file.
- Add structured logging (slog).
- Implement Refresh Token handling.