Phenotype-based first isolate determination selects too many isolates
msberends opened this issue · comments
Phenotype-based first isolate determination selects too many isolates:
tibble(mo = as.mo("S. aureus"),
fluclox = as.sir(rep(c("S", "R"), 5)),
cefoxitin = fluclox,
date = Sys.Date() - c(-10:-1),
id = "A") %>%
mutate(phenotype = first_isolate(method = "phenotype", col_patient_id = "id"),
episode = first_isolate(method = "episode", col_patient_id = "id"),
patient = first_isolate(method = "patient", col_patient_id = "id"),
isolate = first_isolate(method = "isolate", col_patient_id = "id"))
Should only return TRUE
for each phenotype.
So, the problem here was that the phenotype-based algorithm checked the antimicrobial results in the previous row only.
In the new version of AMR
, antimicrobial results of all isolates found in a patient will be checked. This leads to this result (notice how the phenotype
column are now not all TRUE
anymore):
tibble(mo = as.mo("S. aureus"),
fluclox = as.sir(rep(c("S", "R"), 5)),
cefoxitin = fluclox,
date = Sys.Date() - c(-10:-1),
id = "A") %>%
mutate(phenotype = first_isolate(method = "phenotype", col_patient_id = "id"),
episode = first_isolate(method = "episode", col_patient_id = "id"),
patient = first_isolate(method = "patient", col_patient_id = "id"),
isolate = first_isolate(method = "isolate", col_patient_id = "id"))
When adding another antibiotic, it can clearly be seen that the algorithm now works as expected:
tibble(mo = as.mo("S. aureus"),
fluclox = as.sir(rep(c("S", "R"), 5)),
cefoxitin = fluclox,
genta = as.sir(c(rep("S", 5), rep("R", 5))),
date = Sys.Date() - c(-10:-1),
id = "A") %>%
mutate(phenotype = first_isolate(method = "phenotype", col_patient_id = "id"),
episode = first_isolate(method = "episode", col_patient_id = "id"),
patient = first_isolate(method = "patient", col_patient_id = "id"),
isolate = first_isolate(method = "isolate", col_patient_id = "id"))
As intended, it now only returns TRUE
for each phenotype.