Uso del letto d’ospedale con Tableau Prep

Raggiungere la capienza massima in ospedale è problematico, ma lo è anche una sovrabbondanza di risorse. È importante comprendere i letti d’ospedale dal punto di vista del letto come risorsa. Tuttavia, spesso i dati vengono archiviati dal punto di vista del paziente. Come è possibile raccogliere dati che indichino quando i pazienti sono a letto e determinare l’uso dei letti?

Nota: per completare le attività di queste esercitazioni, sono necessari Tableau Prep e Tableau Desktop (quest’ultimo è facoltativo):

Per installare Tableau Prep e Tableau Desktop, consulta la guida alla distribuzione di Tableau Desktop e Tableau Prep(Il collegamento viene aperto in una nuova finestra). Altrimenti puoi scaricare le versioni di prova gratuite di Tableau Prep(Il collegamento viene aperto in una nuova finestra) e Tableau Desktop(Il collegamento viene aperto in una nuova finestra).

Sarà inoltre necessario scaricare tre file di dati. Si consiglia di salvarli nella cartella Repository personale di Tableau Prep > Origini dati.
- Beds.xlsx(Il collegamento viene aperto in una nuova finestra)
- Hours.xlsx(Il collegamento viene aperto in una nuova finestra)
- Patient Beds.xlsx(Il collegamento viene aperto in una nuova finestra)

Dati

Per i nostri quattro letti, A, B, C e D, tracciamo quale paziente era nel letto e la relativa ora di inizio e fine. I dati appaiono così:

anteprima dell’insieme di dati relativo ai letti dei pazienti

Analisi preliminare

Se importiamo questi dati in Tableau Desktop, possiamo creare un diagramma di Gantt per mostrare i periodi in cui i pazienti sono a letto.

Diagramma di Gantt in Tableau Desktop dell’insieme di dati sui letti dei pazienti

Si tratta di una visuale utile. Possiamo osservare che ci sono solo piccoli intervalli nell’uso dei letti A e B, tuttavia il letto C è molto sottoutilizzato. Il paziente del letto D non dispone di un’ora di fine, ma potremmo ricavarla con alcuni calcoli. Questo ci fornisce una visione di insieme di come vengono utilizzati i letti.

E se volessimo contare le ore in cui un letto era vuoto? Oppure confrontare il periodo di disponibilità dei letti prima e dopo l’introduzione di una nuova politica? Per come sono strutturati attualmente i dati, non c’è un modo semplice per farlo.

Struttura dati desiderata

Creando alcuni insiemi di dati molto basici e combinandoli in Tableau Prep, possiamo modificare tale insieme di dati in una forma che ci permetterà di effettuare analisi più approfondite e creare visualizzazioni ancora più utili.

Prima di passare a Tableau Prep, facciamo un passo indietro e pensiamo a cosa dobbiamo creare per rispondere alla domanda: "Per quante ore ogni letto è rimasto vuoto?"

Dobbiamo essere in grado di osservare lo stato di ogni letto per ogni ora e sapere se fosse o meno occupato da un paziente. Al momento i dati riguardano solo il periodo in cui i pazienti erano a letto; non abbiamo fornito a Tableau informazioni sulle ore vuote.

Per creare la matrice completa di tutti i letti e di tutte le ore, creeremo due nuovi insiemi di dati. Una è semplicemente una lista di letti (A, B, C, D) e l’altra è una lista di ore (1, 2, 3, ..., 23, 24). Eseguendo un cross join (unendo ogni riga di un insieme di dati a ogni riga dell’altro insieme di dati) otterremo ogni possibile combinazione di letti e ore.

L’insieme di dati Beds.xlsx appare così:L’insieme di dati Hours.xlsx appare così:E i risultati di cross join appaiono così: 
Anteprima dell’insieme di dati LettiAnteprima dell’insieme di dati OreAnteprima dei dati della matrice Letto-Ora

Quindi aggiungeremo le informazioni sui Letti dei pazienti, etichettando ogni combinazione ora-letto come avente o meno un paziente specifico. Otterremo un insieme di dati che dispone di una riga per ogni ora-letto e, se un paziente era a letto, del numero di ore e degli orari di inizio e fine. I valori NULL indicano che il letto non era occupato.

