Dieses Repository enthält einen Proof of Concept für die Proxy-Komponente des Projekts „Gerichtete ad-hoc-Kommunikation“ (PGK) im österreichischen Gesundheitswesen, ursprünglich entwickelt von Cloudflight für die Stadt Wien (MA 01 Wien Digital).
Der pgk-proxy ist ein Kotlin-/Spring-Boot-Service, der einen lokalen Matrix-Synapse-Server mit
einem HAPI-FHIR-Server verbindet. Er stellt die FHIR-gestützte Benutzerverzeichnis-Suche am
Matrix-Endpunkt POST /_matrix/client/v3/user_directory/search (Backing-Store) und die Prüfung
von föderierten Raumeinladungen bereit. Der restliche Matrix-Traffic geht unverändert direkt an
Synapse (der Proxy liegt nicht im Datenpfad).
Matrix-Client (Element, Element X, FluffyChat …)
│ HTTPS
▼
Traefik (:443 / :8448)
│ ├─ /_matrix/client/v3/user_directory/search ──► pgk-proxy ──► FHIR (Provider Directory)
│ ├─ /_matrix/client/v3/createRoom, /_matrix/client/v3/rooms/{roomId}/invite (Ausgangsprüfung) ──► pgk-proxy ──► Matrix-Server
│ ├─ /_matrix/federation/v2/invite* (Einlassprüfung) ──► pgk-proxy ──► Matrix-Server
│ └─ alles andere ──► Matrix Server
▼
Matrix-Server ◄── Föderation (8448) ──► externe föderierte Matrix-Server
Der Proxy liegt nur im Datenpfad der oben markierten Endpunkte; sämtlicher übriger Matrix-Traffic geht unverändert an den lokalen Matrix-Server (Synapse).
Die Dokumentation ist nach Themen in Unterordner docs/ aufgeteilt:
| Thema | Inhalt |
|---|---|
| Lokales Setup | Voraussetzungen, Zertifikatserstellung (mkcert), Build des Keycloak-Providers, Starten des docker-compose-Stacks, Zugriff auf die lokale Umgebung, Föderations-Partnerumgebung und Tests |
| Benutzerhandbuch | Anmeldung, Konfiguration von Matrix-Clients (Element, Element X, FluffyChat), Föderation, eigene Rollen und persönliche Einladungsregeln |
| Administrationshandbuch | Benutzer im IDP anlegen, Rollen zuweisen, intern/öffentlich schalten, organisationsweite Einladungs-/Föderationsregeln, Anzeigenamen steuern |
| FHIR-Leitfaden | Verwendete FHIR-Ressourcentypen und wie sie miteinander verknüpft sind |
| Technische Abläufe | Ablaufdiagramme für die föderierte Benutzersuche über den Proxy und den FHIR-Server sowie für die Prüfung einer föderierten Raumeinladung – inklusive Beispielanfragen |
- Zertifikate erzeugen (siehe docs/setup.md).
- Keycloak-Provider bauen:
./gradlew :keycloak-provider:keycloakProviderJar - Stack starten:
docker-compose up -d - Proxy lokal starten (Profil
local) - Im IDP https://idp.element.traefik.me/admin mit (
admin/admin) einloggen und impgkRealm neue User anlegen. - Unter https://element.traefik.me mit diesen Usern anmelden und loslegen.
Ausführliche Schritte: docs/setup.md.
- Backing-Store: HAPI FHIR R4 unter
pgk.fhir.base-url(Standardhttp://localhost:8081/fhir). - Routing: Traefik leitet
matrix.traefik.me– mit Ausnahme der oben genannten Proxy-Endpunkte – direkt an Synapse weiter. Siehedynamic.yml. - IDP-Provisionierung: Ein Keycloak-Event-Listener (
keycloak-provider-Gradle-Subprojekt) meldet Benutzeränderungen überPOST /internal/idp/**an den Proxy, der daraus FHIR-Practitioner erstellt/aktualisiert/löscht. - Föderation: Föderierte Einladungen an
matrix.traefik.melaufen über u.a./_matrix/federation/v2/invitedurch den Proxy, der Whitelist-, Organisations- und persönliche Regeln prüft, bevor er an Synapse weiterleitet.
Diese Software ist unter der Apache License 2.0 lizensiert.