msberends / AMR

Functions to simplify and standardise antimicrobial resistance (AMR) data analysis and to work with microbial and antimicrobial properties by using evidence-based methods, as described in https://doi.org/10.18637/jss.v104.i03.

Home Page:https://msberends.github.io/AMR/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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"))

image

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"))
image

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"))
image

As intended, it now only returns TRUE for each phenotype.