Anteprima dei dati della matrice Letto-Ora-Paziente

Con i dati così strutturati possiamo eseguire analisi come questa, che ci permette di individuare i letti liberi con la stessa facilità dei letti occupati dai pazienti.

Dashboard di dati modellati che mostrano l’utilizzo dei letti per ora e paziente

Ristrutturazione dati

Come effettuarla con Tableau Prep? Costruiremo il flusso in due parti, prima creando la Matrice ora-letto e poi combinandola con i dati dei Letti dei pazienti. Assicurati di aver scaricato tutti e tre i file Excel (Beds.xlsx, Hours.xlsx e Patient Beds.xlsx) per poter proseguire.

Matrice ora-letto

Per prima cosa ci collegheremo al file Beds.xlsx.

  1. Apri Tableau Prep.

  2. Dalla schermata iniziale, fai clic su Connessione ai dati.

  3. Nel riquadro Connessioni, fai clic su Microsoft Excel. Spostati dove è stato salvato Beds.xlsx e fai clic su Apri.

  4. Il foglio Letti dovrebbe spostarsi automaticamente nel riquadro di flusso.

Suggerimento: per ulteriori informazioni sulla connessione ai dati, consulta Connettersi ai dati(Il collegamento viene aperto in una nuova finestra).

Successivamente avremo bisogno di creare un campo da poter usare per creare un cross join con l’insieme di dati Ore. Aggiungeremo un calcolo che è semplicemente il valore 1.

  1. Nel riquadro Flusso seleziona Letti e fai clic sulla fase di pulizia consigliata.

  2. Con il passaggio di pulizia appena aggiunto, si aprirà il riquadro di profilo. Fai clic su Crea campo calcolato nella barra degli strumenti.

  3. Nomina il campo Cross join e inserisci il valore 1.

  4. La griglia di dati dovrebbe aggiornarsi e mostrare lo stato attuale dei dati.

Adesso ripeteremo il processo con l’insieme di dati Ore.

Fai clic per ottenere indicazioni
  1. Nel riquadro Connessioni fai clic sul pulsante Aggiungi connessione per aggiungere un’altra connessione dati.

  2. Scegli Microsoft Excel e quindi seleziona il file Hours.xlsx e fai clic su Apri.

  3. Nel riquadro Flusso seleziona Ore e fai clic sulla fase di pulizia consigliata per aggiungerla al flusso.

  4. Dalla barra degli strumenti nel riquadro di profilo, crea un campo calcolato denominato Cross join e immetti il valore 1.

Adesso entrambi gli insiemi di dati hanno un campo condiviso, Cross join, e possono essere uniti.

  1. Unisci i due passaggi di pulizia trascinando Pulizia 2 su Pulizia 1 e rilasciandoli sull’opzione Crea un join.

    Riquadro di flusso che mostra l’area di rilascio Join quando Pulizia 2 viene trascinato su Pulizia 1

  2. Nel profilo di join qui sotto, le configurazioni di join dovrebbero popolarsi automaticamente.

    • Poiché abbiamo chiamato entrambi i campi Cross join, Tableau Prep li identifica automaticamente come campo condiviso e crea le clausole di join applicate appropriate.

    • Il tipo di join predefinito è interno, proprio ciò che vogliamo.

    • Questo join abbinerà tutte le righe di Letti a tutte le righe di Ore, come visto nella griglia di Dati.

    Riquadro Profilo join con vari elementi evidenziati in base all’elenco precedente

    A. Clausola di unione

    B. Tipo di join

    C. Risultati della griglia dati

Suggerimento: per ulteriori informazioni sui join, consulta Creare un join dei dati(Il collegamento viene aperto in una nuova finestra).

A questo punto non abbiamo più bisogno dei campi Cross join, pertanto possiamo rimuoverli.

  1. Nel riquadro Flusso seleziona Join 1, fai clic sull’icona del segno più e seleziona Aggiungi > Fase di pulizia.

  2. Seleziona i campi Cross Join-1 e Cross Join, quindi fai clic su Rimuovi campi.

  3. Fai doppio clic sull’etichetta Pulizia 3 e rinomina tale passaggio Matrice ora-letto.

Disponiamo ora dell’insieme di dati Matrice ora-letto contenente tutti i letti e tutte le ore e abbiamo terminato la prima parte della creazione del nostro insieme di dati.

Uso del letto da parte del paziente

La seconda parte consiste nell’introdurre l’uso del letto da parte del paziente. Per iniziare, ci collegheremo ai dati.

  1. Nel riquadro Connessioni fai clic sul pulsante Aggiungi connessione per aggiungere un’altra connessione dati.

  2. Scegli Microsoft Excel, quindi seleziona il file Patient Beds.xlsx e fai clic su Apri.

  3. Nel riquadro Flusso, seleziona Letti dei pazienti, quindi fai clic sulla fase di pulizia consigliata per aggiungerla al flusso.

Poiché il file Bed Hour Matrix è basato sull’ora, ma il file Patient Beds è basato sul tempo effettivo, dobbiamo ricavare le ore di inizio e di fine dal secondo. Inoltre, per l’ora di fine, vogliamo assicurarci di indicare che, se un paziente è ancora a letto alla fine della giornata (mezzanotte, ore 24:00), il letto è occupato anche se non è presente alcuna ora di fine nell’insieme di dati. Aggiungeremo un campo calcolato in questo nuovo passaggio.

  1. Nella barra degli strumenti, fai clic su Crea campo calcolato.

  2. Nomina il campo Ora di inizio. Per il calcolo, inserisci DATEPART('hour',[Start Time]).

  3. In questo modo viene estratta l’ora di inizio. Pertanto, "01/01/2018 09:35" diventa semplicemente "9".

  4. Crea un altro campo calcolato denominato Ora di fine. Per il calcolo, inserisci IFNULL(DATEPART('hour',[End Time]), 24).

  5. La porzione DATEPART richiede l’ora dell’orario di fine. La porzione IFNULL assegnerà le 24:00 (mezzanotte) come ora di fine a qualsiasi ora di fine mancante.

Adesso siamo pronti a creare un join tra l’uso del letto da parte del paziente e la Matrice ora-letto. Si tratta di un join leggermente più complesso rispetto a quello precedente. Un join interno restituirebbe solo i valori presenti in entrambi gli insiemi di dati. Poiché vogliamo essere sicuri di mantenere tutti gli slot ora-letto, indipendentemente dal fatto che un paziente fosse o meno a letto, dovremo creare un join a sinistra. Questo si tradurrà in molti valori NULL, ma si tratta della procedura appropriata.

Dobbiamo inoltre abbinare quando uno slot ora-letto è occupato da un paziente (o pazienti). Di conseguenza, oltre ad abbinare il letto in cui si trova il paziente, dobbiamo considerare il tempo. L’insieme di dati della Matrice ora-letto ha solo un campo Ora, mentre l’insieme di dati Letti dei pazienti dispone dell’Ora di inizio e dell’Ora di fine. Useremo una logica di base per determinare se a un paziente deve essere assegnato un dato slot ora-letto: si considera che un paziente occupi un letto se l’ora di inizio è inferiore o uguale allo (<=) slot ora-letto E l’ora di fine è maggiore o uguale allo (>=) slot ora-letto.

Sono pertanto necessarie tre clausole di join per abbinare in modo appropriato questi due insiemi di dati.

  1. Esegui il join del passaggio Pulizia 3 con il passaggio Matrice ora-letto.

  2. Nell’area Clausole di join applicate, il valore predefinito dovrebbe essere Ora = Ora di fine. Fai clic sulla clausola di join per cambiare l’operatore da "=" a "<=".

  3. Fai clic sul pulsante più nell’angolo in alto a destra dell’area Clausole di join applicate per aggiungere un’altra clausola di join. Impostala come Ora >= Ora di inizio

  4. Aggiungi una terza clausola di join per Letto = Letto d’ospedale.

  5. Nella sezione Tipo di join, fai clic sull’area non ombreggiata del grafico accanto a Matrice ora-letto per cambiare il tipo di join in un join a sinistra.

    Riquadro del profilo di join per Join 2 che mostra la configurazione corretta

