Användning av sjukhussäng med Tableau Prep

Det kan vara problematiskt att nå full kapacitet på ett sjukhus, men det är även ett överflöd av resurser. Det är viktigt att se på sjukhussängar från sängens perspektiv som en resurs. Data lagras emellertid ofta från patientens perspektiv. Hur kan vi med data som registrerar när patienter ligger i sängar bestämma användningen av sängar?

Obs! Du måste ha Tableau Prep och eventuellt Tableau Desktop installerade för att kunna slutföra uppgifterna i denna handledning.

Läs mer i Driftsättningsguide för Tableau Desktop och Tableau Prep(Länken öppnas i ett nytt fönster) för att installera Tableau Prep och Tableau Desktop. Du kan även ladda ned kostnadsfria utvärderingsversioner av Tableau Prep(Länken öppnas i ett nytt fönster) och Tableau Desktop(Länken öppnas i ett nytt fönster).

Du måste även ladda ned tre datafiler. Vi rekommenderar att du sparar dem i din Min Tableau Prep-lagringsplats > Datakällor-mapp.
- Beds.xlsx(Länken öppnas i ett nytt fönster)
- Hours.xlsx(Länken öppnas i ett nytt fönster)
- Patient Beds.xlsx(Länken öppnas i ett nytt fönster)

Data

För våra fyra sängar A, B, C och D spårar vi vilken patient som låg i sängen och deras start- och sluttid i den. Så här ser data ut:

förhandsgranskning av datauppsättningen Patientsängar

Preliminär analys

Om vi hämtar dessa data till Tableau Desktop kan vi skapa ett Gantt-diagram som visar när patienterna ligger i sängar.

Gantt-diagram i Tableau Desktop i datauppsättningen Patientsängar

Detta är en användbar layout. Vi ser att det bara finns små luckor i användning för sängarna A och B, men säng C är mycket underutnyttjad. Patienten i säng D har ingen sluttid, men vi kan svara på det genom att göra några beräkningar. Detta ger oss en visuell överblick över hur sängarna används.

Vad händer om vi skulle vilja räkna timmarna när en säng står tom? Eller jämföra ledig sängtid före och efter att en ny policy införs? Det finns inget enkelt sätt att göra det med data i dess nuvarande struktur.

Önskad datastruktur

Om vi skapar några mycket grundläggande datauppsättningar och kombinerar dem i Tableau Prep kan vi ändra denna datauppsättning till en form som vi kan använda för att utföra djupare analyser och skapa ännu mer användbara visualiseringar.

Innan vi går in i Tableau Prep tar vi ett steg tillbaka och tänker på vad vi behöver skapa för att svara på frågan ”Hur många timmar stod varje säng tom?”

Vi måste kunna titta på varje säng för varje timme och veta om det fanns en patient i sängen eller inte. Just nu visar data endast när en patient låg i sängen. Vi har inte gett Tableau information om de lediga timmarna.

Vi skapar två nya datauppsättningar för att skapa en fullständig matris med alla sängar och alla timmar. Den ena är en lista över sängar (A, B, C, D) och den andra är en lista över timmar (1, 2, 3, …, 23, 24). Genom att utföra en korsdatabaskoppling (koppla varje rad i en datauppsättning med varje rad i den andra datauppsättningen) kommer vi att få alla möjliga kombinationer av sängar och timmar.

Datauppsättningen Beds.xlsx ser ut så här:Datauppsättningen Hours.xlsx ser ut så här:Och resultaten för korsdatabaskoppling ser ut så här: 
Förhandsgranskning av datauppsättningen SängarFörhandsgranskning av datauppsättningen TimmarFörhandsgranskning av Matrisdata för säng-timmar

Sedan hämtar vi informationen om Patientsängar och etiketterar varje kombination av säng-timme om den har en specifik patient eller inte. Vi avslutar med en datauppsättning som har en rad för varje säng-timme och om en patient befann sig i sängen, deras nummer och start- och sluttider. Nullvärden indikerar att sängen stod tom.

