Bettenauslastung im Krankenhaus mit Tableau Prep
Eine zu hohe Bettenauslastung im Krankenhaus ist genauso problematisch wie eine zu geringe. Es ist wichtig, Krankenhausbetten aus der Ressourcenperspektive zu verstehen. Daten werden jedoch oft aus der Patientenperspektive gespeichert. Wie können wir anhand der Daten über die Patientenbelegung die Nutzung von Krankenhausbetten bestimmen?
Hinweis: Um die Aufgaben in diesem Tutorial durchzuführen, müssen Sie Tableau Prep und optional Tableau Desktop installiert haben:
Informationen zur Installation von Tableau Prep und Tableau Desktop finden Sie in der Tableau Desktop- und Tableau Prep-Bereitstellungshandbuch(Link wird in neuem Fenster geöffnet). Andernfalls können Sie die kostenlosen Testversionen von Tableau Prep(Link wird in neuem Fenster geöffnet) und Tableau Desktop(Link wird in neuem Fenster geöffnet) herunterladen.
Außerdem müssen Sie drei Datendateien herunterladen. Es wird empfohlen, die Dateien im Ordner "Eigenes Tableau Prep-Repository" > "Datenquellen" zu speichern.
– Beds.xlsx(Link wird in neuem Fenster geöffnet)
– Hours.xlsx(Link wird in neuem Fenster geöffnet)
– Patient Beds.xlsx(Link wird in neuem Fenster geöffnet)
Die Daten
Die Belegungsdaten von vier Betten, A, B, C und D, zeigen, welcher Patient sich jeweils in welchem Bett befand, sowie den Beginn und das Ende der Belegung. Die Daten sehen wie folgt aus:
Vorläufige Analyse
Wenn wir die Daten in Tableau Desktop einbinden, können wir ein Gantt-Diagramm erstellen, das zeigt, wann die Betten durch Patienten belegt waren.
Dies ist zur Veranschaulichung nützlich. Wir sehen, dass die Zwischenräume in der Belegung von Bett A und B sehr klein sind. Bett C ist jedoch unterbelegt. Für den Patienten in Bett D gibt es keinen Endzeitpunkt, dies können wir jedoch mit einigen Berechnungen beheben. Dadurch erhalten wir eine visuelle Übersicht über die Nutzung der Betten.
Wie können wir jedoch die Stunden zählen, in denen ein Bett leer stand? Oder den Leerstand vor und nach dem Inkrafttreten einer neuen Richtlinie vergleichen? Die vorhandene Datenstruktur bietet dazu keine einfache Möglichkeit.
Gewünschte Datenstruktur
Durch Erstellen einiger sehr einfacher Datensätze und die Kombination dieser Datensätze in Tableau Prep können wir diesen Datensatz in eine Form bringen, mit der wir eine genauere Analyse durchführen und nützlichere Visualisierungen erstellen können.
Bevor wir in Tableau Prep beginnen, sollten wir darüber nachdenken, was wir zur Beantwortung der Frage "Wie viele Stunden standen die einzelnen Betten leer?" benötigen.
Wir müssen für jedes Bett zu jeder Stunde wissen, ob es belegt war oder nicht. Gegenwärtig zeigen die Daten nur, wann sich ein Patient in dem Bett befand. Wir haben Tableau noch keine Informationen darüber gegeben, wann das Bett leer stand.
Um eine vollständige Matrix aller Betten und aller Stunden zu erstellen, legen wir zwei neue Datensätze an. Ein Datensatz enthält einfach eine Liste der Betten (A, B, C, D) und der andere eine Liste der Stunden (1, 2, 3 … 23, 24). Durch eine Kreuzverknüpfung (Verknüpfung jeder Zeile eines Datensatzes mit jeder Zeile des anderen Datensatzes) erhalten wir jede mögliche Kombination aus Betten und Stunden.
Der Datensatz Beds.xlsx sieht aus wie folgt: | Der Datensatz Hours.xlsx sieht aus wie folgt: | Die Kreuzverknüpfung führt zu folgendem Ergebnis: |
Als Nächstes binden wir Informationen zu Patientenbetten ein und beschriften jede Bett-Stunden-Kombination je nachdem, ob sich ein bestimmter Patient im Bett befand oder nicht. Daraus ergibt sich ein Datensatz, der eine Zeile für jede Bett-Stunden-Kombination enthält und angibt, ob sich ein Patient in diesem Bett befand, seine Nummer und den Beginn und das Ende der Belegung. Nullwerte geben an, dass das Bett nicht belegt war.
Mit den Daten in dieser Struktur können wir Analysen wie diese durchführen, mit denen wir nicht belegte Betten genauso einfach ermitteln können wie belegte Betten.
Umstrukturieren der Daten
Wie können wir das mit Tableau Prep erreichen? Wir erstellen das Schema in zwei Teilen. Im ersten Teil erstellen wir die Bett-Stunden-Matrix, dann kombinieren wir diese mit den Patienten-Bett-Daten. Vergewissern Sie sich, dass Sie alle drei Excel-Dateien (Beds.xlsx, Hours.xlsx und Patient Beds.xlsx) heruntergeladen haben, um die Schritte nachvollziehen zu können.
Bett-Stunden-Matrix
Zunächst stellen wir eine Verbindung zur Datei Beds.xlsx her.
Öffnen Sie Tableau Prep.
Klicken Sie auf dem Startbildschirm auf Verbindung zu Daten herstellen.
Klicken Sie im Bereich Verbindungen auf Microsoft Excel. Navigieren Sie zu dem Ordner, in dem Sie Beds.xlsx gespeichert haben, und klicken Sie auf Öffnen.
Das Blatt Beds (Betten) sollte automatisch im Bereich Schema angezeigt werden.
Tipp: Weitere Informationen zum Herstellen einer Verbindung zu Daten finden Sie unter Herstellen einer Verbindung zu Daten(Link wird in neuem Fenster geöffnet).
Als Nächstes müssen wir ein Feld erstellen, das wir für die Kreuzverknüpfung mit dem Datensatz Hours (Stunden) verwenden können. Wir fügen eine Berechnung hinzu, die einfach aus dem Wert 1 besteht.
Wählen Sie im Bereich Schema den Eintrag Beds aus und klicken Sie auf den vorgeschlagenen Aufbereitungsschritt.
Durch den eben hinzugefügten Aufbereitungsschritt wird der Bereich Profil angezeigt. Klicken Sie in der Symbolleiste auf Berechnetes Feld erstellen.
Benennen Sie das Feld Cross Join (Kreuzverknüpfung) und geben Sie den Wert 1 ein.
Das Raster Daten sollte aktualisiert werden und den aktuellen Zustand der Daten anzeigen.
Jetzt wiederholen wir den Vorgang mit dem Datensatz "Hours".
Klicken Sie im Bereich Verbindungen auf die Schaltfläche "Verbindung hinzufügen" , um eine weitere Datenverbindung hinzuzufügen.
Wählen Sie Microsoft Excel und dann die Datei Hours.xlsx aus und klicken Sie auf Öffnen.
Wählen Sie im Schemabereich den Eintrag Stunden aus und klicken Sie auf den vorgeschlagenen Bereinigungsschritt, um ihn dem Schema hinzuzufügen.
Erstellen Sie über die Symbolleiste im Bereich Profil ein berechnetes Feld namens Cross Join und geben Sie den Wert 1 ein.
Beide Datensätze verfügen jetzt über das gemeinsame Feld Cross Join und können verknüpft werden.
Verknüpfen Sie die beiden Aufbereitungsschritte, indem Sie Aufbereiten 2 auf Aufbereiten 1 ziehen und auf der Option Verknüpfen ablegen.
Im Verknüpfungsprofil darunter sollten die Konfigurationen automatisch ausgefüllt werden.
Da wir beide Felder Cross Join genannt haben, werden sie von Tableau Prep automatisch als gemeinsames Feld erkannt und im Bereich Verknüpfungsklauseln übernommen wird eine geeignete Verknüpfungsklausel erstellt.
Standardmäßig wird der Verknüpfungstyp "Innen" verwendet, und genau diesen benötigen wir hier.
Diese Verknüpfung gleicht alle Zeilen aus Beds mit allen Zeilen aus Hours ab, wie im Raster Daten zu sehen ist.
A. JOIN-Klausel
B. Typ von Verknüpfung
C. Ergebnisse im Datengitter
Tipp: Weitere Informationen über Verknüpfungen finden Sie unter Verknüpfen von Daten(Link wird in neuem Fenster geöffnet).
Wir benötigen die Felder Cross Join nicht mehr und können sie entfernen.
Wählen Sie im Bereich Schema den Eintrag Verknüpfen 1 aus, klicken Sie auf das Pluszeichen () und wählen Sie Bereinigungsschritt hinzufügen aus.
Wählen Sie die Felder Cross Join-1 und Cross Join aus und klicken Sie auf Felder entfernen.
Doppelklicken Sie auf die Beschriftung Aufbereiten 3 und benennen Sie den Schritt in Bed Hour Matrix um.
Damit haben wir den Datensatz "Bed Hour Matrix" angelegt, der alle Betten und alle Stunden enthält, und den ersten Teil der Erstellung des Datensatzes abgeschlossen.
Bettennutzung durch Patienten
Im zweiten Teil binden wir die Bettennutzung durch Patienten ein. Zunächst stellen wir eine Verbindung mit den Daten her.
Klicken Sie im Bereich Verbindungen auf die Schaltfläche "Verbindung hinzufügen" , um eine weitere Datenverbindung hinzuzufügen.
Wählen Sie Microsoft Excel und dann die Datei Patient Beds.xlsx aus und klicken Sie auf Öffnen.
Wählen Sie im Schemabereich den Eintrag Patientenbetten aus und klicken Sie dann auf den vorgeschlagenen Bereinigungsschritt, um ihn dem Schema hinzuzufügen.
Da die Bett-Stunden-Matrix auf Stunden basiert, der Datensatz "Patient Beds" jedoch auf der tatsächlichen Zeit, müssen wir im Datensatz "Patient Beds" die Stunden aus den Zeiten für Beginn und Ende der Belegung extrahieren. Zusätzlich müssen wir bei der Zeitangabe für das Ende darauf achten, dass ein Bett als belegt gekennzeichnet ist, wenn sich am Ende des Tages (Mitternacht, Stunde 24) noch ein Patient darin befindet, auch wenn der Datensatz keine Endzeit enthält. In diesem neuen Schritt fügen wir ein berechnetes Feld hinzu.
Klicken Sie in der Symbolleiste auf Berechnetes Feld erstellen.
Nennen Sie das Feld Start Hour. Geben Sie für die Berechnung
DATEPART('hour',[Start Time])
ein.Erstellen Sie ein anderes berechnetes Feld mit dem Namen End Hour. Geben Sie für die Berechnung
IFNULL(DATEPART('hour',[End Time]), 24)
ein.
Dadurch wird die Stunde für den Beginn der Belegung extrahiert. So wird aus "1.1.2018 9:35" einfach "9".
Durch DATEPART
wird die Stunde der Endzeit extrahiert. Durch IFNULL
wird die Endzeit 24 (Mitternacht) zugewiesen, wenn die Endzeit fehlt.
Jetzt können wir den Datensatz "Patient Beds", der die Bettennutzung enthält, mit dem Datensatz Bed Hour Matrix verknüpfen. Diese Verknüpfung ist etwas komplexer als die vorherige. Eine innere Verknüpfung gibt nur die Werte zurück, die in beiden Datensätzen enthalten sind. Da wir jedoch alle Bett-Stunden-Zeitfenster beibehalten möchten, unabhängig davon, ob das Bett belegt war, benötigen wir eine Linksverknüpfung. Dies führt zu zahlreichen Nullwerten, die in diesem Fall jedoch angemessen sind.
Außerdem müssen wir bestimmen, wann ein Bett-Stunden-Zeitfenster durch einen (oder mehrere) Patienten belegt ist. Zusätzlich zur Zuordnung des Betts, in dem sich der Patient befindet, müssen wir also die Zeit berücksichtigen. Der Datensatz "Bed Hour Matrix" enthält nur das Feld Hour, der Datensatz Patient Beds enthält jedoch die Felder Start Hour und End Hour. Mit einer einfachen Logik bestimmen wir, ob ein Patient einem bestimmten Bett-Stunden-Zeitfenster zugewiesen werden soll: Wir gehen davon aus, dass sich ein Patient im Bett befinden, wenn die Startzeit eines Patienten kleiner oder gleich (<=) dem Bett-Stunden-Zeitfenster ist UND die Endzeit größer oder gleich (>=) dem Bett-Stunden-Zeitfenster ist.
Daher werden drei Verknüpfungsklauseln benötigt, um diese beiden Datensätze richtig abzugleichen.
Verknüpfen Sie den Schritt Aufbereiten 3 mit dem Schritt Bed Hour Matrix.
Im Bereich Verknüpfungsklauseln übernommen sollte die Standardeinstellung Hour = End Hour lauten. Klicken Sie auf die Verknüpfungsklausel, um den Operator von "=" in "<=" zu ändern.
Klicken Sie auf das Pluszeichen oben rechts im Bereich Verknüpfungsklauseln übernommen, um eine weitere Verknüpfungsklausel hinzuzufügen. Legen Sie Hour >= Start Hour fest.
Fügen Sie eine dritte Verknüpfungsklausel für Bed = Hospital Bed hinzu.
Klicken Sie im Bereich Verknüpfungstyp auf den nicht schattierten Bereich der Grafik neben Bed Hour Matrix, um den Verknüpfungstyp in eine Linksverknüpfung zu ändern.
Hinweis: Wenn Sie die Bed Hour Matrix auf Aufbereiten 3 ziehen statt umgekehrt, erhalten Sie die gewünschten Ergebnisse durch eine Rechtsverknüpfung statt einer Linksverknüpfung. Die Reihenfolge, in der Sie die Schritte ziehen, ist für die Ausrichtung der Verknüpfung von Bedeutung. Auch die Reihenfolge der Verknüpfungsklauseln ist umgekehrt. Achten Sie auf die Beibehaltung der richtigen Logik für den Vergleich der Stunden.
Unsere Daten sind jetzt verknüpft, wir sollten jedoch einige Artefakte der Verknüpfung entfernen und die Felder bereinigen. Start Hour und End Hour werden nicht mehr benötigt. Hospital Bed und Bed sind ebenfalls redundant. Schließlich bedeutet der Wert null im Feld Patient, dass das Bett nicht belegt ist.
Fügen Sie im Bereich Schema einen Aufbereitungsschritt hinzu, sodass wir die verknüpften Daten bereinigen können.
Klicken Sie bei gedrückter Strg-Taste (bei gedrückter Befehlstaste auf dem Mac), um die Felder End Hour, Start Hour und Hospital Bed gleichzeitig auszuwählen, und klicken Sie dann in der Symbolleiste auf Felder entfernen.
Doppelklicken Sie auf der Feldprofilkarte Patient auf den Wert null und geben Sie Unoccupied (Nicht belegt) ein.
Jetzt enthält unsere Datenstruktur eine Zeile für jede Kombination aus Bett und Stunde, ob sich in dieser Stunde ein Patient im Bett befand und die Informationen zum Patienten. Jetzt müssen wir nur noch einen Ausgabeschritt hinzufügen und den Datensatz selbst generieren.
Wählen Sie im Bereich Schema den Eintrag Aufbereiten 4 aus, klicken Sie auf das Pluszeichen und wählen Sie Ausgabe hinzufügen aus.
Ändern Sie im Bereich Ausgabe den Ausgabetyp in ".csv" und klicken Sie auf Durchsuchen.
Geben Sie Bed Hour Patient Matrix als Namen ein und wählen Sie den gewünschten Speicherort aus, bevor Sie zum Speichern auf Annehmen klicken.
Klicken Sie auf die Schaltfläche Schema ausführen unten im Bereich, um die Ausgabe zu generieren. Klicken Sie im Statusdialogfeld zum Schließen auf Fertig.
Tipp: Weitere Informationen über Ausgaben und das Ausführen eines Schemas finden Sie unter Speichern und Freigeben Ihrer Arbeit(Link wird in neuem Fenster geöffnet).
Das endgültige Schema sollte aussehen wie folgt:
Analyse in Tableau Desktop
Um Tableau Desktop zu installieren, bevor Sie mit diesem Tutorial fortfahren, können Sie die kostenlose Testversion herunterladen.
Jetzt hat der Datensatz die gewünschte Struktur und wir können eine genauere Analyse als mit den ursprünglichen Daten durchführen.
Öffnen Sie Tableau Desktop. Wählen Sie im Bereich Verbinden die Option Textdatei aus, navigieren Sie zur Datei Bed Hour Patient Matrix.csv und klicken Sie auf Öffnen.
Auf der Registerkarte Datenquelle sollten die Daten standardmäßig im Verknüpfungsbereich angezeigt werden. Klicken Sie auf Blatt 1.
Ziehen Sie im Bereich Daten den Eintrag Hour über die Linie, die Kennzahlen und Dimensionen trennt, um eine diskrete Dimension zu erstellen.
Ziehen Sie Bed in den Zeilen-Container und Hour in den Spalten-Container.
Ziehen Sie Patient auf den Container Farbe.
Die Formatierung ist optional, kann jedoch die Darstellung verdeutlichen.
Klicken Sie auf den Container Farbe und wählen Sie Farben bearbeiten aus.
Wählen Sie Unoccupied im Bereich links aus. Wählen Sie im Dropdown-Menü rechts die Farbpalette Seattle-Grau aus.
Wählen Sie den vierten, hellsten Grauton aus und klicken Sie auf OK.
Klicken Sie erneut auf den Container Farbe und dann auf das Dropdown-Menü Rahmen. Wählen Sie die zweite Grauoption ganz rechts aus.
Wählen Sie in der Symbolleiste im Dropdown-Menü "Größe" statt Standard den Eintrag Breite anpassen.
Klicken Sie auf das Menü Format und dann auf Rahmen.
Klicken Sie für die Zeilentrennung auf das Dropdown-Menü "Bereich" und wählen Sie einen sehr hellen Grauton.
Bewegen Sie den Schieberegler Ebene auf den zweiten Teilstrich.
Wiederholen Sie den Vorgang für die Spaltentrennung. Wählen Sie einen hellen Grauton als Farbe für den Bereich und bewegen Sie den Schieberegler Ebene auf den zweiten Teilstrich.
Doppelklicken Sie unten auf die Registerkarte "Blatt" und benennen Sie sie in Bed Use by Hour (Bettnutzung nach Stunde) um.
In dieser Ansicht können wir schnell erkennen, wann ein bestimmtes Bett belegt war oder leer stand.
Wir können jedoch noch weiter gehen und die Anzahl der Stunden berechnen, in denen jedes Bett leer stand.
Klicken Sie unten auf die Registerkarte mit dem Symbol für ein neues Blatt , um ein neues leeres Blatt zu öffnen.
Ziehen Sie Patient auf Zeilen.
Ziehen Sie Hour auf Spalten. Klicken Sie mit der rechten Maustaste auf das Hour-Feld, um das Menü zu öffnen. Wählen Sie Kennzahl > Anzahl aus.
Ziehen Sie eine andere Kopie des Felds Patient aus dem Bereich Daten in den Container Farbe.
Klicken Sie mit der rechten Maustaste auf die Achse und wählen Sie Achse bearbeiten aus. Ziehen Sie den Titel auf Hours und schließen Sie das Dialogfeld.
Benennen Sie die Registerkarte "Blatt" in Bed Hours by Patient (Bett – Stunden nach Patient) um.
In dieser Ansicht können wir erkennen, wie viele Stunden Betten unbelegt waren. Dies war im ursprünglichen Datensatz nicht möglich. Welche anderen Diagramme und Dashboards können Sie erstellen? Jetzt können Sie es ausprobieren, da Ihre Daten die richtige Struktur haben.
Zusammenfassung und Ressourcen
Um diese Datenstruktur mit Tableau Prep zu erstellen, mussten wir folgende Aktionen durchführen:
Wir haben einen Datensatz für jeden Aspekt, den wir analysieren wollten, erstellt, in diesem Fall für Betten und Stunden.
Wir haben die Datensätze durch eine Kreuzverknüpfung zum Datensatz Bed Hour Matrix verknüpft, der jede mögliche Kombination aus Betten und Stunden enthält.
Wir haben den Datensatz Bed Hour Matrix mit den Daten in Patient Bed verknüpft und sichergestellt, dass alle Stunden für Bett-Zeitfenster bei der Verknüpfung beibehalten wurden und durch die Join-Klauseln die Daten in "Patient Bed" richtig mit den Bett-Stunden-Zeitfenstern abgeglichen wurden.
Wir haben die folgenden Berechnungen verwendet, um Felder für die Verknüpfung zu erstellen. Die zweite und dritte Berechnung extrahieren die Stundeninformationen aus den ursprünglichen datetime-Feldern.
Cross Join =
1
Dadurch wird einfach jeder Zeile der Wert 1 zugewiesen.
Start Hour =
DATEPART('hour',[Start Time])
Dadurch wird die Stunde für den Beginn der Belegung extrahiert. So wird aus "1.1.2018 9:35" einfach "9".
End Hour =
IFNULL(DATEPART('hour',[End Time]), 24)
Wir konnten
DATEPART('hour',[End Time])
verwenden, genau wie für Start Time. Dadurch wird die Stunde für die Endzeit extrahiert. So wird aus "1.1.2018 16:34" einfach "4".Wir möchten jedoch angeben, dass das Bett immer noch belegt (keine Endzeit) und nicht leer ist. Dazu haben wir mit
IFNULL
die Endzeit 24 (Mitternacht) zugewiesen, wenn die Endzeit fehlte. Wenn das erste ArgumentDATEPART('hour',[End Time])
null beträgt, gibt die Berechnung stattdessen "24" zurück.
Hinweis: Möchten Sie Ihre Arbeit überprüfen? Laden Sie das Tableau Prep-Schemadateipaket (Hospital Beds.tflx(Link wird in neuem Fenster geöffnet)) und das Tableau Desktop-Arbeitsmappenpaket (Hospital Beds.twbx(Link wird in neuem Fenster geöffnet)) herunter.
Ressourcen: Benötigen Sie weitere Schulungen? Nehmen Sie an einem persönlichen Schulungs(Link wird in neuem Fenster geöffnet)kurs teil. Möchten Sie wissen, welche Funktionen in diesem Tutorial besprochen wurden? Schlagen Sie unter den anderen Themen in der Tableau Prep-Online-Hilfe nach. Suchen Sie nach zusätzlichen Hilfsquellen? Dann sollten Sie sich den Blogpost Master Tableau Prep with this list of learning resources(Link wird in neuem Fenster geöffnet) (Tableau Prep mit dieser Liste von Schulungsressourcen beherrschen) ansehen.