Nota: se si trascina la Matrice ora-letto su Pulizia 3 e non il contrario, si possono ottenere i risultati desiderati usando un join a destra invece di un join a sinistra. L’ordine di trascinamento dei passaggi è importante per l’orientamento del join. Le clausole di join saranno anche in ordine inverso, pertanto assicurati di preservare la logica corretta di confronto delle ore.

I nostri dati adesso sono uniti, ma dovremmo ripulire alcuni artefatti dal join e assicurarci che i campi siano in ordine. Non abbiamo più bisogno dell’Ora di inizio e dell’Ora di fine. Anche Letto d’ospedale e Letto sono ridondanti. Infine, un valore di NULL nel campo Paziente significa che il letto non è occupato.

  1. Nel riquadro di flusso, aggiungi un passaggio di pulizia in modo da poter riordinare i dati congiunti.

  2. Tieni premuto il tasto CTRL e fai clic (Comando+clic su Mac) per selezionare i campi Ora di fine, Ora di inizio e Letto d’ospedale, quindi fai clic su Rimuovi campi nella barra degli strumenti.

  3. Nella scheda di profilo del campo Paziente, fai doppio clic sul valore NULL e digita Vuoto.

Ora abbiamo una struttura di dati con una riga per ogni ora-letto; se c’era un paziente a letto in quell’ora, abbiamo anche informazioni sul paziente. Tutto ciò che resta da fare è aggiungere un passaggio di output e generare l’insieme di dati stesso.

  1. Nel riquadro Flusso seleziona Pulizia 4, fai clic sull’icona del segno più e seleziona Aggiungi > Output.

  2. Nel riquadro Output, modifica il Tipo di output in .csv, quindi fai clic su Sfoglia.

  3. Immetti Matrice ora, letto e paziente come nome e scegli la posizione desiderata prima di fare clic su Accetta per salvare.

  4. Fai clic sul pulsante Esegui flusso nella parte inferiore del riquadro per generare l’output. Fai clic su Fine nella finestra di dialogo di stato per chiuderla.

Suggerimento: per ulteriori informazioni sugli output e sull’esecuzione di un flusso, consulta Salvare e condividere il lavoro(Il collegamento viene aperto in una nuova finestra).

Il flusso finale dovrebbe apparire così:

Riquadro di flusso con tutte le fasi completate

Analisi in Tableau Desktop

Per installare Tableau Desktop prima di continuare con questa esercitazione, è possibile scaricare la versione di prova gratuita.

Ora che disponiamo dell’insieme di dati nella struttura desiderata, possiamo eseguire un’analisi più approfondita rispetto ai dati originali.

  1. Apri Tableau Desktop. Nel riquadro Connessione, seleziona File di testo, naviga fino al file Bed Hour Patient Matrix.csv e fai clic su Apri.

  2. Nella scheda Origine Dati, i dati dovrebbero apparire nel canvas per impostazione predefinita. Fai clic su Foglio 1.

  3. Nel riquadro Dati trascina Ora sopra la linea che separa Misure e Dimensioni per renderla una dimensione distinta.

  4. Trascina Letto sullo spazio Righe e Ora sullo spazio Colonne.

  5. Trascina Paziente sullo spazio Colore.

Vista di base dei dati modellati in Tableau Desktop che mostra l’utilizzo dei letti per ora

La formattazione è facoltativa, tuttavia può aiutare a rendere la visuale più comprensibile.

  1. Fai clic sullo spazio Colore e seleziona Modifica colori.

  2. Nell’area a sinistra, seleziona Vuoto. Dall’elenco a discesa a destra, scegli la tavolozza dei colori Seattle Grays.

  3. Seleziona il quarto grigio più chiaro, quindi fai clic su OK.

  4. Fai nuovamente clic sullo spazio Colore, quindi fai clic sul menu a tendina Bordo. Scegli la seconda opzione di grigio all’estrema destra.

  5. Nella barra degli strumenti, dal menu a discesa delle dimensioni, cambia dall’opzione Standard a Adatta larghezza.

    Immagine della posizione del menu a discesa delle dimensioni nella barra degli strumenti

  6. Fai clic sul menu Formato e poi su Bordi.

  7. In Divisore di righe, fai clic sul menu a tendina Riquadro e scegli un grigio molto chiaro.

  8. Regola il dispositivo di scorrimento Livello sul secondo segno di graduazione.

  9. Ripeti l’operazione con il Divisore di colonna. Imposta il colore del Riquadro su grigio chiaro e il Livello sul secondo segno di graduazione.

    Frammento che mostra il riquadro del formato con le impostazioni corrette per i bordi

  10. Fai doppio clic sulla scheda del foglio in basso e rinominalo Uso del letto per ora.