Förhandsgranskning av Matrisdata för säng-timme-patient

Med hjälp av data i denna struktur kan vi utföra analyser som denna, vilket gör det lika enkelt att undersöka lediga sängar som patientsängar.

Instrumentpanel med formade data som visar sänganvändning per timme och patient

Strukturera om data

Så hur tar vi oss dit med Tableau Prep? Vi bygger upp flödet i två delar. Först bygger vi matrisen för Sängtimmar och sedan kombinerar vi den med data om Patientsängar. Se till att du har laddat ned alla tre Excel-filer (Beds.xlsx, Hours.xlsx och Patient Beds.xlsx) för att kunna följa med.

Matris för Sängtimme

Först ska vi ansluta till filen Beds.xlsx.

  1. Öppna Tableau Prep.

  2. Klicka på Anslut till data på startskärmen.

  3. I rutan Anslutningar klickar du på Microsoft Excel. Gå till platsen där du sparade Beds.xlsx och klicka på Öppna.

  4. Bladet Sängar borde automatiskt tas fram till rutan Flöde.

Tips: Mer information om hur du ansluter till data finns i Anslut till data(Länken öppnas i ett nytt fönster).

Sedan måste vi skapa ett fält som vi kan använda för att göra korsdatabaskopplingen med datauppsättningen Timmar. Vi lägger till en beräkning som helt enkelt är värdet 1.

  1. Välj Sängar och klicka på det föreslagna Rensningssteget i rutan Flöde.

  2. Rutan Profil visas med steget Rensa som vi precis har lagt till. Klicka på Skapa beräknat fält i verktygsfältet.

  3. Ge fältet namnet Korsdatabaskoppling och ange värdet 1.

  4. Rutnätet Data bör uppdateras och visa det aktuella tillståndet för data.

Nu upprepar vi processen med datauppsättningen Timmar.

Klicka för anvisningar
  1. Lägg till ytterligare en dataanslutning genom att klicka på knappen Lägg till anslutning i rutan Anslutningar.

  2. Välj Microsoft Excel och välj sedan filen Hours.xlsxoch klicka på Öppna.

  3. Välj Timmar i rutan Flöde och klicka på det föreslagna Rensningssteget för att lägga till det till flödet.

  4. Från verktygsfältet i rutan Profil skapar du ett beräknat fält med namnet Korsdatabaskoppling och anger värdet 1.

Båda datauppsättningarna har nu ett delat fält, Korsdatabaskoppling och kan kopplas.

  1. Koppla de två rensningsstegen genom att dra Rensa 2 till Rensa 1 och släpp det på alternativet Koppla.

    Rutan Flöde visar släppområdet Koppla när Rensa 2 dras till Rensa 1

  2. I Koppla profil nedan ska kopplingskonfigurationerna fyllas i automatiskt.

    • Eftersom vi gav båda fälten namnet Korsdatabaskoppling identifierar Tableau Prep dem automatiskt som det delade fältet och skapar lämpliga Tillämpade kopplingssatser.

    • Standardinställningen Kopplingstyp är inre, vilket är vad vi vill.

    • Denna koppling kommer att matcha alla rader från Sängar med alla rader från Timmar, som visas i rutnätet Data.

    Rutan Koppla profil med olika element som räknas upp för att motsvara listan ovan

    A. Kopplingssats

    B. Kopplingstyp

    C. Resultat av datarutnät

Tips: Mer information om kopplingar finns i Koppla dina data(Länken öppnas i ett nytt fönster).

Eftersom vi inte längre behöver fälten för Korsdatabaskoppling kan vi ta bort dem.

  1. I rutan Flöde väljer du Koppling 1, klickar på plusikonen och väljer Lägg till rensningssteg.

  2. Markera fälten Korsdatabaskoppling-1 ochKorsdatabaskoppling och klicka på Ta bort fält.

  3. Dubbelklicka på etiketten Rensa 3 och byt namn på steget Matris för sängtimmar.

