Hallo Herr Zerbaum. Es war eine Herausforderung die Patientenliste zu identifizieren. Sie heißt nämlich offizielle "Patientenschlange" in der Datenbank nicht zu verwechseln mit Patientengruppe. Nach einer Stunde Exploration und zwei Software-Crash hier die Lösung wie sie die Patientenlisten namen "Patientenschlange" weiterverarbeiten können.
Ich update meine Kontextdatein entsprechend später.
Panel → Patientenliste per HQL-Statistik abfragen & weiterverarbeiten
Problem: Man möchte in der HQL-Statistik auf die manuellen Patientenlisten zugreifen, die unter Panel → Patientenliste angelegt werden — z.B. um Wartelisten auszuwerten, Gruppentherapie-Teilnehmer zu analysieren oder eine bestehende Liste mit Abrechnungsdaten zu verknüpfen.
Lösung: Die Patientenlisten stecken in der Tabelle patientenschlange (nicht patientengruppe — das sind die Abrechnungsgruppen). Die einzelnen Patienten liegen in patientenschlangeelement, verbunden über die Bridge-Tabelle patientenschlange_schlange.
Schritt 1: Alle vorhandenen Listen anzeigen
SELECT
PS.name AS "Listenname",
PS.dtype AS "Typ",
COUNT(DISTINCT PSE.patient_ident) AS "Anzahl Pat"
FROM patientenschlange PS
LEFT JOIN patientenschlange_schlange PSS
ON PS.ident = PSS.patientenschlange_ident
LEFT JOIN patientenschlangeelement PSE
ON PSS.schlange_ident = PSE.ident
AND PSE.removed = false
WHERE PS.removed = false
GROUP BY PS.name, PS.dtype
ORDER BY PS.name
;
Das liefert alle Listen mit Typ und Patientenzahl. Die dtype-Werte unterscheiden manuelle Listen (Patientenschlange), DICOM-Gerätezuordnungen (DICOMModality) und Übergabe-Listen (HandoffSchlange).
Schritt 2: Patienten einer Liste als Temp-Tabelle laden
DROP TABLE IF EXISTS tempListePat;
CREATE TEMPORARY TABLE tempListePat AS
SELECT DISTINCT
PSE.patient_ident AS patientID
FROM patientenschlange PS
JOIN patientenschlange_schlange PSS
ON PS.ident = PSS.patientenschlange_ident
JOIN patientenschlangeelement PSE
ON PSS.schlange_ident = PSE.ident
WHERE PS.removed = false
AND PSE.removed = false
AND PS.name = 'Kopfschmerz' -- ← euren Listennamen einsetzen
;
Schritt 3: In beliebigen Queries als Filter verwenden
Die Temp-Tabelle tempListePat kann danach in jedem weiteren Query als Filter dienen:
SELECT ...
FROM leistung A
JOIN ...
JOIN patient P ON ...
WHERE P.ident IN (SELECT patientID FROM tempListePat)
AND ...
;
So lassen sich Abrechnungsdaten, Diagnosen, Karteieintragstatistiken oder beliebige andere Auswertungen auf eine bestimmte Patientenliste einschränken.
Bonus: Kommentare und Status aus der Liste
Die Tabelle patientenschlangeelement enthält auch den Kommentar (infotext), den Abhak-Status (checked) und das Hinzufügedatum (datum) pro Patient — falls man diese Informationen in die Auswertung einbeziehen möchte.
⚠ Stolperfalle: patientengruppe ≠ patientenschlange
| Feature | Tabelle | Zweck |
|---|
| Panel → Patientenliste | patientenschlange | Manuelle Listen, Wartelisten, Arbeitslisten |
| Patientengruppe | patientengruppe | Sammelrechnungen, Abrechnungsgruppen |
Die Tabelle patientengruppe sieht auf den ersten Blick passend aus (hat name, patient-Referenz), enthält aber die Abrechnungsgruppen — nicht die Panel-Listen.