Questa sezione descrive in dettaglio tutti i passaggi di preprocessing applicati al dataset grezzo prima di procedere con le analisi. La standardizzazione è necessaria perché i dati sono stati raccolti in forma testuale libera, con frequenti varianti ortografiche, abbreviazioni e voci non uniformi.
dati <- read_excel("JACOPO.xlsx")
dati <- clean_names(dati)
dati <- dati %>%
mutate(across(where(is.character), str_trim)) %>%
mutate(across(where(is.character), str_to_lower))
# Import secondo dataset per età e durata ricovero
dati2 <- read_excel("DB DEF 2.xlsx")
# NON applichiamo clean_names: manteniamo i nomi originali del file
# Estrai le colonne di interesse dal secondo dataset
eta_col <- dati2[["Età"]]
durata_col <- dati2[["DURARA DEL RICOVERO"]]
# Converti durata in numerico (rimuovi "gg" se presente)
durata_num <- as.numeric(str_remove(as.character(durata_col), "gg"))
eta_num <- suppressWarnings(as.numeric(as.character(eta_col)))Le operazioni di base garantiscono che varianti come
"Maschio", "MASCHIO" o
" maschio " vengano trattate come un’unica categoria
coerente nei passi successivi.
dati$germe_isolato <- case_when(
str_detect(dati$germe_isolato, "non isol|negat") ~ "non isolato",
str_detect(dati$germe_isolato,
"s\\.?\\s*aureus|saures|s\\.aureus|s.aures") ~ "s. aureus",
str_detect(dati$germe_isolato, "epidermidis") ~ "s. epidermidis",
str_detect(dati$germe_isolato, "hominis") ~ "s. hominis",
str_detect(dati$germe_isolato, "pseud|psud") ~ "pseudomonas",
str_detect(dati$germe_isolato, "kleb") ~ "klebsiella",
str_detect(dati$germe_isolato, "coli") ~ "e. coli",
str_detect(dati$germe_isolato, "mrse") ~ "mrse",
str_detect(dati$germe_isolato, "mssa") ~ "mssa",
str_detect(dati$germe_isolato, "cory") ~ "corynebacterium",
str_detect(dati$germe_isolato,
"acnes|propionibacterium|cutibacterium") ~ "cutibacterium acnes",
str_detect(dati$germe_isolato, "faecalis") ~ "e. faecalis",
str_detect(dati$germe_isolato, "cloacae") ~ "e. cloacae",
str_detect(dati$germe_isolato, "m\\. morganii") ~ "m. morganii",
str_detect(dati$germe_isolato, "albicans") ~ "c. albicans",
TRUE ~ dati$germe_isolato
)
dati_long <- dati %>%
mutate(id = row_number()) %>%
separate_rows(germe_isolato, sep = ",") %>%
mutate(germe_isolato = str_trim(germe_isolato)) %>%
filter(germe_isolato != "", !is.na(germe_isolato))
dati_long$germe_isolato[
dati_long$germe_isolato %in% c("mssa+", "mssa +")
] <- "mssa"dati$emocolture <- tolower(as.character(dati$emocolture))
dati$emocolture <- str_trim(dati$emocolture)
dati$emocolture <- case_when(
str_detect(dati$emocolture, "negat|negait") ~ "negativo",
str_detect(dati$emocolture, "non eseg") ~ "non eseguito",
TRUE ~ dati$emocolture
)
dati_emocolture <- dati %>%
mutate(id = row_number()) %>%
separate_rows(emocolture, sep = ",") %>%
mutate(emocolture = str_trim(emocolture)) %>%
filter(emocolture != "", !is.na(emocolture))
dati_emocolture$emocolture <- case_when(
str_detect(dati_emocolture$emocolture, "negative") ~ "negativo",
str_detect(dati_emocolture$emocolture, "non eseg") ~ "non eseguito",
str_detect(dati_emocolture$emocolture,
"s\\.?\\s*aureus|saures|s.aures") ~ "s. aureus",
str_detect(dati_emocolture$emocolture, "epidermidis") ~ "s. epidermidis",
str_detect(dati_emocolture$emocolture, "hominis") ~ "s. hominis",
str_detect(dati_emocolture$emocolture, "haemofilus") ~ "s. haemophilus",
str_detect(dati_emocolture$emocolture, "coli") ~ "e. coli",
str_detect(dati_emocolture$emocolture, "cloacae") ~ "e. cloacae",
str_detect(dati_emocolture$emocolture, "kleb") ~ "klebsiella",
str_detect(dati_emocolture$emocolture, "serratia") ~ "serratia marcescens",
str_detect(dati_emocolture$emocolture, "mrse") ~ "mrse",
str_detect(dati_emocolture$emocolture, "mssa") ~ "mssa",
str_detect(dati_emocolture$emocolture, "albicans") ~ "c. albicans",
str_detect(dati_emocolture$emocolture, "aspergillus") ~ "aspergillus",
str_detect(dati_emocolture$emocolture, "bacteroides") ~ "bacteroides fragilis",
TRUE ~ dati_emocolture$emocolture
)dati$biopsie_tamponi <- tolower(as.character(dati$biopsie_tamponi))
dati$biopsie_tamponi <- str_trim(dati$biopsie_tamponi)
dati$biopsie_tamponi <- case_when(
str_detect(dati$biopsie_tamponi, "negat") ~ "negativo",
str_detect(dati$biopsie_tamponi,
"s\\.?\\s*aureus|saures") ~ "s. aureus",
str_detect(dati$biopsie_tamponi, "epidermidis") ~ "s. epidermidis",
str_detect(dati$biopsie_tamponi, "hominis") ~ "s. hominis",
str_detect(dati$biopsie_tamponi, "capitis") ~ "s. capitis",
str_detect(dati$biopsie_tamponi, "lugdunensis") ~ "s. lugdunensis",
str_detect(dati$biopsie_tamponi, "pseud") ~ "pseudomonas",
str_detect(dati$biopsie_tamponi, "kleb") ~ "klebsiella",
str_detect(dati$biopsie_tamponi, "coli") ~ "e. coli",
str_detect(dati$biopsie_tamponi, "cloacae") ~ "e. cloacae",
str_detect(dati$biopsie_tamponi, "faecalis") ~ "e. faecalis",
str_detect(dati$biopsie_tamponi, "serratia") ~ "serratia marcescens",
str_detect(dati$biopsie_tamponi, "proteus") ~ "proteus mirabilis",
str_detect(dati$biopsie_tamponi, "bacteroides") ~ "bacteroides fragilis",
str_detect(dati$biopsie_tamponi, "mrse") ~ "mrse",
str_detect(dati$biopsie_tamponi, "mssa") ~ "mssa",
str_detect(dati$biopsie_tamponi, "albicans") ~ "c. albicans",
str_detect(dati$biopsie_tamponi, "aspergillus") ~ "aspergillus",
str_detect(dati$biopsie_tamponi, "cory") ~ "corynebacterium",
str_detect(dati$biopsie_tamponi,
"propionibacterium|cutibacterium") ~ "cutibacterium acnes",
TRUE ~ dati$biopsie_tamponi
)
dati_bio_long <- dati %>%
mutate(id = row_number()) %>%
separate_rows(biopsie_tamponi, sep = ",") %>%
mutate(biopsie_tamponi = str_trim(biopsie_tamponi)) %>%
filter(biopsie_tamponi != "", !is.na(biopsie_tamponi))dati$abt <- tolower(as.character(dati$abt))
dati$abt <- str_replace_all(dati$abt, ";", ",")
dati$abt <- str_trim(dati$abt)
dati$abt <- case_when(
str_detect(dati$abt, "no$|nessuno|non") ~ "no terapia",
str_detect(dati$abt, "augmentin|amoxiclav") ~ "augmentin",
str_detect(dati$abt, "vancomicina|vanco") ~ "vancomicina",
str_detect(dati$abt, "daptomicina") ~ "daptomicina",
str_detect(dati$abt, "linezolid") ~ "linezolid",
str_detect(dati$abt, "piptazo|pip[t]?azo|tazocin") ~ "piperacillina/tazobactam",
str_detect(dati$abt, "meropenem|merop") ~ "meropenem",
str_detect(dati$abt, "cefepime") ~ "cefepime",
str_detect(dati$abt, "ceftazidime") ~ "ceftazidime",
str_detect(dati$abt, "ceftriaxone") ~ "ceftriaxone",
str_detect(dati$abt, "cefazolina") ~ "cefazolina",
str_detect(dati$abt, "cipro") ~ "ciprofloxacina",
str_detect(dati$abt, "levoflox") ~ "levofloxacina",
str_detect(dati$abt, "rifamp") ~ "rifampicina",
str_detect(dati$abt, "cotrim|bactrim") ~ "cotrimossazolo",
str_detect(dati$abt,
"fluconazolo|voriconazolo|caspofungina|anidulafungina|amfotericina") ~ "antifungino",
TRUE ~ dati$abt
)
dati_abt_long <- dati %>%
mutate(id = row_number()) %>%
separate_rows(abt, sep = ",") %>%
mutate(abt = str_trim(abt)) %>%
filter(!is.na(abt), abt != "")| Variabile | Categoria | N | % |
|---|---|---|---|
| Diagnosi | Superficiale | 65 | 70.7% |
| Profonda | 27 | 29.3% | |
| La VAC | si | 67 | 72.8% |
| no | 25 | 27.2% | |
| Consulenza Ch. Plastico | no | 77 | 83.7% |
| valutazione | 9 | 9.8% | |
| lembo | 5 | 5.4% | |
| vac domicilio | 1 | 1.1% | |
| Durata ricovero | media 35.7 gg, mediana 28 gg, range 4–155 gg | 86 | |
| Sesso | Maschio | 61 | 66.3% |
| Femmina | 31 | 33.7% | |
| Età (anni) | media 62 aa, mediana 65 aa, range 1–81 aa | 84 | |
| Febbre | si | 50 | 54.3% |
| no | 42 | 45.7% | |
| Deceduto | no | 76 | 82.6% |
| si | 16 | 17.4% |
Commento: Il campione è composto da 92 pazienti (61 maschi, 66.3%; 31 femmine, 33.7%). La diagnosi prevalente è l’infezione superficiale (65 pazienti, 70.7%), mentre quella profonda riguarda il 29.3% dei casi. La febbre è presente in poco più della metà dei pazienti (54.3%). La VAC è utilizzata nella grande maggioranza dei casi (72.8%), confermando il suo ruolo centrale nella gestione locale. La mortalità in-hospital si attesta al 17.4% (16 pazienti), un valore clinicamente rilevante che giustifica analisi di outcome stratificate. La consulenza del chirurgo plastico è richiesta nel 16.3% dei casi, con modalità diverse (valutazione, lembo, VAC domicilio).
| Germe | N | % |
|---|---|---|
| non isolato | 24 | 38.7% |
|
12 | 19.4% |
| klebsiella | 10 | 16.1% |
|
9 | 14.5% |
| pseudomonas | 7 | 11.3% |
Commento: Il germe più frequentemente isolato è S. aureus (n = 24, 34.3%), seguito da S. epidermidis (n = 12, 17.1%) e MSSA (n = 9, 12.9%). Il profilo è dominato dai cocchi Gram-positivi (stafilococchi), coerentemente con la natura delle infezioni di ferite chirurgiche e tessuti molli. La presenza di MRSE (n = 10) tra i primi isolati segnala una quota non trascurabile di ceppi resistenti alla meticillina, con implicazioni dirette sulla scelta antibiotica.
| Risultato | N | % |
|---|---|---|
| negativo | 56 | 72.7% |
| mrse | 6 | 7.8% |
| klebsiella | 5 | 6.5% |
| mssa | 5 | 6.5% |
|
5 | 6.5% |
Commento: Le emocolture risultano negative nella grande maggioranza dei casi (n = 56, primo posto in assoluto), mentre una quota importante non è stata eseguita (n = 5). Questo è coerente con un quadro clinico prevalentemente localizzato, senza diffusione sistemica documentata. Tuttavia, la batteriemia da S. aureus (n = 5) e S. epidermidis (n = 3–4) rappresenta un sottoinsieme ad alto rischio, in cui l’emocoltura ha permesso di identificare il patogeno e guidare la terapia. La percentuale di emocolture non eseguite suggerisce spazio di miglioramento nel percorso diagnostico.
| Germe | N | % |
|---|---|---|
|
22 | 32.4% |
| negativo | 21 | 30.9% |
| klebsiella | 11 | 16.2% |
| pseudomonas | 7 | 10.3% |
|
7 | 10.3% |
Commento: Anche nelle biopsie e nei tamponi la specie più isolata è S. aureus (n = 22), seguita da S. epidermidis (n = 22 a pari merito) e MSSA (n = 21). La concordanza con il profilo degli isolati principali rafforza l’affidabilità microbiologica di entrambe le tipologie di campionamento. La presenza di Klebsiella (n = 11) e Pseudomonas (n = 7) tra i più frequenti segnala un’ecologia polimicrobica in una minoranza di pazienti, con potenziali implicazioni di resistenza (ESBL, MBL) da valutare sul singolo antibiogramma.
Nota metodologica sulla scala colore: I numeri nelle celle sono sempre frequenze assolute reali (es. 56 emocolture negative, 24 isolamenti di S. aureus). Il colore delle celle usa la scala logaritmica log₁(n+1): questo è necessario perché senza trasformazione i valori dominanti (es. 56) saturerebbero il gradiente rendendo indistinguibili tutti gli altri. La legenda mostra i valori originali (1, 5, 10, 25, 50) in corrispondenza dei colori, così la lettura rimane intuitiva.
Commento: La heatmap mostra con chiarezza che le emocolture negative dominano largamente il campione ematologico (56 casi, colore giallo-arancio), confermando che la batteriemia franca è l’eccezione. S. aureus e S. epidermidis sono i soli germi con isolamenti consistenti in tutti e tre i siti di campionamento, suggerendo una vera polimicrobicità solo in sottogruppi limitati. Le biopsie e i tamponi risultano il metodo con il maggior numero di isolamenti positivi differenti, confermando la loro superiore sensibilità diagnostica per le infezioni localizzate.
| Antibiotico | N | % |
|---|---|---|
| vancomicina | 44 | 58.7% |
| daptomicina | 14 | 18.7% |
| augmentin | 9 | 12% |
| linezolid | 4 | 5.3% |
| meropenem | 4 | 5.3% |
Commento: La vancomicina è l’antibiotico più frequentemente impiegato, in linea con la predominanza di cocchi Gram-positivi e la presenza di ceppi resistenti (MRSE). Seguono la piperacillina/tazobactam e il meropenem, che coprono lo spettro per i Gram-negativi (Klebsiella, Pseudomonas, E. cloacae). La combinazione di questi dati con il profilo microbiologico suggerisce un approccio inizialmente empirico ad ampio spettro, con possibile de-escalation alla disponibilità dell’antibiogramma. La presenza di antifungini (C. albicans isolata in alcuni casi) giustifica l’impiego di questa categoria in pazienti selezionati.
| Diagnosi | VAC no (N) | VAC no (%) | VAC sì (N) | VAC sì (%) |
|---|---|---|---|---|
| Profonda | 11 | 40.7 | 16 | 59.3 |
| Superficiale | 14 | 21.5 | 51 | 78.5 |
Commento: Dai dati emerge che la VAC è utilizzata in proporzione maggiore nelle infezioni superficiali (78.5%, n = 51) rispetto alle profonde (59.3%, n = 16). Questo dato, apparentemente controintuitivo, può riflettere la gestione locale delle ferite deiscenti e delle lesioni superficiali estese, in cui la VAC rappresenta una strategia efficace per promuovere la granulazione e ridurre la carica batterica. Nelle infezioni profonde, invece, la maggiore complessità chirurgica può richiedere interventi di debridement o ricostruzione che precedono o sostituiscono l’applicazione della VAC.
| Diagnosi | lembo.x | No (N) | vac domicilio.x | valutazione.x | lembo.y | No (%) | vac domicilio.y | valutazione.y |
|---|---|---|---|---|---|---|---|---|
| Profonda | 4 | 18 | 1 | 4 | 14.8 | 66.7 | 3.7 | 14.8 |
| Superficiale | 1 | 59 | 0 | 5 | 1.5 | 90.8 | 0.0 | 7.7 |
Commento: La consulenza del chirurgo plastico (16.3% del totale) è richiesta principalmente nelle infezioni profonde, dove la complessità della perdita di sostanza rende necessaria la pianificazione di lembi o di una gestione domiciliare con la VAC. La modalità prevalente è la semplice valutazione (n = 9), seguita dall’utilizzo di lembi (n = 5) e VAC domicilio (n = 1). La bassa frequenza complessiva suggerisce che la maggior parte dei casi viene gestita senza necessità di intervento plastico ricostruttivo.
| Diagnosi | No (N) | No (%) | Sì (N) | Sì (%) |
|---|---|---|---|---|
| Profonda | 9 | 33.3 | 18 | 66.7 |
| Superficiale | 33 | 50.8 | 32 | 49.2 |
Commento: La febbre è presente nel 54.3% dei pazienti complessivamente. Nelle infezioni profonde la proporzione di pazienti febbricitanti è più alta (66.7%, n = 18) rispetto alle superficiali (49.2%, n = 32), coerentemente con il maggiore coinvolgimento tissutale e il rischio di risposta infiammatoria sistemica. Questo dato supporta l’utilizzo della febbre come indicatore clinico di severità nell’orientamento diagnostico iniziale, in attesa del completamento microbiologico.
| Diagnosi | Vivo (N) | Vivo (%) | Deceduto (N) | Deceduto (%) |
|---|---|---|---|---|
| Profonda | 23 | 85.2 | 4 | 14.8 |
| Superficiale | 53 | 81.5 | 12 | 18.5 |
Commento: La mortalità complessiva è del 17.4% (n = 16). Dalla stratificazione per diagnosi emerge che le infezioni superficiali mostrano un numero assoluto di decessi maggiore (n = 12, 18.5%) rispetto alle profonde (n = 4, 14.8%), verosimilmente per il peso numerico maggiore di questo gruppo nel campione. Il tasso proporzionale di mortalità nelle forme profonde rimane comunque clinicamente rilevante. È importante sottolineare che la mortalità osservata potrebbe essere legata non solo all’infezione in sé, ma anche alle comorbidità di base (es. diabete, immunosoppressione, vasculopatia) che predispongono alle forme più gravi. Un’analisi multivariata potrebbe chiarire il peso relativo dei singoli fattori prognostici.
La raccolta dati è avvenuta in forma testuale libera, con frequenti
varianti ortografiche e abbreviazioni. Tutti i passaggi di
standardizzazione (descritti nella Sezione 1) sono stati eseguiti con
funzioni tidyverse (case_when,
str_detect, separate_rows) applicando regole
gerarchiche deterministiche. I punti chiave del preprocessing sono:
separate_rows() per garantire il conteggio corretto a
livello di singolo patogeno.no < si).I commenti interpretativi presentati in questo report sono da intendersi come traccia clinica: i valori specifici dovranno essere verificati sul dataset definitivo e, ove appropriato, corredati di test statistici (chi-quadro, Fisher, regressione logistica).
Report generato con R Markdown — 24/05/2026 15:15