FHIR R4 Aktensystem-Simulator für die elektronische Patientenakte nach gematik-Release ePA 3.1.3 mit dgMP, AMTS-Prüfung, 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.
E-Rezept (MedicationRequest), Abgabe in der Apotheke (MedicationDispense) und elektronischer Medikationsplan (eMP) über FHIR-Referenzen verknüpft.
Demo-Regelwerk für Wechselwirkungen und Allergie-Kreuzreaktionen. Treffer erscheinen live als Einblendung im Dashboard.
_content-Parameter durchsucht alle FHIR-Ressourcen eines Typs, unabhängig von Groß-/Kleinschreibung.
Browser (Dashboard)
├── SSE (/api/events) ← Live-Updates
├── REST (/api/status, /api/log) ← Dashboard-Daten
├── AMTS (/api/amts) ← Arzneimittel-Pruefung (dgMP)
├── 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 │ │ amts.py │ │
│ │ Patient, │ │ Wechselwirkungs- │ │
│ │ Condition, │ │ und Allergie- │ │
│ │ Medication │ │ Kreuzreaktions- │ │
│ │ Request, │ │ Regelwerk (dgMP) │ │
│ │ Dispense … │ └─────────────────────┘ │
│ └──────────────┘ │
└───────────────────────────────────────────────┘| Methode | Pfad | Beschreibung |
|---|---|---|
GET | /fhir/metadata | CapabilityStatement |
GET | /fhir/Patient/$everything | Alle Daten eines Patienten |
GET | /fhir/MedicationStatement?status=active | eML (Medikationsliste) |
GET | /fhir/Patient/$medication-plan | eMP (Medikationsplan, dgMP) |
GET | /fhir/{type}?_content=… | Volltextsuche über Ressourcen |
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 | 4 | IKK classic, IKK Kliniken Köln, Hausarztpraxis, Adler-Apotheke Köln |
MedicationStatement | 4 | Metformin, Ramipril, Ibuprofen, Pantoprazol (mit PZN) |
MedicationRequest | 1 | E-Rezept Ibuprofen 400mg (Dr. Schneider) |
MedicationDispense | 1 | Abgabe durch Adler-Apotheke Köln (auf das E-Rezept bezogen) |
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) |