Vi har nu datauppsättningen Matris för sängtimmar som innehåller alla sängar och alla timmar och har slutfört den första delen av uppbyggandet av vår datauppsättning.

Användning av patientsäng

Del två är att hämta användningen av patientsäng. Vi börjar med att ansluta till data.

  1. Lägg till ytterligare en dataanslutning genom att klicka på knappen Lägg till anslutning i rutan Anslutningar.

  2. Välj Microsoft Excel och välj sedan filen Patient Beds.xlsx och klicka på Öppna.

  3. Välj Patientsängar i rutan Flöde och klicka sedan på det föreslagna Rensningssteget för att lägga till det till flödet.

Eftersom filen Matris för sängtimmar baseras på timme men Patientsängar baseras på faktisk tid, måste vi dra ut timmen från start- och sluttiderna för Patientsängar. För sluttiden vill vi dessutom se till att om ett patent fortfarande finns kvar i sängen i slutet av dagen (midnatt, timme 24) indikerar vi att sängen är upptagen även om det inte finns någon sluttid i datauppsättningen. Vi lägger till ett beräknat fält i det här nya steget.

  1. Klicka på Skapa beräknat fält i verktygsfältet.

  2. Namnge fältet Starttid. Ange DATEPART('hour',[Start Time]) för beräkningen.

  3. Detta identifierar och tar ut starttidens timdel. Därför blir "1/1/18 9:35 AM" helt enkelt "9".

  4. Skapa ett annat beräknat fält som heter Sluttid. Ange IFNULL(DATEPART('hour',[End Time]), 24) för beräkningen.

  5. Delen DATEPART tar timmen från sluttiden. Delen IFNULL tilldelar en sluttid på 24 (midnatt) till eventuell saknad sluttid.

Nu är vi redo att koppla användningen av patientsäng till Matrisen för sängtimmar. Detta är en lite mer komplicerad koppling än vad vi gjorde tidigare. En inre koppling skulle endast returnera värden som finns i båda datauppsättningarna. Vi måste göra en vänster koppling eftersom vi vill se till att hålla alla platser för säng-timme, oavsett om en patient befann sig i sängen eller inte. Detta kommer att resultera i många nollor, men det är bra.

Vi måste också matcha när en plats för säng-timme upptas av en patient (eller patienter). Så förutom att matcha sängen som patienten befinner sig i måste vi även ta hänsyn till tiden. Datauppsättningen Matris för sängtimmar har bara ett fält för Timme och datauppsättningen Patientsängar har Starttid och Sluttid. Vi kommer att använda lite grundläggande logik för att avgöra om en patient ska tilldelas en given plats för säng-timme: En patient anses ligga i en säng om deras starttid är mindre än eller lika med (<=) platsen säng-timme OCH deras sluttid är större än eller lika med (>=) platsen säng-timme.

Därför behövs det tre kopplingssatser för att dessa två datauppsättningar ska matchas på lämpligt sätt.

  1. Koppla steget Rensa 3 med steget Matris för sängtimmar.

  2. I området Tillämpade kopplingssatser ska standardvärdet vara Timme = Sluttid. Klicka på kopplingssatsen för att ändra operanden från ”=” till ”<=”.

  3. Klicka på plusknappen i det övre högra hörnet av området Tillämpade kopplingssatser för att lägga till en annan kopplingssats. Ställ in den på Timme >= Starttid

  4. Lägg till en tredje kopplingssats för Säng = Sjukhussäng.

  5. I avsnittet Kopplingstyp, klicka på det ej skuggade området i bilden bredvid Matrisen för sängtimmar för att ändra kopplingstypen till Vänster koppling.

    Rutan koppla Profil för Koppla 2 visar den korrekta konfigurationen

