Vitalis Hackathon 2026
0.1.0 - ci-build
Vitalis Hackathon 2026 - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Track lead: Jens Villadsen
This track explores whether AI agents can enable patient access to health data portals that do not natively support FHIR. The approach is inspired by the Danish Dhroxy project, developed as part of the c3po initiative, which uses AI agents to provide FHIR-based access to existing patient portals.
Mikael Rinnetmaki is interested in exploring whether this approach could be replicated in Finland with the Kanta patient portal.
The table below lists ten Swedish healthcare portals and central systems that are not (yet) accessible via FHIR. Any of these are valid targets for the track. Participants are also welcome to bring their own favourite portal from any country.
| # | System | Operator | Patient access | Authentication | FHIR target resources |
|---|---|---|---|---|---|
| 1 | 1177.se internal APIs (journal, inbox, appointments) | Inera | Direct — BankID or Freja eID+ login at e-tjanster.1177.se | BankID redirect → session cookie; every request sends Cookie: <session> + X-Requested-With: XMLHttpRequest + Accept: application/json |
Patient, Appointment, Communication |
| 2 | Nationell Patientöversikt (NPÖ) | Inera | Staff only — requires SITHS card; no patient portal | SITHS function certificate mTLS (authentication is at TLS layer, no Authorization header); RIV-TA SOAP with wsa:To = target HSA-id |
Patient, Encounter, Condition, Observation |
| 3 | 1177 Tidbokning (appointment booking) | Inera | Indirect — patients book via 1177.se; backend is system-to-system | Same as NPÖ: SITHS function certificate mTLS + RIV-TA SOAP; service domain riv:crm:scheduling |
Schedule, Slot, Appointment |
| 4 | Elektronisk Remiss (e-referral) | Inera | Staff only — provider-to-provider; patients see status via 1177 | Same as NPÖ: SITHS function certificate mTLS + RIV-TA SOAP; domain clinicalprocess:activity:request |
ServiceRequest, Task |
| 5 | MittVaccin (vaccination records) | Cambio | Direct — BankID or Freja eID+ login at mittvaccin.se | BankID redirect → session cookie | Immunization |
| 6 | 1177 Intyg / Webcert (medical certificates) | Inera | Direct for patients at intyg.1177.se (BankID); staff authoring via Webcert | 1177 Intyg: BankID redirect → session cookie; Webcert (staff): SITHS eID → SAML assertion → Authorization: Bearer <token> (RFC 7522 exchange) |
DocumentReference, Composition |
| 7 | LabPortalen (lab results) | InfoSolutions | Direct — patients log in with SITHS card or SMS OTP | SSO redirect from journal system: ?sys=<SYSTEM_GUID>&UserIntegrationKey=<USER_GUID>&PID=<personnummer>; SYSTEM_GUID is a per-vendor shared secret assigned by InfoSolutions |
DiagnosticReport, Observation |
| 8 | Tandvårdsportalen (dental subsidies) | Försäkringskassan | Indirect — patients see dental subsidy data via Mina sidor (BankID) | Provider portal: SOAP + function certificate from Svensk e-identitet or Expisoft (not SITHS); no public REST/FHIR API | Coverage, Claim |
| 9 | 1177 Högkostnadsskydd / e-Frikort (cost protection) | Inera / Regions | Indirect — patients view via 1177.se (BankID); data fetched on demand from regional systems | Patient side: same BankID session cookie pattern as 1177.se; backend: SITHS function certificate mTLS + RIV-TA SOAP over NTP | Coverage, ExplanationOfBenefit |
| 10 | Patientregistret / Cancerregistret (national health registers) | Socialstyrelsen | No portal — individual GDPR access only via written application; provider reporting via Filip portal (BankID) or SFTP | Filip portal: BankID → session cookie; bulk reporting: SFTP with credentials from Socialstyrelsen; no REST or FHIR API | Encounter, Condition, Procedure |
Note: Two systems are notably not on this list because they already use FHIR:
- Nationella Läkemedelslistan (NLL) — FHIR R4 + OAuth2
- Nationella Vaccinationsregistret (NVR) — migrated to a FHIR-based API (NVR 2.0) in March 2026; provider-facing OAuth2
client_credentialsflow; patient access still via MittVaccin (row 5)
Most of these systems also have Android apps available on Google Play. These apps are valid targets for decompilation and static analysis (e.g. using jadx or apktool) and can reveal API endpoints, request formats, and authentication flows that are not documented anywhere publicly.
Attendees need to bring two things:
Everything else should be possible to do at the hackathon.
curl 'https://e-tjanster.1177.se/api/core/overview/events/appointment-events' \
-H 'Accept: application/json' \
-H 'X-Requested-With: XMLHttpRequest' \
-H 'Cookie: SESSION=abc123; XSRF-TOKEN=xyz'
Tip: Before feeding a HAR file to an AI tool, scrub or replace real patient values (names, personnummer, dates of birth) with synthetic equivalents — the structure and field names are what matter for mapping, not the actual data. har-sanitizer (Cloudflare) can help automate this step. Alternatively, chrome-devtools-mcp lets an AI agent connect directly to Chrome DevTools and observe network traffic in real time, skipping the manual export step entirely.