v0.1.0 — FHIR R4 Simulator

ePA 3.0 Demo

FHIR R4 Aktensystem-Simulator für die elektronische Patientenakte 3.0 mit IDP-Authentifizierung und Live-Dashboard

DEMO — Nicht für produktiven Einsatz
pip install -r requirements.txt && python main.py
🔥

FHIR R4 Server

Vollständiger In-Memory FHIR R4 Server mit Search, Read, Create und Delete. CapabilityStatement und $everything-Operation.

💊

Elektronische Medikationsliste

eML als FHIR Bundle mit MedicationStatements. PZN-Codes, Dosierung, Verordner und Wechselwirkungen.

👤

IDP-Simulation

OpenID Connect Discovery, Challenge/Token-Flow mit Bearer-Token. Rollen: Versicherter, Leistungserbringer, Kostenträger.

📊

Live-Dashboard

Echtzeit-Updates via SSE. Ressourcen-Übersicht, Medikationstabelle, Request-Log und Test-Aktionen.

📄

Demo-Datensatz

Realistischer FHIR-Datensatz: Patient, Practitioners, Organizations, Conditions, Documents, Allergies mit ICD-10-GM und PZN.

🔒

Opt-out Modell

Emuliert das ePA 3.0 Opt-out-Prinzip: Automatische Anlage für alle Versicherten, Widerspruch jederzeit möglich.

Architektur

  Browser (Dashboard)
  ├── SSE (/api/events)              ← Live-Updates
  ├── REST (/api/status, /api/log)   ← Dashboard-Daten
  ├── FHIR (/fhir/*)                 ← FHIR R4 Endpunkte
  └── Auth (/auth/*)                 ← IDP-Simulation
            │
  ┌─────────▼───────────────────────────────────┐
  │       FastAPI (main.py)          Port 8700   │
  │                                              │
  │  ┌──────────────┐  ┌─────────────────────┐  │
  │  │  FhirServer  │  │    IDP-Simulator     │  │
  │  │  (server.py) │  │    (idp_sim.py)      │  │
  │  │              │  │                      │  │
  │  │  In-Memory   │  │  Challenge/Token     │  │
  │  │  FHIR Store  │  │  OpenID Connect      │  │
  │  └──────┬───────┘  └──────────────────────┘  │
  │         │                                    │
  │  ┌──────▼───────┐                            │
  │  │  demo_data   │  FHIR R4 Ressourcen        │
  │  │  Patient,    │  MedicationStatement,       │
  │  │  Condition,  │  DocumentReference,          │
  │  │  Allergy     │  Practitioner, Organization  │
  │  └──────────────┘                             │
  └───────────────────────────────────────────────┘

Dashboard

Patient
┌──────────────────────┐
Max Mustermann
│ KVNR: X110501499
│ geb. 15.03.1985 │
│ IKK classic │
└──────────────────────┘

Statistiken
17 Ressourcen │ 7 Typen
4 Medikamente │ 0 Sessions
Patienten-Info und Statistiken
FHIR Ressourcen
┌────────┐ ┌────────┐
Medicati│ │Conditi
on (4) │ │on (3)
└────────┘ └────────┘
┌────────┐ ┌────────┐
Documen │ │Allergy
t (4) │ │ (1)
└────────┘ └────────┘
FHIR Ressourcen-Grid
eML — Medikationsliste

Metformin 1000mg
PZN: 01234567 │ 1-0-1
Ramipril 5mg
PZN: 02345678 │ 1-0-0
Ibuprofen 400mg
PZN: 03456789 │ bei Bedarf
Pantoprazol 20mg
PZN: 04567890 │ 1-0-0
Elektronische Medikationsliste

FHIR R4 Endpunkte

MethodePfadBeschreibung
GET/fhir/metadataCapabilityStatement
GET/fhir/Patient/$everythingAlle Daten eines Patienten
GET/fhir/MedicationStatement?status=activeeML (Medikationsliste)
GET/fhir/{type}FHIR Search mit Query-Params
GET/fhir/{type}/{id}FHIR Read
POST/fhir/{type}FHIR Create
DELETE/fhir/{type}/{id}FHIR Delete

IDP-Authentifizierung

MethodePfadBeschreibung
GET/.well-known/openid-configurationOpenID Connect Discovery
POST/auth/challengeChallenge erstellen (Nonce + Scopes)
POST/auth/tokenToken ausstellen (KVNR + Rolle)
GET/auth/sessionsAktive Sessions auflisten

Die IDP-Simulation emuliert den gematik Identity Provider. Tokens sind 5 Minuten gültig. Drei Rollen: versicherter, leistungserbringer, kostentraeger.

Demo-Datensatz (FHIR R4)

RessourceAnzahlDetails
Patient1Max Mustermann, KVNR X110501499, IKK classic
Practitioner2Dr. Becker (Allgemeinmedizin), Dr. Schneider (Innere Medizin)
Organization3IKK classic, IKK Kliniken Köln, Hausarztpraxis
MedicationStatement4Metformin, Ramipril, Ibuprofen, Pantoprazol (mit PZN)
Condition3Diabetes E11.9, Hypertonie I10.90, Kreuzschmerz M54.5
DocumentReference4Aufnahmebefund, Labor, Entlassbrief, Impfdoku (KDL-Codes)
AllergyIntolerance1Penicillin (schwere anaphylaktische Reaktion)

Tech-Stack

Python 3.10+ FastAPI Uvicorn FHIR R4 SSE OpenID Connect httpx

Systemvoraussetzungen

KomponenteMinimumBemerkung
Python3.10+Im PATH
BetriebssystemWindows 10/11, Linux, macOS
Port8700Auto-Fallback auf 8701
BrowserChrome, Firefox, EdgeFür Dashboard

ePA 3.0 vs. ePA 2.0

MerkmalePA 2.0ePA 3.0
DatenformatProprietäre DokumenteFHIR R4
AnlageOpt-in (freiwillig)Opt-out (automatisch)
MedikationMedikationsplan (PDF)eML (strukturiert, FHIR)
ZugriffDokumentenbasiertRessourcenbasiert (FHIR REST)
AuthentifizierungKarte + PINIDP + Token
VerschlüsselungKonnektor-basiertVAU (Vertrauenswürdige Ausführungsumgebung)