Obs! Om du drar Matrisen för sängtimmar till Rensa 3 istället för tvärtom, kan du få önskat resultat genom att använda en höger koppling istället för en vänster koppling. Ordningsföljden för att dra stegen är viktig för kopplingens orientering. Kopplingssatserna kommer också att vara i omvänd ordning. Se till att du bevarar korrekt logik för att jämföra timmarna.

Våra data är nu kopplade, men vi bör rensa några artefakter från kopplingen och se till att fälten ser snygga ut. Vi behöver inte längre Starttid och Sluttid. Sjukhussäng och Säng är också överflödiga. Slutligen betyder ett nullvärde i fältet Patient att sängen är ledig.

  1. I rutan Flöde lägger du till ett rensningssteg så att vi kan rensa kopplade data.

  2. Ctrl + klicka (kommando+klicka på Mac) för att markera fälten Sluttid, Starttid och Sjukhussäng och klicka sedan på Ta bort fält i verktygsfältet.

  3. På fältprofilkortet Patient dubbelklickar du på nullvärdet och skriver Ledig.

Vi har nu en datastruktur med en rad för varje säng-timme. Om det fanns en patient i sängen under den timmen har vi även patientinformationen. Nu behöver vi bara lägga till ett utmatningssteg och generera själva datauppsättningen.

  1. I rutan Flöde väljer du Rensa 4, klickar på plusikonen och väljer Lägg till utdata.

  2. Ändra Utdatatyp till .csv i rutan Utdata och klicka sedan på Bläddra.

  3. Ange Matris för patientens sängtimmar för namnet och välj önskad plats innan du klickar på Acceptera för att spara.

  4. Klicka på knappen Kör flöde längst ner på rutan för att generera dina utdata. Stäng dialogrutan genom att klicka på Klar i statusdialogrutan.

Tips: Mer information om utdata och flödeskörning finns i Spara och dela ditt arbete(Länken öppnas i ett nytt fönster).

Det slutliga flödet bör se ut så här:

Rutan Flöde med alla slutförda steg

Analys i Tableau Desktop

För att installera Tableau Desktop kan du ladda ned den kostnadsfria provversionen innan du fortsätter med denna handledning.

Nu när vi har datauppsättningen i en önskad struktur kan vi utföra en djupare analys än med ursprungliga data.

  1. Öppna Tableau Desktop. Välj Textfil i rutan Anslut, gå till filen Bed Hour Patient Matrix.csv och klicka på Öppna.

  2. Data visas som standard på arbetsytan på fliken Datakälla. Klicka på Blad 1.

  3. Dra Timme ovanför linjen som separerar Åtgärder och Dimensioner i rutan Data för att göra den till en diskret dimension.

  4. Dra Säng till hyllan rader och Timme till hyllan Kolumn.

  5. Dra Patient till hyllan Färg.

Grundläggande vy av formade data i Tableau Desktop som visar sänganvändning per timme

Formatering är valfritt, men kan hjälpa till att förbättra visualiseringarna.

  1. Klicka på hyllan Färg och välj Redigera färger.

  2. I området till vänster väljer du Ledig. Välj färgpaletten Seattle-gråa nyanser i listrutan till höger.

  3. Välj den fjärde ljusaste gråa färgen och klicka på OK.

  4. Klicka på hyllan Färg igen och klicka sedan på listrutan Kant. Välj det andra grå alternativet längst till höger.

  5. Byt från Standard till Anpassa bredd i verktygsfältet, från listrutan Storlek.

    Bild av placeringen av listrutan Storlek i verktygsfältet

  6. Klicka på menyn Format och sedan på Kanter.

  7. Klicka på listrutan och välj en mycket ljusgrå färg som Radavdelare.

  8. Justera skjutreglaget Nivå till den andra bockmarkeringen.

  9. Upprepa med Kolumnavdelaren. Ange färgen på Rutan till ljusgrå och Nivån till den andra bockmarkeringen.

    Ett kodavsnitt som visar formatrutan med rätt inställningar för kanterna

  10. Dubbelklicka på bladfliken längst ned och byt namn på den till Sänganvändning per timme.

