Kerndatensatz Senologie
0.9.0 - ci-build
Kerndatensatz Senologie - Local Development build (v0.9.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Die strukturierten FHIR-Daten des Kerndatensatz Senologie ermöglichen die Sekundärnutzung für Versorgungsforschung, Qualitätssicherung und klinische Studien. Die einheitliche Profilierung stellt sicher, dass Daten standortübergreifend vergleichbar und auswertbar sind.
Auswertungspipeline — Kohortendefinition über Ein-/Ausschlusskriterien, tabellarische Projektion via ViewDefinitions, Kalkulation über CQL oder SQL
Zertifizierte Brustzentren müssen jährlich Qualitätsindikatoren nach DKG-Vorgaben erheben. Die strukturierten Daten ermöglichen eine automatisierte Berechnung:
| Indikator | Datengrundlage (Profile) |
|---|---|
| Anteil brusterhaltender Operationen | Senologie_Operation (Procedure) |
| Rate an R0-Resektionen | Senologie_Pathologie_Befund (DiagnosticReport) |
| Hormonrezeptor-Bestimmungsrate | Senologie_Pathologie_Befund (ER, PR, HER2, Ki-67) |
| Anteil Tumorkonferenz-Vorstellung | Senologie_Tumorboard_Empfehlung (CarePlan) |
| Postoperative Komplikationsrate | Senologie_Operative_Komplikation (Observation) |
| Systemtherapie-Adhärenz | Senologie_Systemtherapie_Procedure (Procedure) |
Die FHIR-Daten können über MII-Datenintegrationszentren für standortübergreifende Versorgungsforschung bereitgestellt werden:
Das Modul unterstützt die Rekrutierung und Datenbereitstellung für klinische Studien:
Durch die Annotation der S3-Leitlinie mit FHIR-Datenpunkten kann die Leitlinien-Adhärenz systematisch überprüft werden:
Beispielhafte FHIR-Abfragen für typische Auswertungen:
# Alle Patientinnen mit triple-negativem Mammakarzinom
GET Condition?code=http://snomed.info/sct|254837009
&_has:Observation:subject:code=http://loinc.org|85337-4 # ER-negativ
&_has:Observation:subject:code=http://loinc.org|85339-0 # PR-negativ
&_has:Observation:subject:code=http://loinc.org|85319-2 # HER2-negativ
# Alle Operationen mit Komplikationen Clavien-Dindo ≥ III
GET Observation?code=clavien-dindo
&value-concept=clavien-dindo-III,clavien-dindo-IV,clavien-dindo-V
&_include=Observation:focus # zugehörige Prozedur
Die Auswertungen (insbesondere Qualitätsindikatoren und Leitlinien-Compliance) können in zukünftigen Versionen dieses IGs durch die Clinical Quality Language (CQL) automatisiert werden. CQL ermöglicht die formale Definition von Qualitätsmaßen und Entscheidungslogik direkt auf FHIR-Ressourcen, sodass Kennzahlen reproduzierbar und maschinenlesbar berechnet werden können.
Eine erste CQL-Bibliothek mit den 17 Qualitätsindikatoren der S3-Leitlinie findet sich unter input/cql/SenologieQualitaetsindikatoren.cql. Sie ist gegen die synthetische 12-Patientinnen-Kohorte lauffähig (HAPI, Port 8095, Endpoint POST /fhir/$cql).
Ergänzend zu CQL stellt das IG sechs SQL-on-FHIR v2 ViewDefinition-Ressourcen bereit. Sie definieren flache, tabellarische Projektionen (Spalten, where-Filter, forEach-Expansion) auf die Kerndatensätze und sind damit die Grundlage für Kohortenaufbau, Data-Lake-Persistierung (Parquet/Delta) und BI-Auswertungen (Superset, Metabase, Tableau).
| ViewDefinition | Ressourcen-Basis | Zweck |
|---|---|---|
PatientKohorte |
Patient | Demographika (id, name, gender, birthDate, age, city) |
DiagnoseKohorte |
Condition | Diagnose inkl. ICD-10, SNOMED, Lateralität, UICC-Stadium |
OperationenKohorte |
Procedure | OP-Art (BET/Mastektomie/SNB/ALND), R-Status, Intention |
PathologieKohorte |
DiagnosticReport | Pathologie-Befunde mit IHC (ER, PR, HER2, Ki-67), Grading |
SystemtherapieKohorte |
Procedure | Systemtherapien (CH/HO/IM/ZT), Intention, Beginn/Ende, Protokoll |
TumorboardKohorte |
CarePlan | Tumorboard-Empfehlungen mit Aktivitäten (Therapieempfehlungen) |
Die kanonischen URLs folgen dem Schema https://www.senologie.org/fhir/ViewDefinition/{Name}. Ausführung z.B. über Pathling, sof-js oder direkt gegen eine HAPI-Instanz.
Pathling ist die von CSIRO als Open Source (Apache-2.0) entwickelte SQL-on-FHIR-Engine. Sie wird im IG als empfohlene Laufzeit für die sechs ViewDefinitions unterstützt; eine kommerzielle Lizenz ist nicht erforderlich. Das Repository stellt dafür zwei Integrationsvarianten bereit:
Variante A — Docker-Server (empfohlen für Teams / Shared Setup).
Ein eigenständiges Compose-File docker-compose.pathling.yaml startet einen Pathling-FHIR-Server auf Port 8090. Der Datenimport erfolgt über ein kleines Python-Skript, das die 177 Beispiel-Ressourcen aus fsh-generated/resources/ per FHIR-REST in die Pathling-Instanz lädt:
docker compose -f docker-compose.pathling.yaml up -d
python3 scripts/load-to-pathling.py
Anschließend stehen die ViewDefinitions über die FHIR-Operation POST /ViewDefinition/$run zur Verfügung und können sowohl aus dem Jupyter-Notebook heraus als auch von BI-Tools oder CI-Pipelines abgefragt werden.
Variante B — Python-Bibliothek (lokale Ausführung, ohne Docker). Für einzelne Analysen und reproduzierbare Notebooks genügt die Pathling-Python-Bibliothek, die ein eingebettetes Spark betreibt und die Bundles direkt aus dem Dateisystem liest:
pip install pathling pandas
from pathling import PathlingContext
pc = PathlingContext.create()
data = pc.read.bundles("../fsh-generated/resources/",
resource_types=["Patient", "Condition", "Procedure",
"Observation", "DiagnosticReport", "CarePlan"])
for name, vd in VIEWS.items():
df[name] = pc.view.execute(vd, data).toPandas()
Beide Varianten führen die sechs ViewDefinitions identisch aus; die im Notebook (notebooks/senologie-analyse.ipynb) gezeigten Auswertungen sind dadurch unverändert reproduzierbar, unabhängig von der gewählten Engine.
Ein lauffähiges Jupyter-Notebook notebooks/senologie-analyse.ipynb demonstriert die End-to-End-Auswertung der oben genannten ViewDefinitions gegen eine lokale HAPI-Instanz (Port 8095, 12 synthetische Patientinnen, 177 Ressourcen). Es zeigt 7 Beispielanalysen:
Verbindungsaufbau zu einem FHIR-Server aus Python heraus:
import requests, pandas as pd
FHIR_BASE = 'http://localhost:8095/fhir'
bundle = requests.get(f'{FHIR_BASE}/Condition?_count=200',
headers={'Accept': 'application/fhir+json'}).json()
df = pd.json_normalize([e['resource'] for e in bundle.get('entry', [])])
Das Notebook bietet drei austauschbare Ausführungsmodi, die oben über die Variable EXECUTION_MODE gewählt werden — die nachfolgenden Analysezellen sind modusunabhängig:
"docker" — Pathling FHIR Server (empfohlen): die sechs ViewDefinitions werden per POST /ViewDefinition/$run gegen den mit docker-compose.pathling.yaml gestarteten Pathling-Container ausgeführt."python" — Pathling Python-Bibliothek: lokale Ausführung über PathlingContext mit eingebettetem Spark; es ist kein Docker nötig (pip install pathling)."custom" — eingebauter FHIRPath-Mini-Runner: Fallback ohne Pathling/Spark, nutzt den HAPI-Testserver oder direkt die JSON-Ressourcen aus fsh-generated/resources/.Für produktive Datenmengen wird der Einsatz von Pathling (Modus 1 oder 2) empfohlen; der Custom-Runner ist bewusst als leichtgewichtige Alternative für Demo- und CI-Szenarien erhalten. Die Schritt-für-Schritt-Anleitung für alle drei Modi findet sich unter notebooks/README.md.
Die Sekundärnutzung erfolgt ausschließlich über die etablierten MII-Governance-Strukturen: