Visite fuori tempo massimo
Il Piano nazionale di governo delle liste d’attesa fissa un tempo massimo per ogni classe di priorità della ricetta: una visita con priorità B va fatta entro 10 giorni, una D (differibile) entro 30, una P (programmata) entro 120. L’ufficio qualità di un’azienda sanitaria deve dire alla Regione, ogni mese, quale percentuale delle visite prenotate è finita oltre il tempo massimo.
Per ogni classe di priorità l’ufficio estrae dal sistema di prenotazione un vettore con i giorni di attesa di ciascuna visita. Una visita fatta a 30 giorni con un limite di 30 è in tempo; a 31 giorni è fuori tempo. La percentuale si dà con un decimale.
Il calcolo va ripetuto per ogni classe e ogni mese, cambiando solo il vettore e il limite: scrivi la funzione percentuale_fuori_tempo(attese, limite), che seleziona le attese fuori tempo con le parentesi quadre e restituisce la percentuale. La verifica chiama la tua funzione con i valori di ogni caso.
attesevettore di numeri — giorni di attesa di ciascuna visita prenotatalimitenumero — tempo massimo di attesa in giorni previsto per quella classe di priorità
percentuale numero — percentuale di visite fuori tempo massimo, 1 decimale
percentuale_fuori_tempo- Una visita è in tempo se l’attesa è minore o uguale al limite: a
limitegiorni esatti è ancora in tempo. È fuori tempo se l’attesa è strettamente maggiore del limite. - Dentro la funzione seleziona le attese fuori tempo con le parentesi quadre e un vettore logico:
attese[attese > limite]tiene solo quelle. length()di quel vettore dice quante sono;length(attese)dice quante sono le visite in tutto.- La percentuale è
100 * fuori tempo / tutte, arrotondata a 1 decimale conround(..., 1). - Il limite arriva come argomento: la funzione non deve usare variabili scritte fuori, e deve restituire il numero con
return().
| attese | limite | percentuale |
|---|---|---|
| 12352840 | 30 | 50.0 |
| 5810315 | 10 | 20.0 |
Soluzione
| caso | attese | limite | atteso | ottenuto |
|---|
percentuale_fuori_tempo <- function(attese, limite){
# le parentesi quadre con un vettore logico tengono solo le attese oltre il limite
fuori_tempo <- attese[attese > limite]
# quante sono fuori tempo, su quante visite in tutto
percentuale <- 100 * length(fuori_tempo) / length(attese)
return(round(percentuale, 1))
}
percentuale_fuori_tempo(c(12, 35, 28, 40), 30) # 50
percentuale_fuori_tempo(c(30, 30, 30), 30) # 0: 30 giorni esatti sono in tempo