Denna vy låter oss snabbt se när en viss säng var upptagen eller ledig.

En vy som visar sängens användning per timme

Men vi kan gå längre och räkna antalet timmar varje säng var ledig.

  1. Klicka på den nya bladikonen längst ned för att öppna ett tomt blad.

  2. Dra Patient till Rader.

  3. Dra Timme till Kolumner. Öppna menyn genom att högerklicka på fältet Timme. Välj Mätvärde > Räkna.

  4. Dra en annan kopia av fältet Patient från rutan Data till hyllan Färg.

  5. Högerklicka på axeln och välj Redigera axel. Ändra rubriken till Timmar och stäng dialogrutan.

  6. Byt namn på bladfliken Sängtimmar per patient.

En vy som visar sängtimmar per patient

Med den här vyn kan vi identifiera hur många lediga timmar vi hade i sängen, något som vi inte kunde göra med den ursprungliga datauppsättningen. Vilka andra diagram eller instrumentpaneler kan du skapa? Försök med det nu när dina data är i rätt struktur.

Sammanfattning och resurser

För att bygga denna datastruktur med Tableau Prep behövde vi utföra följande åtgärder:

  1. Bygg en datauppsättning för varje aspekt vi vill analysera, i detta fall Sängar och Timmar.

  2. Korsdatabaskoppla dessa datauppsättningar för att skapa datauppsättningen Matris för sängtimmar med alla möjliga kombinationer av sängar och timmar.

  3. Koppla Matris för sängtimmar med data om Patientsäng och se till att kopplingen håller alla sängplatstimmar och att kopplingssatserna matchar data för patientsäng med platser för säng-timme.

Vi använde följande beräkningar för att skapa fält som vi kunde koppla med. Den andra och tredje tar fram timinformationen från de ursprungliga datumtidsfälten.

  • Korsdatabaskoppling = 1

    • Detta tilldelar bara värdet 1 till varje rad

  • Starttid = DATEPART('hour',[Start Time])

    • Detta identifierar och tar ut starttidens timdel. Därför blir "1/1/18 9:35 AM" helt enkelt "9".

  • Sluttid = IFNULL(DATEPART('hour',[End Time]), 24)

    • Vi skulle kunna använda DATEPART('hour',[End Time]) som vi gjorde för Starttid. Detta identifierar och tar ut sluttidens timdel. Därför blir "1/1/18 16:34 PM" helt enkelt "4".

    • Men vi vill indikera att patientsängen som fortfarande är upptagen (ingen sluttid) används och är inte tom. För att göra detta tilldelar vi en sluttid på 24 (midnatt) till eventuell saknad sluttid med hjälp av funktionen IFNULL. Om det första argumentet DATEPART('hour',[End Time]) är null returnerar beräkningen ”24” istället.

Obs! Vill du kontrollera ditt arbete? Ladda ned den paketerade flödesfilen för Tableau Prep (Hospital Beds.tflx(Länken öppnas i ett nytt fönster)) och den paketerade arbetsboksfilen för Tableau Desktop (Hospital Beds.twbx(Länken öppnas i ett nytt fönster)).

Resurser: Behöver du mer utbildning? Gå en personlig utbildning(Länken öppnas i ett nytt fönster). Är du nyfiken på vilka funktioner vi har gått igenom? Ta en titt på övriga avsnitt i Tableau Prep-hjälpen online. Vill du ha ytterligare resurser? Då är blogginlägget Bemästra Tableau Prep med denna lista över utbildningsresurser(Länken öppnas i ett nytt fönster) något för dig.

Tack för din feedback!Din feedback har skickats in. Tack!