FHIR R4 Aktensystem-Simulator für die elektronische Patientenakte 3.0 mit IDP-Authentifizierung und Live-Dashboard
pip install -r requirements.txt && python main.py
Vollständiger In-Memory FHIR R4 Server mit Search, Read, Create und Delete. CapabilityStatement und $everything-Operation.
eML als FHIR Bundle mit MedicationStatements. PZN-Codes, Dosierung, Verordner und Wechselwirkungen.
OpenID Connect Discovery, Challenge/Token-Flow mit Bearer-Token. Rollen: Versicherter, Leistungserbringer, Kostenträger.
Echtzeit-Updates via SSE. Ressourcen-Übersicht, Medikationstabelle, Request-Log und Test-Aktionen.
Realistischer FHIR-Datensatz: Patient, Practitioners, Organizations, Conditions, Documents, Allergies mit ICD-10-GM und PZN.
Emuliert das ePA 3.0 Opt-out-Prinzip: Automatische Anlage für alle Versicherten, Widerspruch jederzeit möglich.
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 │
│ └──────────────┘ │
└───────────────────────────────────────────────┘| Methode | Pfad | Beschreibung |
|---|---|---|
GET | /fhir/metadata | CapabilityStatement |
GET | /fhir/Patient/$everything | Alle Daten eines Patienten |
GET | /fhir/MedicationStatement?status=active | eML (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 |
| Methode | Pfad | Beschreibung |
|---|---|---|
GET | /.well-known/openid-configuration | OpenID Connect Discovery |
POST | /auth/challenge | Challenge erstellen (Nonce + Scopes) |
POST | /auth/token | Token ausstellen (KVNR + Rolle) |
GET | /auth/sessions | Aktive Sessions auflisten |
Die IDP-Simulation emuliert den gematik Identity Provider. Tokens sind 5 Minuten gültig.
Drei Rollen: versicherter, leistungserbringer, kostentraeger.
| Ressource | Anzahl | Details |
|---|---|---|
Patient | 1 | Max Mustermann, KVNR X110501499, IKK classic |
Practitioner | 2 | Dr. Becker (Allgemeinmedizin), Dr. Schneider (Innere Medizin) |
Organization | 3 | IKK classic, IKK Kliniken Köln, Hausarztpraxis |
MedicationStatement | 4 | Metformin, Ramipril, Ibuprofen, Pantoprazol (mit PZN) |
Condition | 3 | Diabetes E11.9, Hypertonie I10.90, Kreuzschmerz M54.5 |
DocumentReference | 4 | Aufnahmebefund, Labor, Entlassbrief, Impfdoku (KDL-Codes) |
AllergyIntolerance | 1 | Penicillin (schwere anaphylaktische Reaktion) |
| Komponente | Minimum | Bemerkung |
|---|---|---|
| Python | 3.10+ | Im PATH |
| Betriebssystem | Windows 10/11, Linux, macOS | — |
| Port | 8700 | Auto-Fallback auf 8701 |
| Browser | Chrome, Firefox, Edge | Für Dashboard |
| Merkmal | ePA 2.0 | ePA 3.0 |
|---|---|---|
| Datenformat | Proprietäre Dokumente | FHIR R4 |
| Anlage | Opt-in (freiwillig) | Opt-out (automatisch) |
| Medikation | Medikationsplan (PDF) | eML (strukturiert, FHIR) |
| Zugriff | Dokumentenbasiert | Ressourcenbasiert (FHIR REST) |
| Authentifizierung | Karte + PIN | IDP + Token |
| Verschlüsselung | Konnektor-basiert | VAU (Vertrauenswürdige Ausführungsumgebung) |