Questa vista ci permette di vedere rapidamente quando un dato letto era occupato o libero.

Una vista che mostra l’utilizzo del letto per ora

Ma possiamo andare oltre e contare il numero di ore in cui ogni letto era vuoto.

  1. Fai clic sull’icona della nuova scheda foglio in basso per aprire un foglio pulito.

  2. Trascina Paziente su Righe.

  3. Trascina Ora su Colonne. Fai clic con il pulsante destro del mouse sulla pillola Ora per aprire il menu. Scegli Misura > Conta.

  4. Trascina un’altra copia del campo Paziente dal riquadro Dati allo spazio Colore.

  5. Fai clic con il pulsante destro del mouse sull’asse e seleziona Modifica asse. Cambia il titolo in Ore e chiudi la finestra di dialogo.

  6. Rinomina la scheda del foglio con Ore letto per paziente.

Una vista che mostra le ore letto per paziente

Questa vista ci permette di identificare il numero di ore in cui il letto è stato libero, operazione che non potevamo effettuare con l’insieme di dati originale. Quali altri grafici o dashboard puoi creare? Prova a crearli adesso che i tuoi dati hanno la struttura corretta.

Riepilogo e risorse

Per creare questa struttura di dati utilizzando Tableau Prep, abbiamo dovuto eseguire le seguenti azioni:

  1. Creare un insieme di dati per ogni aspetto che volevamo analizzare, in questo caso Letti e Ore.

  2. Creare un cross join tra questi insiemi di dati per ottenere un insieme di dati Matrice ora-letto con ogni possibile combinazione di letti e ore.

  3. Unire la Matrice ora-letto ai dati Letto del paziente, assicurandoci che il join mantenesse tutte le ore dello slot letto e che le clausole di join abbinassero opportunamente i dati del letto del paziente agli slot ora-letto.

Abbiamo usato i seguenti calcoli per creare i campi per il join. Il secondo e il terzo estraggono le informazioni sull’ora dai campi di data e ora originali.

  • Cross join = 1

    • Questo assegna semplicemente il valore 1 a ogni riga

  • Ora di inizio = DATEPART('hour',[Start Time])

    • In questo modo viene estratta l’ora di inizio. Pertanto, "01/01/2018 09:35" diventa semplicemente "9".

  • Ora di fine = IFNULL(DATEPART('hour',[End Time]), 24)

    • Potremmo usare DATEPART('hour',[End Time]), come abbiamo fatto per l’Ora di inizio. In questo modo viene estratta l’ora di fine. Pertanto, "01/01/2018 16:34" diventa semplicemente "4".

    • Ma vogliamo indicare che il letto del paziente ancora occupato (senza ora di fine) è in uso, non vuoto. Per fare ciò, assegneremo le 24:00 (mezzanotte) come ora di fine tramite la funzione IFNULL. Invece se il primo argomento DATEPART('hour',[End Time]) è null, il calcolo restituirà "24".

Nota: vuoi controllare il lavoro svolto? Scarica il file di flusso compresso di Tableau Prep (Hospital Beds.tflx(Il collegamento viene aperto in una nuova finestra)) e il file della cartella di lavoro compressa di Tableau Desktop (Hospital Beds.twbx(Il collegamento viene aperto in una nuova finestra)).

Risorse: hai bisogno di formazione ulteriore? Segui un corso di formazione in presenza(Il collegamento viene aperto in una nuova finestra). Ti interessano le funzionalità di cui abbiamo parlato? Scopri altri argomenti nella Guida online di Tableau Prep. Sei alla ricerca di risorse aggiuntive? Il post blog Impara a usare Tableau Prep con questa lista di risorse per l’apprendimento(Il collegamento viene aperto in una nuova finestra) (in inglese) fa al caso tuo.

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!