Reference implementation of a consumer solution on top of the Danish FUT eHealth infrastructure.
The intended use is as a reading and copy-paste resource. Read the code to understand the patterns, then copy what you need into your own application.
Two Spring Boot web apps showing how to integrate with the infrastructure's FHIR APIs and Keycloak-based security:
- clinician-client - clinician-facing web app
- citizen-client - citizen-facing web app
This repository shows a working, end-to-end integration with the FUT platform. It covers:
- OAuth2 login against the FUT Keycloak realms (clinician via the
ehealthrealm; citizen via NemLogin), and the context-aware token refresh FUT's FHIR APIs require, seedocs/authentication.md - Creating a citizen via the
$createPatientFHIR operation (CPR lookup + enrichment from the national CPR registry) - Searching for citizens, managing episodes of care and care plans (create, activate, close), and assigning tasks
- Citizen view of weekly planned activities via the
$get-patient-proceduresoperation, submitting measurements, and a task list
Both apps are server-side Spring Boot (Java 21, Spring Boot 3.4.x, Thymeleaf). There is no separate SPA bundle and no Node toolchain. The FHIR client is HAPI FHIR R4.
See docs/architecture.md for a system overview and docs/user-guide.md for a screen-by-screen tour.
- Not feature-complete. Many real-world features are deliberately out of scope: video, messaging, questionnaires, and appointments as a standalone feature. There is no other reference implementation for those features. Use the FHIR Implementation Guide as the reference.
- Not a library or framework. There is no published artifact to depend on. Copy patterns into your own codebase.
- Not a production system. No production deployment, no SLA, no PII handling beyond what the test environments already provide.
You need Docker installed.
- Build:
./mvnw clean verify - Start the apps:
docker compose -f deploy/docker-compose.yml up - Open the clinician app at http://localhost:8080
- Open the citizen app at http://localhost:8090
See docs/onboarding/connect-to-test.md for logging in and running the integration test.