From d2e8249edd7ec9d71a272cf8977f99c9d866a6ca Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Sat, 26 Oct 2019 21:56:41 +0200 Subject: [PATCH] (v0.8.0.9004) added MDR guideline by Magiorakos et al. --- DESCRIPTION | 4 +- NAMESPACE | 1 + NEWS.md | 10 +- R/eucast_rules.R | 17 +- R/guess_ab_col.R | 30 +- R/mdro.R | 419 +++++++++++++++++++++++-- data-raw/reproduction_of_antibiotics.R | 13 +- data/antibiotics.rda | Bin 34964 -> 35005 bytes docs/404.html | 2 +- docs/LICENSE-text.html | 2 +- docs/articles/index.html | 2 +- docs/authors.html | 2 +- docs/index.html | 2 +- docs/news/index.html | 54 ++-- docs/reference/eucast_rules.html | 19 +- docs/reference/index.html | 4 +- docs/reference/mdro.html | 39 ++- man/eucast_rules.Rd | 17 +- man/mdro.Rd | 38 ++- tests/testthat/test-mdro.R | 48 ++- 20 files changed, 605 insertions(+), 118 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a51216b4..7c7edde2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 0.8.0.9003 -Date: 2019-10-23 +Version: 0.8.0.9004 +Date: 2019-10-26 Title: Antimicrobial Resistance Analysis Authors@R: c( person(role = c("aut", "cre"), diff --git a/NAMESPACE b/NAMESPACE index eed558a9..ed00fbae 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -135,6 +135,7 @@ export(kurtosis) export(labels_rsi_count) export(left_join_microorganisms) export(like) +export(mdr_cmi2012) export(mdr_tb) export(mdro) export(mo_authors) diff --git a/NEWS.md b/NEWS.md index 3507d49a..66d7e65e 100755 --- a/NEWS.md +++ b/NEWS.md @@ -1,11 +1,17 @@ -# AMR 0.8.0.9003 -Last updated: 23-Oct-2019 +# AMR 0.8.0.9004 +Last updated: 26-Oct-2019 + +### New +* Support for a new MDRO guideline: Magiorakos AP, Srinivasan A *et al.* "Multidrug-resistant, extensively drug-resistant and pandrug-resistant bacteria: an international expert proposal for interim standard definitions for acquired resistance." Clinical Microbiology and Infection (2012). **This is now the new default guideline for the `mdro()` function.** ### Changes * When running `as.rsi()` over a data set, it will now print the guideline that will be used if it is not specified by the user * Fix for `eucast_rules()`: *Stenotrophomonas maltophilia* not interpreted "R" to ceftazidime anymore (following EUCAST v3.1) * Fix in taxonomic info for genera that are in multiple kingdoms, like *Proteus* * Fix for interpreting MIC values with `as.rsi()` where the input is `NA` +* Added "imi" as allowed abbreviation for Imipenem +* Fix for automatically determining columns with antibiotic results in `mdro()` and `eucast_rules()` +* Added ATC codes for ceftaroline, ceftobiprole and faropenem # AMR 0.8.0 diff --git a/R/eucast_rules.R b/R/eucast_rules.R index 0564d4a9..d94ddf49 100755 --- a/R/eucast_rules.R +++ b/R/eucast_rules.R @@ -47,6 +47,7 @@ EUCAST_VERSION_EXPERT_RULES <- "3.1, 2016" #' \strong{AMX}: amoxicillin (\href{https://www.whocc.no/atc_ddd_index/?code=J01CA04}{J01CA04}), #' \strong{AMC}: amoxicillin/clavulanic acid (\href{https://www.whocc.no/atc_ddd_index/?code=J01CR02}{J01CR02}), #' \strong{AMP}: ampicillin (\href{https://www.whocc.no/atc_ddd_index/?code=J01CA01}{J01CA01}), +#' \strong{SAM}: ampicillin/sulbactam (\href{https://www.whocc.no/atc_ddd_index/?code=J01CR01}{J01CR01}), #' \strong{AZM}: azithromycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FA10}{J01FA10}), #' \strong{AZL}: azlocillin (\href{https://www.whocc.no/atc_ddd_index/?code=J01CA09}{J01CA09}), #' \strong{ATM}: aztreonam (\href{https://www.whocc.no/atc_ddd_index/?code=J01DF01}{J01DF01}), @@ -55,17 +56,20 @@ EUCAST_VERSION_EXPERT_RULES <- "3.1, 2016" #' \strong{CZO}: cefazolin (\href{https://www.whocc.no/atc_ddd_index/?code=J01DB04}{J01DB04}), #' \strong{FEP}: cefepime (\href{https://www.whocc.no/atc_ddd_index/?code=J01DE01}{J01DE01}), #' \strong{CTX}: cefotaxime (\href{https://www.whocc.no/atc_ddd_index/?code=J01DD01}{J01DD01}), +#' \strong{CTT}: cefotetan (\href{https://www.whocc.no/atc_ddd_index/?code=J01DC05}{J01DC05}), #' \strong{FOX}: cefoxitin (\href{https://www.whocc.no/atc_ddd_index/?code=J01DC01}{J01DC01}), -#' \strong{CED}: cefradine (\href{https://www.whocc.no/atc_ddd_index/?code=J01DB09}{J01DB09}), +#' \strong{CPT}: ceftaroline (\href{https://www.whocc.no/atc_ddd_index/?code=J01DI02}{J01DI02}), #' \strong{CAZ}: ceftazidime (\href{https://www.whocc.no/atc_ddd_index/?code=J01DD02}{J01DD02}), #' \strong{CRO}: ceftriaxone (\href{https://www.whocc.no/atc_ddd_index/?code=J01DD04}{J01DD04}), #' \strong{CXM}: cefuroxime (\href{https://www.whocc.no/atc_ddd_index/?code=J01DC02}{J01DC02}), +#' \strong{CED}: cephradine (\href{https://www.whocc.no/atc_ddd_index/?code=J01DB09}{J01DB09}), #' \strong{CHL}: chloramphenicol (\href{https://www.whocc.no/atc_ddd_index/?code=J01BA01}{J01BA01}), #' \strong{CIP}: ciprofloxacin (\href{https://www.whocc.no/atc_ddd_index/?code=J01MA02}{J01MA02}), #' \strong{CLR}: clarithromycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FA09}{J01FA09}), #' \strong{CLI}: clindamycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FF01}{J01FF01}), #' \strong{COL}: colistin (\href{https://www.whocc.no/atc_ddd_index/?code=J01XB01}{J01XB01}), #' \strong{DAP}: daptomycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01XX09}{J01XX09}), +#' \strong{DOR}: doripenem (\href{https://www.whocc.no/atc_ddd_index/?code=J01DH04}{J01DH04}), #' \strong{DOX}: doxycycline (\href{https://www.whocc.no/atc_ddd_index/?code=J01AA02}{J01AA02}), #' \strong{ETP}: ertapenem (\href{https://www.whocc.no/atc_ddd_index/?code=J01DH03}{J01DH03}), #' \strong{ERY}: erythromycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FA01}{J01FA01}), @@ -75,6 +79,7 @@ EUCAST_VERSION_EXPERT_RULES <- "3.1, 2016" #' \strong{FUS}: fusidic acid (\href{https://www.whocc.no/atc_ddd_index/?code=J01XC01}{J01XC01}), #' \strong{GAT}: gatifloxacin (\href{https://www.whocc.no/atc_ddd_index/?code=J01MA16}{J01MA16}), #' \strong{GEN}: gentamicin (\href{https://www.whocc.no/atc_ddd_index/?code=J01GB03}{J01GB03}), +#' \strong{GEH}: gentamicin-high (no ATC code), #' \strong{IPM}: imipenem (\href{https://www.whocc.no/atc_ddd_index/?code=J01DH51}{J01DH51}), #' \strong{INH}: isoniazid (\href{https://www.whocc.no/atc_ddd_index/?code=J04AC01}{J04AC01}), #' \strong{KAN}: kanamycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01GB04}{J01GB04}), @@ -91,10 +96,10 @@ EUCAST_VERSION_EXPERT_RULES <- "3.1, 2016" #' \strong{NET}: netilmicin (\href{https://www.whocc.no/atc_ddd_index/?code=J01GB07}{J01GB07}), #' \strong{NIT}: nitrofurantoin (\href{https://www.whocc.no/atc_ddd_index/?code=J01XE01}{J01XE01}), #' \strong{NOR}: norfloxacin (\href{https://www.whocc.no/atc_ddd_index/?code=J01MA06}{J01MA06}), -#' \strong{NOV}: novobiocin (an ATCvet code: \href{https://www.whocc.no/atc_ddd_index/?code=QJ01XX95}{QJ01XX95}), +#' \strong{NOV}: novobiocin (\href{https://www.whocc.no/atc_ddd_index/?code=QJ01XX95}{QJ01XX95}), #' \strong{OFX}: ofloxacin (\href{https://www.whocc.no/atc_ddd_index/?code=J01MA01}{J01MA01}), #' \strong{OXA}: oxacillin (\href{https://www.whocc.no/atc_ddd_index/?code=J01CF04}{J01CF04}), -#' \strong{PEN}: penicillin G (\href{https://www.whocc.no/atc_ddd_index/?code=J01CE01}{J01CE01}), +#' \strong{PEN}: penicillin G (\href{https://www.whocc.no/atc_ddd_index/?code=J01RA01}{J01RA01}), #' \strong{PIP}: piperacillin (\href{https://www.whocc.no/atc_ddd_index/?code=J01CA12}{J01CA12}), #' \strong{TZP}: piperacillin/tazobactam (\href{https://www.whocc.no/atc_ddd_index/?code=J01CR05}{J01CR05}), #' \strong{PLB}: polymyxin B (\href{https://www.whocc.no/atc_ddd_index/?code=J01XB02}{J01XB02}), @@ -103,13 +108,15 @@ EUCAST_VERSION_EXPERT_RULES <- "3.1, 2016" #' \strong{QDA}: quinupristin/dalfopristin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FG02}{J01FG02}), #' \strong{RIB}: rifabutin (\href{https://www.whocc.no/atc_ddd_index/?code=J04AB04}{J04AB04}), #' \strong{RIF}: rifampicin (\href{https://www.whocc.no/atc_ddd_index/?code=J04AB02}{J04AB02}), -#' \strong{RIF}: rifampin (\href{https://www.whocc.no/atc_ddd_index/?code=J04AB02}{J04AB02}), #' \strong{RFP}: rifapentine (\href{https://www.whocc.no/atc_ddd_index/?code=J04AB05}{J04AB05}), -#' \strong{RXT}: roxithromycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FA06}{J01FA06}), +#' \strong{RXT}: roxithromicin (\href{https://www.whocc.no/atc_ddd_index/?code=J01FA06}{J01FA06}), #' \strong{SIS}: sisomicin (\href{https://www.whocc.no/atc_ddd_index/?code=J01GB08}{J01GB08}), +#' \strong{STH}: streptomycin-high (no ATC code), #' \strong{TEC}: teicoplanin (\href{https://www.whocc.no/atc_ddd_index/?code=J01XA02}{J01XA02}), +#' \strong{TLV}: telavancin (\href{https://www.whocc.no/atc_ddd_index/?code=J01XA03}{J01XA03}), #' \strong{TCY}: tetracycline (\href{https://www.whocc.no/atc_ddd_index/?code=J01AA07}{J01AA07}), #' \strong{TIC}: ticarcillin (\href{https://www.whocc.no/atc_ddd_index/?code=J01CA13}{J01CA13}), +#' \strong{TCC}: ticarcillin/clavulanic acid (\href{https://www.whocc.no/atc_ddd_index/?code=J01CR03}{J01CR03}), #' \strong{TGC}: tigecycline (\href{https://www.whocc.no/atc_ddd_index/?code=J01AA12}{J01AA12}), #' \strong{TOB}: tobramycin (\href{https://www.whocc.no/atc_ddd_index/?code=J01GB01}{J01GB01}), #' \strong{TMP}: trimethoprim (\href{https://www.whocc.no/atc_ddd_index/?code=J01EA01}{J01EA01}), diff --git a/R/guess_ab_col.R b/R/guess_ab_col.R index 971c707f..faedfbc6 100755 --- a/R/guess_ab_col.R +++ b/R/guess_ab_col.R @@ -166,26 +166,31 @@ get_column_abx <- function(x, # sort on name x <- x[order(names(x), x)] - duplicates <- x[base::duplicated(x)] - x <- x[!names(x) %in% names(duplicates)] + duplicates <- c(x[base::duplicated(x)], x[base::duplicated(names(x))]) + duplicates <- duplicates[unique(names(duplicates))] + x <- c(x[!names(x) %in% names(duplicates)], duplicates) + x <- x[order(names(x), x)] # succeeded with aut-guessing message(blue("OK.")) - - if (verbose == TRUE) { - for (i in seq_len(length(x))) { + + for (i in seq_len(length(x))) { + if (verbose == TRUE & !names(x[i]) %in% names(duplicates)) { message(blue(paste0("NOTE: Using column `", bold(x[i]), "` as input for `", names(x)[i], "` (", ab_name(names(x)[i], tolower = TRUE), ")."))) } - } else if (length(duplicates) > 0) { - for (i in seq_len(length(duplicates))) { - warning(red(paste0("Using column `", bold(duplicates[i]), "` as input for `", names(x[which(x == duplicates[i])]), - "` (", ab_name(names(x[names(which(x == duplicates))[i]]), tolower = TRUE), - "), although it was matched for multiple antibiotics or columns.")), call. = FALSE) + if (names(x[i]) %in% names(duplicates)) { + warning(red(paste0("Using column `", bold(x[i]), "` as input for `", names(x)[i], + "` (", ab_name(names(x)[i], tolower = TRUE), + "), although it was matched for multiple antibiotics or columns.")), + call. = FALSE, + immediate. = verbose) } } - + + if (!is.null(hard_dependencies)) { + hard_dependencies <- unique(hard_dependencies) if (!all(hard_dependencies %in% names(x))) { # missing a hard dependency will return NA and consequently the data will not be analysed missing <- hard_dependencies[!hard_dependencies %in% names(x)] @@ -194,6 +199,7 @@ get_column_abx <- function(x, } } if (!is.null(soft_dependencies)) { + soft_dependencies <- unique(soft_dependencies) if (!all(soft_dependencies %in% names(x))) { # missing a soft dependency may lower the reliability missing <- soft_dependencies[!soft_dependencies %in% names(x)] @@ -203,7 +209,7 @@ get_column_abx <- function(x, mutate(txt = paste0(bold(missing), " (", missing_names, ")")) %>% arrange(missing_names) %>% pull(txt) - message(blue("NOTE: Reliability might be improved if these antimicrobial results would be available too:", + message(blue("NOTE: Reliability will be improved if these antimicrobial results would be available too:", paste(missing_txt, collapse = ", "))) } } diff --git a/R/mdro.R b/R/mdro.R index 06aa2642..5ef60add 100755 --- a/R/mdro.R +++ b/R/mdro.R @@ -23,13 +23,14 @@ #' #' Determine which isolates are multidrug-resistant organisms (MDRO) according to (country-specific) guidelines. #' @param x table with antibiotic columns, like e.g. \code{AMX} and \code{AMC} -#' @param guideline a specific guideline to mention, see Details. EUCAST guidelines will be used when left empty, see Details. +#' @param guideline a specific guideline to follow. When left empty, the publication by Magiorakos \emph{et al.} (2012, Clinical Microbiology and Infection) will be followed, see Details. #' @param info print progress #' @inheritParams eucast_rules #' @param verbose print additional info: missing antibiotic columns per parameter #' @inheritSection eucast_rules Antibiotics #' @details Currently supported guidelines are (case-insensitive): #' \itemize{ +#' \item{\code{guideline = "CMI2012"}: Magiorakos AP, Srinivasan A \emph{et al.} "Multidrug-resistant, extensively drug-resistant and pandrug-resistant bacteria: an international expert proposal for interim standard definitions for acquired resistance." Clinical Microbiology and Infection (2012) (\href{https://www.clinicalmicrobiologyandinfection.com/article/S1198-743X(14)61632-3/fulltext}{link})} #' \item{\code{guideline = "EUCAST"}: The European international guideline - EUCAST Expert Rules Version 3.1 "Intrinsic Resistance and Exceptional Phenotypes Tables" (\href{http://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/Expert_rules_intrinsic_exceptional_V3.1.pdf}{link})} #' \item{\code{guideline = "TB"}: The international guideline for multi-drug resistant tuberculosis - World Health Organization "Companion handbook to the WHO guidelines for the programmatic management of drug-resistant tuberculosis" (\href{https://www.who.int/tb/publications/pmdt_companionhandbook/en/}{link})} #' \item{\code{guideline = "MRGN"}: The German national guideline - Mueller et al. (2015) Antimicrobial Resistance and Infection Control 4:7. DOI: 10.1186/s13756-015-0047-6} @@ -38,24 +39,26 @@ #' #' Please suggest your own (country-specific) guidelines by letting us know: \url{https://gitlab.com/msberends/AMR/issues/new}. #' @return \itemize{ -#' \item{TB guideline - function \code{mdr_tb()} or \code{mdro(..., guideline = "TB")}:\cr Ordered factor with levels \code{Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensive drug-resistant}} +#' \item{CMI 2012 paper - function \code{mdr_cmi2012()} or \code{mdro()}:\cr Ordered factor with levels \code{Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant (XDR) < Pandrug-resistant (PDR)}} +#' \item{TB guideline - function \code{mdr_tb()} or \code{mdro(..., guideline = "TB")}:\cr Ordered factor with levels \code{Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensively drug-resistant}} #' \item{German guideline - function \code{mrgn()} or \code{mdro(..., guideline = "MRGN")}:\cr Ordered factor with levels \code{Negative < 3MRGN < 4MRGN}} #' \item{Everything else:\cr Ordered factor with levels \code{Negative < Positive, unconfirmed < Positive}. The value \code{"Positive, unconfirmed"} means that, according to the guideline, it is not entirely sure if the isolate is multi-drug resistant and this should be confirmed with additional (e.g. molecular) tests} #' } #' @rdname mdro -#' @importFrom dplyr %>% -#' @importFrom crayon red blue bold +#' @importFrom dplyr %>% filter_all +#' @importFrom crayon blue bold italic #' @export #' @inheritSection AMR Read more on our website! #' @source -#' EUCAST Expert Rules Version 3.1 "Intrinsic Resistance and Exceptional Phenotypes Tables" (\href{http://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/Expert_rules_intrinsic_exceptional_V3.1.pdf}{link}) -#' -#' World Health Organization "Companion handbook to the WHO guidelines for the programmatic management of drug-resistant tuberculosis" (\href{https://www.who.int/tb/publications/pmdt_companionhandbook/en/}{link}) -#' -#' Rijksinstituut voor Volksgezondheid en Milieu "WIP-richtlijn BRMO (Bijzonder Resistente Micro-Organismen) [ZKH]" (\href{https://www.rivm.nl/Documenten_en_publicaties/Professioneel_Praktisch/Richtlijnen/Infectieziekten/WIP_Richtlijnen/WIP_Richtlijnen/Ziekenhuizen/WIP_richtlijn_BRMO_Bijzonder_Resistente_Micro_Organismen_ZKH}{link}) +#' Please see Details for the list of publications used for this function. #' @examples #' library(dplyr) -#' +#' +#' example_isolates %>% +#' mdro() %>% +#' freq() +#' +#' \donttest{ #' example_isolates %>% #' mutate(EUCAST = mdro(.), #' BRMO = brmo(.), @@ -65,6 +68,7 @@ #' rename(PIP = TZP) %>% # no piperacillin, so take piperacillin/tazobactam #' mrgn() %>% # check German guideline #' freq() # check frequencies +#' } mdro <- function(x, guideline = NULL, col_mo = NULL, @@ -86,7 +90,8 @@ mdro <- function(x, } if (is.null(guideline)) { - guideline <- "eucast" + # default to the paper by Magiorakos et al. (2012) + guideline <- "cmi2012" } if (tolower(guideline) == "nl") { guideline <- "BRMO" @@ -94,7 +99,7 @@ mdro <- function(x, if (tolower(guideline) == "de") { guideline <- "MRGN" } - if (!tolower(guideline) %in% c("brmo", "mrgn", "eucast", "tb")) { + if (!tolower(guideline) %in% c("brmo", "mrgn", "eucast", "tb", "cmi2012")) { stop("invalid guideline: ", guideline, call. = FALSE) } guideline <- list(code = tolower(guideline)) @@ -114,7 +119,13 @@ mdro <- function(x, stop("`col_mo` must be set.", call. = FALSE) } - if (guideline$code == "eucast") { + if (guideline$code == "cmi2012") { + guideline$name <- "Multidrug-resistant, extensively drug-resistant and pandrug-resistant bacteria: an international expert proposal for interim standard definitions for acquired resistance." + guideline$author <- "Magiorakos AP, Srinivasan A, Carey RB, ..., Vatopoulos A, Weber JT, Monnet DL" + guideline$version <- "N/A" + guideline$source <- "Magiorakos et al. (2012) Clinical Microbiology and Infection 18:3. DOI: 10.1111/j.1469-0691.2011.03570.x" + + } else if (guideline$code == "eucast") { guideline$name <- "EUCAST Expert Rules, \"Intrinsic Resistance and Exceptional Phenotypes Tables\"" guideline$author <- "EUCAST (European Committee on Antimicrobial Susceptibility Testing)" guideline$version <- "3.1" @@ -129,9 +140,10 @@ mdro <- function(x, # support per country: } else if (guideline$code == "mrgn") { guideline$name <- "Cross-border comparison of the Dutch and German guidelines on multidrug-resistant Gram-negative microorganisms" - guideline$author <- "J. M\u00fcller, A. Voss, R. K\u00f6ck, ..., W.V. Kern, C. Wendt, A.W. Friedrich" + guideline$author <- "M\u00fcller J, Voss A, K\u00f6ck R, ..., Kern WV, Wendt C, Friedrich AW" guideline$version <- "N/A" guideline$source <- "M\u00fcller et al. (2015) Antimicrobial Resistance and Infection Control 4:7. DOI: 10.1186/s13756-015-0047-6" + } else if (guideline$code == "brmo") { guideline$name <- "WIP-Richtlijn Bijzonder Resistente Micro-organismen (BRMO)" guideline$author <- "RIVM (Rijksinstituut voor de Volksgezondheid)" @@ -141,16 +153,126 @@ mdro <- function(x, stop("This guideline is currently unsupported: ", guideline$code, call. = FALSE) } - if (info == TRUE) { - cat("Determining multidrug-resistant organisms (MDRO), according to:\n", - "Guideline: ", red(guideline$name), "\n", - "Version: ", red(guideline$version), "\n", - "Author: ", red(guideline$author), "\n", - "Source: ", blue(guideline$source), "\n", - "\n", sep = "") - } - - if (guideline$code == "tb") { + if (guideline$code == "cmi2012") { + cols_ab <- get_column_abx(x = x, + soft_dependencies = c( + # table 1 (S aureus): + "GEN", + "RIF", + "CPT", + "OXA", + "CIP", + "MFX", + "SXT", + "FUS", + "VAN", + "TEC", + "TLV", + "TGC", + "CLI", + "DAP", + "ERY", + "LNZ", + "CHL", + "FOS", + "QDA", + "TCY", + "DOX", + "MNO", + # table 2 (Enterococcus) + "GEH", + "STH", + "IPM", + "MEM", + "DOR", + "CIP", + "LVX", + "MFX", + "VAN", + "TEC", + "TGC", + "DAP", + "LNZ", + "AMP", + "QDA", + "DOX", + "MNO", + # table 3 (Enterobacteriaceae) + "GEN", + "TOB", + "AMK", + "NET", + "CPT", + "TCC", + "TZP", + "ETP", + "IPM", + "MEM", + "DOR", + "CZO", + "CXM", + "CTX", + "CAZ", + "FEP", + "FOX", + "CTT", + "CIP", + "SXT", + "TGC", + "ATM", + "AMP", + "AMC", + "SAM", + "CHL", + "FOS", + "COL", + "TCY", + "DOX", + "MNO", + # table 4 (Pseudomonas) + "GEN", + "TOB", + "AMK", + "NET", + "IPM", + "MEM", + "DOR", + "CAZ", + "FEP", + "CIP", + "LVX", + "TCC", + "TZP", + "ATM", + "FOS", + "COL", + "PLB", + # table 5 (Acinetobacter) + "GEN", + "TOB", + "AMK", + "NET", + "IPM", + "MEM", + "DOR", + "CIP", + "LVX", + "TZP", + "TCC", + "CTX", + "CRO", + "CAZ", + "FEP", + "SXT", + "SAM", + "COL", + "PLB", + "TCY", + "DOX", + "MNO" + ), + verbose = verbose, ...) + } else if (guideline$code == "tb") { cols_ab <- get_column_abx(x = x, soft_dependencies = c("CAP", "ETH", @@ -188,11 +310,14 @@ mdro <- function(x, CLI <- cols_ab["CLI"] CLR <- cols_ab["CLR"] COL <- cols_ab["COL"] + CPT <- cols_ab["CPT"] CRO <- cols_ab["CRO"] + CTT <- cols_ab["CTT"] CTX <- cols_ab["CTX"] CXM <- cols_ab["CXM"] CZO <- cols_ab["CZO"] DAP <- cols_ab["DAP"] + DOR <- cols_ab["DOR"] DOX <- cols_ab["DOX"] ERY <- cols_ab["ERY"] ETP <- cols_ab["ETP"] @@ -201,6 +326,7 @@ mdro <- function(x, FOS <- cols_ab["FOS"] FOX <- cols_ab["FOX"] FUS <- cols_ab["FUS"] + GEH <- cols_ab["GEH"] GEN <- cols_ab["GEN"] IPM <- cols_ab["IPM"] KAN <- cols_ab["KAN"] @@ -219,6 +345,7 @@ mdro <- function(x, NOR <- cols_ab["NOR"] NOV <- cols_ab["NOV"] OFX <- cols_ab["OFX"] + OXA <- cols_ab["OXA"] PEN <- cols_ab["PEN"] PIP <- cols_ab["PIP"] PLB <- cols_ab["PLB"] @@ -227,12 +354,16 @@ mdro <- function(x, RID <- cols_ab["RID"] RIF <- cols_ab["RIF"] RXT <- cols_ab["RXT"] + SAM <- cols_ab["SAM"] SIS <- cols_ab["SIS"] + STH <- cols_ab["STH"] SXT <- cols_ab["SXT"] + TCC <- cols_ab["TCC"] TCY <- cols_ab["TCY"] TEC <- cols_ab["TEC"] TGC <- cols_ab["TGC"] TIC <- cols_ab["TIC"] + TLV <- cols_ab["TLV"] TMP <- cols_ab["TMP"] TOB <- cols_ab["TOB"] TZP <- cols_ab["TZP"] @@ -251,10 +382,22 @@ mdro <- function(x, if (guideline$code == "tb" & length(abx_tb) == 0) { stop("No antimycobacterials found in data set.", call. = FALSE) } + + if (info == TRUE) { + cat("\nDetermining multidrug-resistant organisms (MDRO), according to:\n", + bold("Guideline: "), italic(guideline$name), "\n", + bold("Version: "), guideline$version, "\n", + bold("Author: "), guideline$author, "\n", + bold("Source: "), guideline$source, "\n", + "\n", sep = "") + } ab_missing <- function(ab) { isTRUE(ab %in% c(NULL, NA)) | length(ab) == 0 } + ab_NA <- function(x) { + x[!is.na(x)] + } # antibiotic classes aminoglycosides <- c(TOB, GEN) @@ -280,16 +423,211 @@ mdro <- function(x, x[rows, "MDRO"] <<- to } } - + trans_tbl2 <- function(txt, rows, lst) { + # function specific for the CMI paper of 2012 (Magiorakos et al.) + lst_vector <- unlist(lst)[!is.na(unlist(lst))] + x$total_groups <- NA_integer_ + x$affected_groups <- NA_integer_ + x[rows, "total_groups"] <- length(lst) + # now the hard part - using two sapply()s for super fast results: + # [1] run through all `rows` with sapply() + # [2] within each row, run through all antibiotic groups with another sapply() + # [3] determine for each antibiotic group in that row if at least 1 drug is R of I + # [4] sum the number of TRUEs of this determination + x[rows, "affected_groups"] <- sapply(rows, + function(row, group_tbl = lst) { + sum(sapply(group_tbl, + function(group) { + any(x[row, group[!is.na(group)]] == "R") | + any(x[row, group[!is.na(group)]] == "I") + }), + na.rm = TRUE) + }) + # now set MDROs: + # MDR (=2): >=3 groups affected + x[which(x$row_number %in% rows & x$affected_groups >= 3), "MDRO"] <<- 2 + # XDR (=3): all but <=2 groups affected + x[which(x$row_number %in% rows & x$total_groups - x$affected_groups <= 2), "MDRO"] <<- 3 + # PDR (=4): all agents are R + x[filter_at(x[rows, ], + vars(lst_vector), + all_vars(. %in% c("R", "I")))$row_number, + "MDRO"] <<- 4 + } + x <- x %>% mutate_at(vars(col_mo), as.mo) %>% # join to microorganisms data set left_join_microorganisms(by = col_mo) %>% # add unconfirmed to where genus is available - mutate(MDRO = ifelse(!is.na(genus), 1, NA_integer_)) %>% + mutate(MDRO = ifelse(!is.na(genus), 1, NA_integer_), + row_number = 1:nrow(x)) %>% # transform to data.frame so subsetting is possible with x[y, z] (might not be the case with tibble/data.table/...) as.data.frame(stringsAsFactors = FALSE) + + if (guideline$code == "cmi2012") { + # CMI, 2012 --------------------------------------------------------------- + # Non-susceptible = R and I + # (see header 'Approaches to Creating Definitions for MDR, XDR and PDR' in paper) + # take amoxicillin if ampicillin is unavailable + if (is.na(AMP) & !is.na(AMX)) AMP <- AMX + # take ceftriaxone if cefotaxime is unavailable and vice versa + if (is.na(CRO) & !is.na(CTX)) CRO <- CTX + if (is.na(CTX) & !is.na(CRO)) CTX <- CRO + + # intrinsic resistant must not be considered for the determination of MDR, + # so let's just remove them, meticulously following the paper + x[which(x$genus == "Enterococcus" & x$species == "faecium"), ab_NA(IPM)] <- NA + x[which(x$genus == "Enterococcus" & x$species == "faecalis"), ab_NA(QDA)] <- NA + x[which((x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii")), ab_NA(c(GEN, TOB, NET))] <- NA + x[which(x$genus == "Escherichia" & x$species == "hermannii"), ab_NA(c(TCC, TZP))] <- NA + x[which((x$genus == "Citrobacter" & x$species == "freundii") + | (x$genus == "Enterobacter" & x$species == "aerogenes") + | (x$genus == "Enterobacter" & x$species == "cloacae") + | (x$genus == "Hafnia" & x$species == "alvei") + | (x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Serratia" & x$species == "marcescens")), ab_NA(CZO)] <- NA + x[which((x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Serratia" & x$species == "marcescens")), ab_NA(CXM)] <- NA + x[which((x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "mirabilis") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii")), ab_NA(TGC)] <- NA + x[which((x$genus == "Citrobacter" & x$species == "koseri") + | (x$genus == "Citrobacter" & x$species == "freundii") + | (x$genus == "Enterobacter" & x$species == "aerogenes") + | (x$genus == "Enterobacter" & x$species == "cloacae") + | (x$genus == "Escherichia" & x$species == "hermannii") + | (x$genus == "Hafnia" & x$species == "alvei") + | (x$genus == "Klebsiella") + | (x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii") + | (x$genus == "Serratia" & x$species == "marcescens")), ab_NA(AMP)] <- NA + x[which((x$genus == "Citrobacter" & x$species == "freundii") + | (x$genus == "Enterobacter" & x$species == "aerogenes") + | (x$genus == "Enterobacter" & x$species == "cloacae") + | (x$genus == "Hafnia" & x$species == "alvei") + | (x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii") + | (x$genus == "Serratia" & x$species == "marcescens")), ab_NA(AMC)] <- NA + x[which((x$genus == "Citrobacter" & x$species == "freundii") + | (x$genus == "Citrobacter" & x$species == "koseri") + | (x$genus == "Enterobacter" & x$species == "aerogenes") + | (x$genus == "Enterobacter" & x$species == "cloacae") + | (x$genus == "Hafnia" & x$species == "alvei") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Serratia" & x$species == "marcescens")), ab_NA(SAM)] <- NA + x[which((x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "mirabilis") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii") + | (x$genus == "Serratia" & x$species == "marcescens")), ab_NA(COL)] <- NA + x[which((x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "mirabilis") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii")), ab_NA(TCY)] <- NA + x[which((x$genus == "Morganella" & x$species == "morganii") + | (x$genus == "Proteus" & x$species == "penneri") + | (x$genus == "Proteus" & x$species == "vulgaris") + | (x$genus == "Providencia" & x$species == "rettgeri") + | (x$genus == "Providencia" & x$species == "stuartii")), ab_NA(c(DOX, MNO))] <- NA + + # now add the MDR levels to the data + trans_tbl(2, + which(x$genus == "Staphylococcus" & x$species == "aureus"), + c(OXA, FOX), + "any") + trans_tbl2(paste("Table 1 -", italic("S. aureus")), + which(x$genus == "Staphylococcus" & x$species == "aureus"), + list(GEN, + RIF, + CPT, + c(OXA, FOX), + c(CIP, MFX), + SXT, + FUS, + c(VAN, TEC, TLV), + TGC, + CLI, + DAP, + ERY, + LNZ, + CHL, + FOS, + QDA, + c(TCY, DOX, MNO))) + trans_tbl2(paste("Table 2 -", italic("Enterococcus"), "spp"), + which(x$genus == "Enterococcus"), + list(GEH, + STH, + c(IPM, MEM, DOR), + c(CIP, LVX, MFX), + c(VAN, TEC), + TGC, + DAP, + LNZ, + AMP, + QDA, + c(DOX, MNO))) + trans_tbl2(paste("Table 3 -", italic("Enterobacteriaceae")), + which(x$family == "Enterobacteriaceae"), + list(c(GEN, TOB, AMK, NET), + CPT, + c(TCC, TZP), + c(ETP, IPM, MEM, DOR), + CZO, + CXM, + c(CTX, CAZ, FEP), + c(FOX, CTT), + CIP, + SXT, + TGC, + ATM, + AMP, + c(AMC, SAM), + CHL, + FOS, + COL, + c(TCY, DOX, MNO))) + trans_tbl2(paste("Table 4 -", italic("Pseudomonas aeruginosa")), + which(x$genus == "Pseudomonas" & x$species == "aeruginosa"), + list(c(GEN, TOB, AMK, NET), + c(IPM, MEM, DOR), + c(CAZ, FEP), + c(CIP, LVX), + c(TCC, TZP), + ATM, + FOS, + c(COL, PLB))) + trans_tbl2(paste("Table 5 -", italic("Acinetobacter"), "spp"), + which(x$genus == "Acinetobacter"), + list(c(GEN, TOB, AMK, NET), + c(IPM, MEM, DOR), + c(CIP, LVX), + c(TZP, TCC), + c(CTX, CRO, CAZ, FEP), + SXT, + SAM, + c(COL, PLB), + c(TCY, DOX, MNO))) + } + if (guideline$code == "eucast") { # EUCAST ------------------------------------------------------------------ # Table 5 @@ -534,20 +872,32 @@ mdro <- function(x, second = ifelse(drug_is_R(CAP) | drug_is_R(KAN) | drug_is_R(AMK), TRUE, FALSE), xdr = ifelse(mdr & xdr & second, TRUE, FALSE)) %>% - mutate(mdr_tb = case_when(xdr ~ 5, + mutate(MDRO = case_when(xdr ~ 5, mdr ~ 4, poly ~ 3, mono ~ 2, TRUE ~ 1), # keep all real TB, make other species NA - mdr_tb = ifelse(x$fullname == "Mycobacterium tuberculosis", mdr_tb, NA_real_)) + MDRO = ifelse(x$fullname == "Mycobacterium tuberculosis", MDRO, NA_real_)) + } + + if (info == TRUE) { + cat(bold(paste0("=> Found ", sum(x$MDRO %in% c(2:5), na.rm = TRUE), " MDROs out of ", sum(!is.na(x$MDRO)), + " possible cases (", percentage(sum(x$MDRO %in% c(2:5), na.rm = TRUE) / sum(!is.na(x$MDRO))), ")"))) } # return results - if (guideline$code == "tb") { - factor(x = x$mdr_tb, + if (guideline$code == "cmi2012") { + factor(x = x$MDRO, + levels = 1:4, + labels = c("Negative", "Multi-drug-resistant (MDR)", + "Extensively drug-resistant (XDR)", "Pandrug-resistant (PDR)"), + ordered = TRUE) + } else if (guideline$code == "tb") { + factor(x = x$MDRO, levels = 1:5, - labels = c("Negative", "Mono-resistant", "Poly-resistant", "Multi-drug-resistant", "Extensive drug-resistant"), + labels = c("Negative", "Mono-resistant", "Poly-resistant", + "Multi-drug-resistant", "Extensively drug-resistant"), ordered = TRUE) } else if (guideline$code == "mrgn") { factor(x = x$MDRO, @@ -580,6 +930,13 @@ mdr_tb <- function(x, guideline = "TB", ...) { mdro(x = x, guideline = "TB", ...) } +#' @rdname mdro +#' @export +mdr_cmi2012 <- function(x, guideline = "CMI2012", ...) { + mdro(x = x, guideline = "CMI2012", ...) +} + + #' @rdname mdro #' @export eucast_exceptional_phenotypes <- function(x, guideline = "EUCAST", ...) { diff --git a/data-raw/reproduction_of_antibiotics.R b/data-raw/reproduction_of_antibiotics.R index 782ef4a9..a3ae34ac 100644 --- a/data-raw/reproduction_of_antibiotics.R +++ b/data-raw/reproduction_of_antibiotics.R @@ -305,9 +305,18 @@ antibiotics[which(antibiotics$ab == "FEP"), "abbreviations"][[1]] <- list(c(anti antibiotics[which(antibiotics$ab == "CTC"), "abbreviations"][[1]] <- list(c("xctl")) antibiotics[which(antibiotics$ab == "CTX"), "abbreviations"][[1]] <- list(c(antibiotics[which(antibiotics$ab == "CTX"), "abbreviations"][[1]], "xct")) # High level Gentamcin and Streptomycin -antibiotics[which(antibiotics$ab == "GEH"), "abbreviations"][[1]] <- list(c("gehl")) -antibiotics[which(antibiotics$ab == "STH"), "abbreviations"][[1]] <- list(c("sthl")) +antibiotics[which(antibiotics$ab == "GEH"), "abbreviations"][[1]] <- list(c("gehl", "gentamicin high", "genta high")) +antibiotics[which(antibiotics$ab == "STH"), "abbreviations"][[1]] <- list(c("sthl", "streptomycin high", "strepto high")) +# add imi to imipenem +antibiotics[which(antibiotics$ab == "IPM"), "abbreviations"][[1]] <- list(c("imip", "imi")) +## new ATC codes +# ceftaroline +antibiotics[which(antibiotics$ab == "CPT"), "atc"] <- "J01DI02" +# faropenem +antibiotics[which(antibiotics$ab == "FAR"), "atc"] <- "J01DI03" +# ceftobiprole +antibiotics[which(antibiotics$ab == "BPR"), "atc"] <- "J01DI01" antibiotics <- antibiotics %>% arrange(name) diff --git a/data/antibiotics.rda b/data/antibiotics.rda index a1d088c14643248c5bb15011a4335c75601d5cf1..898a512a459eed6fe56dcc616163e3becca47dd7 100755 GIT binary patch literal 35005 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

2f145BnEsi>{cW9j2nlbIy7mPN46D%N=Yc== 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 KI8c!CBorh-XoG(M literal 34964 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 T`+$n6|KjdQrwS4tAG&uyL~^vX diff --git a/docs/404.html b/docs/404.html index 2dc63781..7fd4293e 100644 --- a/docs/404.html +++ b/docs/404.html @@ -84,7 +84,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004 diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index eae10881..c1050c8f 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -84,7 +84,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004 diff --git a/docs/articles/index.html b/docs/articles/index.html index ed6229f1..3136c996 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -84,7 +84,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004 diff --git a/docs/authors.html b/docs/authors.html index 0dd667f8..26436eaf 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -84,7 +84,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004 diff --git a/docs/index.html b/docs/index.html index 044705a3..1cb0d83e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -45,7 +45,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004 diff --git a/docs/news/index.html b/docs/news/index.html index 0916eaff..35e7d21c 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -84,7 +84,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004 @@ -231,11 +231,19 @@ -

+

-AMR 0.8.0.9003 Unreleased +AMR 0.8.0.9004 Unreleased

-

Last updated: 23-Oct-2019

+

Last updated: 26-Oct-2019

+
+

+New

+
    +
  • Support for a new MDRO guideline: Magiorakos AP, Srinivasan A et al. “Multidrug-resistant, extensively drug-resistant and pandrug-resistant bacteria: an international expert proposal for interim standard definitions for acquired resistance.” Clinical Microbiology and Infection (2012). This is now the new default guideline for the mdro() function. +
  • +
+

Changes

@@ -246,6 +254,10 @@
  • Fix for interpreting MIC values with as.rsi() where the input is NA
  • +
  • Added “imi” as allowed abbreviation for Imipenem
  • +
  • Fix for automatically determining columns with antibiotic results in mdro() and eucast_rules() +
  • +
  • Added ATC codes for ceftaroline, ceftobiprole and faropenem
  • @@ -279,9 +291,9 @@ This is important, because a value like "testvalue" could never be
  • Renamed data set septic_patients to example_isolates

  • -
    +

    -New

    +New
    • Function bug_drug_combinations() to quickly get a data.frame with the results of all bug-drug combinations in a data set. The column containing microorganism codes is guessed automatically and its input is transformed with mo_shortname() at default:

      @@ -404,9 +416,9 @@ Since this is a major change, usage of the old also_single_tested w

      AMR 0.7.1 2019-06-23

      -
      +

      -New

      +New
      • Function rsi_df() to transform a data.frame to a data set containing only the microbial interpretation (S, I, R), the antibiotic, the percentage of S/I/R and the number of available isolates. This is a convenient combination of the existing functions count_df() and portion_df() to immediately show resistance percentages and number of available isolates:

        @@ -485,9 +497,9 @@ Since this is a major change, usage of the old also_single_tested w

        AMR 0.7.0 2019-06-03

        -
        +

        -New

        +New
        • Support for translation of disk diffusion and MIC values to RSI values (i.e. antimicrobial interpretations). Supported guidelines are EUCAST (2011 to 2019) and CLSI (2011 to 2019). Use as.rsi() on an MIC value (created with as.mic()), a disk diffusion value (created with the new as.disk()) or on a complete date set containing columns with MIC or disk diffusion values.
        • Function mo_name() as alias of mo_fullname() @@ -602,9 +614,9 @@ Please +

          -New

          +New
          • BREAKING: removed deprecated functions, parameters and references to ‘bactid’. Use as.mo() to identify an MO code.
          • @@ -829,9 +841,9 @@ Using as.mo(..., allow_uncertain = 3) AMR 0.5.0 2018-11-30 -
            +

            -New

            +New
            • Repository moved to GitLab: https://gitlab.com/msberends/AMR
            • @@ -956,9 +968,9 @@ Using as.mo(..., allow_uncertain = 3) AMR 0.4.0 2018-10-01 -
              +

              -New

              +New
              • The data set microorganisms now contains all microbial taxonomic data from ITIS (kingdoms Bacteria, Fungi and Protozoa), the Integrated Taxonomy Information System, available via https://itis.gov. The data set now contains more than 18,000 microorganisms with all known bacteria, fungi and protozoa according ITIS with genus, species, subspecies, family, order, class, phylum and subkingdom. The new data set microorganisms.old contains all previously known taxonomic names from those kingdoms.
              • New functions based on the existing function mo_property: @@ -1091,9 +1103,9 @@ Using as.mo(..., allow_uncertain = 3) AMR 0.3.0 2018-08-14 -
                +

                -New

                +New
                • BREAKING: rsi_df was removed in favour of new functions portion_R, portion_IR, portion_I, portion_SI and portion_S to selectively calculate resistance or susceptibility. These functions are 20 to 30 times faster than the old rsi function. The old function still works, but is deprecated. @@ -1228,9 +1240,9 @@ Using as.mo(..., allow_uncertain = 3) AMR 0.2.0 2018-05-03 -
                  +

                  -New

                  +New
                  • Full support for Windows, Linux and macOS
                  • Full support for old R versions, only R-3.0.0 (April 2013) or later is needed (needed packages may have other dependencies)
                  • @@ -1309,7 +1321,7 @@ Using as.mo(..., allow_uncertain = 3)

                    Contents

                  @@ -300,6 +300,7 @@ AMX: amoxicillin (J01CA04), AMC: amoxicillin/clavulanic acid (J01CR02), AMP: ampicillin (J01CA01), + SAM: ampicillin/sulbactam (J01CR01), AZM: azithromycin (J01FA10), AZL: azlocillin (J01CA09), ATM: aztreonam (J01DF01), @@ -308,17 +309,20 @@ CZO: cefazolin (J01DB04), FEP: cefepime (J01DE01), CTX: cefotaxime (J01DD01), + CTT: cefotetan (J01DC05), FOX: cefoxitin (J01DC01), - CED: cefradine (J01DB09), + CPT: ceftaroline (J01DI02), CAZ: ceftazidime (J01DD02), CRO: ceftriaxone (J01DD04), CXM: cefuroxime (J01DC02), + CED: cephradine (J01DB09), CHL: chloramphenicol (J01BA01), CIP: ciprofloxacin (J01MA02), CLR: clarithromycin (J01FA09), CLI: clindamycin (J01FF01), COL: colistin (J01XB01), DAP: daptomycin (J01XX09), + DOR: doripenem (J01DH04), DOX: doxycycline (J01AA02), ETP: ertapenem (J01DH03), ERY: erythromycin (J01FA01), @@ -328,6 +332,7 @@ FUS: fusidic acid (J01XC01), GAT: gatifloxacin (J01MA16), GEN: gentamicin (J01GB03), + GEH: gentamicin-high (no ATC code), IPM: imipenem (J01DH51), INH: isoniazid (J04AC01), KAN: kanamycin (J01GB04), @@ -344,10 +349,10 @@ NET: netilmicin (J01GB07), NIT: nitrofurantoin (J01XE01), NOR: norfloxacin (J01MA06), - NOV: novobiocin (an ATCvet code: QJ01XX95), + NOV: novobiocin (QJ01XX95), OFX: ofloxacin (J01MA01), OXA: oxacillin (J01CF04), - PEN: penicillin G (J01CE01), + PEN: penicillin G (J01RA01), PIP: piperacillin (J01CA12), TZP: piperacillin/tazobactam (J01CR05), PLB: polymyxin B (J01XB02), @@ -356,13 +361,15 @@ QDA: quinupristin/dalfopristin (J01FG02), RIB: rifabutin (J04AB04), RIF: rifampicin (J04AB02), - RIF: rifampin (J04AB02), RFP: rifapentine (J04AB05), - RXT: roxithromycin (J01FA06), + RXT: roxithromicin (J01FA06), SIS: sisomicin (J01GB08), + STH: streptomycin-high (no ATC code), TEC: teicoplanin (J01XA02), + TLV: telavancin (J01XA03), TCY: tetracycline (J01AA07), TIC: ticarcillin (J01CA13), + TCC: ticarcillin/clavulanic acid (J01CR03), TGC: tigecycline (J01AA12), TOB: tobramycin (J01GB01), TMP: trimethoprim (J01EA01), diff --git a/docs/reference/index.html b/docs/reference/index.html index 9aed8bd1..20843bad 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -84,7 +84,7 @@ AMR (for R) - 0.8.0.9003 + 0.8.0.9004
                  @@ -354,7 +354,7 @@ -

                  mdro() brmo() mrgn() mdr_tb() eucast_exceptional_phenotypes()

                  +

                  mdro() brmo() mrgn() mdr_tb() mdr_cmi2012() eucast_exceptional_phenotypes()

                  Determine multidrug-resistant organisms (MDRO)

                  diff --git a/docs/reference/mdro.html b/docs/reference/mdro.html index 7b839eef..fae93673 100644 --- a/docs/reference/mdro.html +++ b/docs/reference/mdro.html @@ -85,7 +85,7 @@ AMR (for R) - 0.8.0 + 0.8.0.9004
                @@ -246,6 +246,8 @@ mdr_tb(x, guideline = "TB", ...) +mdr_cmi2012(x, guideline = "CMI2012", ...) + eucast_exceptional_phenotypes(x, guideline = "EUCAST", ...)

                Arguments

                @@ -257,7 +259,7 @@ guideline -

                a specific guideline to mention, see Details. EUCAST guidelines will be used when left empty, see Details.

                +

                a specific guideline to follow. When left empty, the publication by Magiorakos et al. (2012, Clinical Microbiology and Infection) will be followed, see Details.

                col_mo @@ -279,14 +281,13 @@

                Source

                -

                EUCAST Expert Rules Version 3.1 "Intrinsic Resistance and Exceptional Phenotypes Tables" (link)

                -

                World Health Organization "Companion handbook to the WHO guidelines for the programmatic management of drug-resistant tuberculosis" (link)

                -

                Rijksinstituut voor Volksgezondheid en Milieu "WIP-richtlijn BRMO (Bijzonder Resistente Micro-Organismen) [ZKH]" (link)

                +

                Please see Details for the list of publications used for this function.

                Value

                  -
                • TB guideline - function mdr_tb() or mdro(..., guideline = "TB"):
                  Ordered factor with levels Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensive drug-resistant

                • +
                • CMI 2012 paper - function mdr_cmi2012() or mdro():
                  Ordered factor with levels Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant (XDR) < Pandrug-resistant (PDR)

                • +
                • TB guideline - function mdr_tb() or mdro(..., guideline = "TB"):
                  Ordered factor with levels Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensively drug-resistant

                • German guideline - function mrgn() or mdro(..., guideline = "MRGN"):
                  Ordered factor with levels Negative < 3MRGN < 4MRGN

                • Everything else:
                  Ordered factor with levels Negative < Positive, unconfirmed < Positive. The value "Positive, unconfirmed" means that, according to the guideline, it is not entirely sure if the isolate is multi-drug resistant and this should be confirmed with additional (e.g. molecular) tests

                @@ -294,6 +295,7 @@

                Details

                Currently supported guidelines are (case-insensitive):

                  +
                • guideline = "CMI2012": Magiorakos AP, Srinivasan A et al. "Multidrug-resistant, extensively drug-resistant and pandrug-resistant bacteria: an international expert proposal for interim standard definitions for acquired resistance." Clinical Microbiology and Infection (2012) (link)

                • guideline = "EUCAST": The European international guideline - EUCAST Expert Rules Version 3.1 "Intrinsic Resistance and Exceptional Phenotypes Tables" (link)

                • guideline = "TB": The international guideline for multi-drug resistant tuberculosis - World Health Organization "Companion handbook to the WHO guidelines for the programmatic management of drug-resistant tuberculosis" (link)

                • guideline = "MRGN": The German national guideline - Mueller et al. (2015) Antimicrobial Resistance and Infection Control 4:7. DOI: 10.1186/s13756-015-0047-6

                • @@ -311,6 +313,7 @@ AMX: amoxicillin (J01CA04), AMC: amoxicillin/clavulanic acid (J01CR02), AMP: ampicillin (J01CA01), + SAM: ampicillin/sulbactam (J01CR01), AZM: azithromycin (J01FA10), AZL: azlocillin (J01CA09), ATM: aztreonam (J01DF01), @@ -319,17 +322,20 @@ CZO: cefazolin (J01DB04), FEP: cefepime (J01DE01), CTX: cefotaxime (J01DD01), + CTT: cefotetan (J01DC05), FOX: cefoxitin (J01DC01), - CED: cefradine (J01DB09), + CPT: ceftaroline (J01DI02), CAZ: ceftazidime (J01DD02), CRO: ceftriaxone (J01DD04), CXM: cefuroxime (J01DC02), + CED: cephradine (J01DB09), CHL: chloramphenicol (J01BA01), CIP: ciprofloxacin (J01MA02), CLR: clarithromycin (J01FA09), CLI: clindamycin (J01FF01), COL: colistin (J01XB01), DAP: daptomycin (J01XX09), + DOR: doripenem (J01DH04), DOX: doxycycline (J01AA02), ETP: ertapenem (J01DH03), ERY: erythromycin (J01FA01), @@ -339,6 +345,7 @@ FUS: fusidic acid (J01XC01), GAT: gatifloxacin (J01MA16), GEN: gentamicin (J01GB03), + GEH: gentamicin-high (no ATC code), IPM: imipenem (J01DH51), INH: isoniazid (J04AC01), KAN: kanamycin (J01GB04), @@ -355,10 +362,10 @@ NET: netilmicin (J01GB07), NIT: nitrofurantoin (J01XE01), NOR: norfloxacin (J01MA06), - NOV: novobiocin (an ATCvet code: QJ01XX95), + NOV: novobiocin (QJ01XX95), OFX: ofloxacin (J01MA01), OXA: oxacillin (J01CF04), - PEN: penicillin G (J01CE01), + PEN: penicillin G (J01RA01), PIP: piperacillin (J01CA12), TZP: piperacillin/tazobactam (J01CR05), PLB: polymyxin B (J01XB02), @@ -367,13 +374,15 @@ QDA: quinupristin/dalfopristin (J01FG02), RIB: rifabutin (J04AB04), RIF: rifampicin (J04AB02), - RIF: rifampin (J04AB02), RFP: rifapentine (J04AB05), - RXT: roxithromycin (J01FA06), + RXT: roxithromicin (J01FA06), SIS: sisomicin (J01GB08), + STH: streptomycin-high (no ATC code), TEC: teicoplanin (J01XA02), + TLV: telavancin (J01XA03), TCY: tetracycline (J01AA07), TIC: ticarcillin (J01CA13), + TCC: ticarcillin/clavulanic acid (J01CR03), TGC: tigecycline (J01AA12), TOB: tobramycin (J01GB01), TMP: trimethoprim (J01EA01), @@ -388,6 +397,11 @@

                  Examples

                  library(dplyr)
                   
                  +example_isolates %>%
                  +  mdro() %>%
                  +  freq()
                  +
                  +# \donttest{
                   example_isolates %>%
                     mutate(EUCAST = mdro(.),
                            BRMO = brmo(.),
                  @@ -396,7 +410,8 @@
                   example_isolates %>%
                     rename(PIP = TZP) %>% # no piperacillin, so take piperacillin/tazobactam
                     mrgn() %>%            # check German guideline
                  -  freq()                # check frequencies
                  + freq() # check frequencies +# }