diff --git a/DESCRIPTION b/DESCRIPTION index 87ccac8e0..91c23d4e1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: AMR -Version: 2.1.1.9195 +Version: 2.1.1.9196 Date: 2025-03-13 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) diff --git a/NEWS.md b/NEWS.md index 8b2c3b26f..ada161a18 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 2.1.1.9195 +# AMR 2.1.1.9196 *(this beta version will eventually become v3.0. We're happy to reach a new major milestone soon, which will be all about the new One Health support! Install this beta using [the instructions here](https://msberends.github.io/AMR/#latest-development-version).)* diff --git a/PythonPackage/AMR/AMR.egg-info/PKG-INFO b/PythonPackage/AMR/AMR.egg-info/PKG-INFO index 01ebf88cb..cbae728df 100644 --- a/PythonPackage/AMR/AMR.egg-info/PKG-INFO +++ b/PythonPackage/AMR/AMR.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.2 Name: AMR -Version: 2.1.1.9195 +Version: 2.1.1.9196 Summary: A Python wrapper for the AMR R package Home-page: https://github.com/msberends/AMR Author: Matthijs Berends diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9195.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9195.tar.gz deleted file mode 100644 index 92923be03..000000000 Binary files a/PythonPackage/AMR/dist/amr-2.1.1.9195.tar.gz and /dev/null differ diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9195-py3-none-any.whl b/PythonPackage/AMR/dist/amr-2.1.1.9196-py3-none-any.whl similarity index 86% rename from PythonPackage/AMR/dist/amr-2.1.1.9195-py3-none-any.whl rename to PythonPackage/AMR/dist/amr-2.1.1.9196-py3-none-any.whl index 93e122605..a2c282ec7 100644 Binary files a/PythonPackage/AMR/dist/amr-2.1.1.9195-py3-none-any.whl and b/PythonPackage/AMR/dist/amr-2.1.1.9196-py3-none-any.whl differ diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9196.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9196.tar.gz new file mode 100644 index 000000000..0ea4ebb76 Binary files /dev/null and b/PythonPackage/AMR/dist/amr-2.1.1.9196.tar.gz differ diff --git a/PythonPackage/AMR/setup.py b/PythonPackage/AMR/setup.py index afa4fb1fc..9eefd872c 100644 --- a/PythonPackage/AMR/setup.py +++ b/PythonPackage/AMR/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name='AMR', - version='2.1.1.9195', + version='2.1.1.9196', packages=find_packages(), install_requires=[ 'rpy2', diff --git a/R/eucast_rules.R b/R/eucast_rules.R index dc151b818..504d6cadd 100755 --- a/R/eucast_rules.R +++ b/R/eucast_rules.R @@ -304,12 +304,13 @@ eucast_rules <- function(x, "AMX", "CIP", "ERY", - "FOX1", + "FOX-S", "GEN", "MFX", - "NAL", - "NOR", - "PEN", + "NAL-S", + "NOR-S", + "OXA-S", + "PEN-S", "PIP", "TCY", "TIC", @@ -330,10 +331,6 @@ eucast_rules <- function(x, } cols_ab <- c(cols_ab, c(AMP = unname(cols_ab[names(cols_ab) == "AMX"]))) } - if (!"FOX" %in% names(cols_ab) && "FOX1" %in% names(cols_ab)) { - # cefoxitin column is missing, but cefoxitin screening is available - cols_ab <- c(cols_ab, c(FOX = unname(cols_ab[names(cols_ab) == "FOX1"]))) - } # data preparation ---- if (isTRUE(info) && NROW(x) > 10000) { @@ -631,6 +628,24 @@ eucast_rules <- function(x, eucast_rules_df[which(eucast_rules_df$reference.rule %like% "ampc"), "to_value"] <- as.character(ampc_cephalosporin_resistance) } + # sometimes, the screenings are missing but the names are actually available + # we only hints on remaining rows in `eucast_rules_df` + screening_abx <- c("FOX", "BTL", "CLI", "NAL", "NOR", "OXA", "PEF", "PEN", "TCY") + screening_abx <- screening_abx[screening_abx %in% unique(unlist(strsplit(EUCAST_RULES_DF$and_these_antibiotics[!is.na(EUCAST_RULES_DF$and_these_antibiotics)], ", *")))] + for (ab in screening_abx) { + ab_s <- paste0(ab, "-S") + if (ab %in% names(cols_ab) && !ab_s %in% names(cols_ab)) { + if (isTRUE(info)) { + message_("Using column '", cols_ab[names(cols_ab) == ab], + "' as ", ab_name(ab_s, language = NULL, tolower = TRUE), + " since a column '", ab_s, "' is missing but required for the chosen rules", + add_fn = font_red + ) + } + cols_ab <- c(cols_ab, setNames(unname(cols_ab[names(cols_ab) == ab]), ab_s)) + } + } + ## Go over all rules and apply them ---- for (i in seq_len(nrow(eucast_rules_df))) { rule_previous <- eucast_rules_df[max(1, i - 1), "reference.rule", drop = TRUE] diff --git a/R/sir.R b/R/sir.R index 875cc9053..72043ff2c 100755 --- a/R/sir.R +++ b/R/sir.R @@ -114,7 +114,7 @@ #' options(AMR_breakpoint_type = "animal") #' ``` #' -#' When applying veterinary breakpoints (by setting `host` or by setting `breakpoint_type = "animal"`), the [CLSI VET09 guideline](https://clsi.org/standards/products/veterinary-medicine/documents/vet09/) will be applied to cope with missing animal species-specific breakpoints. +####### TODO When applying veterinary breakpoints (by setting `host` or by setting `breakpoint_type = "animal"`), the [CLSI VET09 guideline](https://clsi.org/standards/products/veterinary-medicine/documents/vet09/) will be applied to cope with missing animal species-specific breakpoints. #' #' ### After Interpretation #' @@ -156,7 +156,7 @@ #' - **CLSI M39: Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data**, `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline)))`, *Clinical and Laboratory Standards Institute* (CLSI). . #' - **CLSI M100: Performance Standard for Antimicrobial Susceptibility Testing**, `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type != "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type != "animal")$guideline)))`, *Clinical and Laboratory Standards Institute* (CLSI). . #' - **CLSI VET01: Performance Standards for Antimicrobial Disk and Dilution Susceptibility Tests for Bacteria Isolated From Animals**, `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "animal")$guideline)))`, *Clinical and Laboratory Standards Institute* (CLSI). . -#' - **CLSI VET09: Understanding Susceptibility Test Data as a Component of Antimicrobial Stewardship in Veterinary Settings**, `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "animal")$guideline)))`, *Clinical and Laboratory Standards Institute* (CLSI). . +###### TODO - **CLSI VET09: Understanding Susceptibility Test Data as a Component of Antimicrobial Stewardship in Veterinary Settings**, `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "animal")$guideline)))`, *Clinical and Laboratory Standards Institute* (CLSI). . #' - **EUCAST Breakpoint tables for interpretation of MICs and zone diameters**, `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`, *European Committee on Antimicrobial Susceptibility Testing* (EUCAST). . #' - **WHONET** as a source for machine-reading the clinical breakpoints ([read more here](https://msberends.github.io/AMR/reference/clinical_breakpoints.html#imported-from-whonet)), 1989-`r max(as.integer(gsub("[^0-9]", "", AMR::clinical_breakpoints$guideline)))`, *WHO Collaborating Centre for Surveillance of Antimicrobial Resistance*. . #' @@ -1013,11 +1013,11 @@ as_sir_method <- function(method_short, message() # new line } # TODO add a switch to turn this off? In interactive sessions perhaps ask the user. Default should be On. - if (breakpoint_type == "animal" && message_not_thrown_before("as.sir", "host_missing_breakpoints")) { - if (guideline_coerced %like% "CLSI") { - message_("Please note that in the absence of specific veterinary breakpoints for certain animal hosts, the CLSI guideline VET09 will be applied where possible.\n\n") - } - } + # if (breakpoint_type == "animal" && message_not_thrown_before("as.sir", "host_missing_breakpoints")) { + # if (guideline_coerced %like% "CLSI") { + # message_("Please note that in the absence of specific veterinary breakpoints for certain animal hosts, the CLSI guideline VET09 will be applied where possible.\n\n") + # } + # } # get ab if (!is.null(current_df) && length(ab) == 1 && ab %in% colnames(current_df) && any(current_df[[ab]] %like% "[A-Z]", na.rm = TRUE)) { @@ -1348,6 +1348,11 @@ as_sir_method <- function(method_short, # TODO are operators considered?? # This seems to not work well: as.sir(as.mic(c(4, ">4", ">=4", 8, ">8", ">=8")), ab = "AMC", mo = "E. coli", breakpoint_type = "animal", host = "dogs", guideline = "CLSI 2024") + if (breakpoint_type == "animal") { + # 2025-03-13 for now, only strictly follow guideline for current host, no extrapolation + breakpoints_current <- breakpoints_current[which(breakpoints_current$host == host_current), , drop = FALSE] + } + ## fall-back methods for veterinary guidelines ---- ## TODO actually implement this well if (FALSE) { diff --git a/R/sysdata.rda b/R/sysdata.rda index bd0746ec0..04e7642ca 100755 Binary files a/R/sysdata.rda and b/R/sysdata.rda differ diff --git a/data-raw/clin_break.md5 b/data-raw/clin_break.md5 index 968a2aab1..eb202aa1f 100644 --- a/data-raw/clin_break.md5 +++ b/data-raw/clin_break.md5 @@ -1 +1 @@ -82e205c8e726381a75ce3040f238f776 +7bc41a5d92b1e98fbd6e2b8c077434b5 diff --git a/data-raw/clinical_breakpoints.dta b/data-raw/clinical_breakpoints.dta index abb6701d5..d63d07c04 100644 Binary files a/data-raw/clinical_breakpoints.dta and b/data-raw/clinical_breakpoints.dta differ diff --git a/data-raw/clinical_breakpoints.feather b/data-raw/clinical_breakpoints.feather index d89044a5e..eab5037ae 100644 Binary files a/data-raw/clinical_breakpoints.feather and b/data-raw/clinical_breakpoints.feather differ diff --git a/data-raw/clinical_breakpoints.parquet b/data-raw/clinical_breakpoints.parquet index 5419844d6..7c1446adb 100644 Binary files a/data-raw/clinical_breakpoints.parquet and b/data-raw/clinical_breakpoints.parquet differ diff --git a/data-raw/clinical_breakpoints.rds b/data-raw/clinical_breakpoints.rds index c8f9bde58..1412c8880 100644 Binary files a/data-raw/clinical_breakpoints.rds and b/data-raw/clinical_breakpoints.rds differ diff --git a/data-raw/clinical_breakpoints.sav b/data-raw/clinical_breakpoints.sav index 928e1c814..aa041a825 100644 Binary files a/data-raw/clinical_breakpoints.sav and b/data-raw/clinical_breakpoints.sav differ diff --git a/data-raw/clinical_breakpoints.txt b/data-raw/clinical_breakpoints.txt index e10ec375b..e93e9df83 100644 --- a/data-raw/clinical_breakpoints.txt +++ b/data-raw/clinical_breakpoints.txt @@ -5088,18 +5088,15 @@ "EUCAST 2021" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "TCY" "C. jejuni, C. coli" 2 2 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CMPYL_JEJN" 2 "TLT" "ECOFF" 4 4 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "CLI" "ECOFF" 16 16 FALSE FALSE -"EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE +"EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "ERY" "ECOFF" 2 2 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE -"EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE -"EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MTR" "ECOFF" 2 2 FALSE FALSE "EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE -"EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TCY" "ECOFF" 0.25 0.25 FALSE FALSE -"EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "VAN" "ECOFF" 2 2 FALSE FALSE "EUCAST 2021" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2021" "ECOFF" "ECOFF" "MIC" "B_CRNBC_SKZK" 2 "TOB" "ECOFF" 2 2 FALSE FALSE @@ -7265,18 +7262,15 @@ "EUCAST 2020" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "TCY" "Campylobacter jejuni and coli" 2 2 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CMPYL_JEJN" 2 "TLT" "ECOFF" 4 4 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "CLI" "ECOFF" 16 16 FALSE FALSE -"EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE +"EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "ERY" "ECOFF" 2 2 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE -"EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE -"EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MTR" "ECOFF" 2 2 FALSE FALSE "EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE -"EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TCY" "ECOFF" 0.25 0.25 FALSE FALSE -"EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "VAN" "ECOFF" 2 2 FALSE FALSE "EUCAST 2020" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2020" "ECOFF" "ECOFF" "MIC" "B_CRNBC_SKZK" 2 "TOB" "ECOFF" 2 2 FALSE FALSE @@ -9272,12 +9266,12 @@ "EUCAST 2019" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter jejuni and coli" 8 8 FALSE FALSE "EUCAST 2019" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" "15 mcg" 20 20 FALSE FALSE "EUCAST 2019" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" 4 4 FALSE FALSE -"EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE -"EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE -"EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE +"EUCAST 2019" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2019" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2019" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE -"EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE -"EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2019" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2019" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2019" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2019" "human" "human" "DISK" "B_CRYNB" 3 "CIP" "Corynebacterium spp." "5 mcg" 25 25 FALSE FALSE "EUCAST 2019" "human" "human" "MIC" "B_CRYNB" 3 "CIP" "Corynebacterium spp." 1 1 FALSE FALSE @@ -10104,12 +10098,12 @@ "EUCAST 2018" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter jejuni and coli" 8 8 FALSE FALSE "EUCAST 2018" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" "15 mcg" 20 20 FALSE FALSE "EUCAST 2018" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" 4 4 FALSE FALSE -"EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE -"EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE -"EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE +"EUCAST 2018" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2018" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2018" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE -"EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE -"EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2018" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2018" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2018" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2018" "human" "human" "DISK" "B_CRYNB" 3 "CIP" "Corynebacterium spp." "5 mcg" 25 25 FALSE FALSE "EUCAST 2018" "human" "human" "MIC" "B_CRYNB" 3 "CIP" "Corynebacterium spp." 1 1 FALSE FALSE @@ -10907,12 +10901,12 @@ "EUCAST 2017" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter jejuni and coli" 8 8 FALSE FALSE "EUCAST 2017" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" "15 mcg" 20 20 FALSE FALSE "EUCAST 2017" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" 4 4 FALSE FALSE -"EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE -"EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE -"EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE +"EUCAST 2017" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2017" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2017" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE -"EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE -"EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2017" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2017" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2017" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2017" "human" "human" "DISK" "B_CRYNB" 3 "CIP" "Corynebacterium spp." "5 mcg" 25 25 FALSE FALSE "EUCAST 2017" "human" "human" "MIC" "B_CRYNB" 3 "CIP" "Corynebacterium spp." 1 1 FALSE FALSE @@ -11697,12 +11691,12 @@ "EUCAST 2016" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter jejuni and coli" 8 8 FALSE FALSE "EUCAST 2016" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" "15 mcg" 20 20 FALSE FALSE "EUCAST 2016" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" 4 4 FALSE FALSE -"EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE -"EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE -"EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE +"EUCAST 2016" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2016" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2016" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE -"EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE -"EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2016" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2016" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2016" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2016" "human" "human" "DISK" "B_CRYNB" 3 "CIP" "Corynebacterium spp." "5 mcg" 25 25 FALSE FALSE "EUCAST 2016" "human" "human" "MIC" "B_CRYNB" 3 "CIP" "Corynebacterium spp." 1 1 FALSE FALSE @@ -12439,12 +12433,12 @@ "EUCAST 2015" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter jejuni and coli" 8 8 FALSE FALSE "EUCAST 2015" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" "15 mcg" 20 20 FALSE FALSE "EUCAST 2015" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" 4 4 FALSE FALSE -"EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE -"EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE -"EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE +"EUCAST 2015" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2015" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2015" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE -"EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE -"EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2015" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2015" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2015" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2015" "human" "human" "DISK" "B_CRYNB" 3 "CIP" "Corynebacterium spp." "5 mcg" 25 25 FALSE FALSE "EUCAST 2015" "human" "human" "MIC" "B_CRYNB" 3 "CIP" "Corynebacterium spp." 1 1 FALSE FALSE @@ -13157,12 +13151,12 @@ "EUCAST 2014" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter jejuni and coli" 8 8 FALSE FALSE "EUCAST 2014" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" "15 mcg" 20 20 FALSE FALSE "EUCAST 2014" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter jejuni and coli" 4 4 FALSE FALSE -"EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C. difficile" 4 FALSE FALSE -"EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C. difficile" 2 FALSE FALSE -"EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C. difficile" 4 FALSE FALSE +"EUCAST 2014" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2014" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2014" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C. difficile" 2 2 FALSE FALSE -"EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C. difficile" 0.004 FALSE FALSE -"EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C. difficile" 0.25 FALSE FALSE +"EUCAST 2014" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2014" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2014" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C. difficile" 2 2 FALSE FALSE "EUCAST 2014" "human" "human" "DISK" "B_CRYNB" 3 "CIP" "Corynebacterium spp." "5 mcg" 25 25 FALSE FALSE "EUCAST 2014" "human" "human" "MIC" "B_CRYNB" 3 "CIP" "Corynebacterium spp." 1 1 FALSE FALSE @@ -13871,12 +13865,12 @@ "EUCAST 2013" "human" "human" "MIC" "B_CMPYL_COLI" 2 "ERY" "Campylobacter" 8 8 FALSE FALSE "EUCAST 2013" "human" "human" "DISK" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter" "15 mcg" 20 20 FALSE FALSE "EUCAST 2013" "human" "human" "MIC" "B_CMPYL_JEJN" 2 "ERY" "Campylobacter" 4 4 FALSE FALSE -"EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "C.difficile" 4 FALSE FALSE -"EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "C.difficile" 2 FALSE FALSE -"EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "C.difficile" 4 FALSE FALSE +"EUCAST 2013" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2013" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2013" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "C.difficile" 2 2 FALSE FALSE -"EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "C.difficile" 0.004 FALSE FALSE -"EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "C.difficile" 0.25 FALSE FALSE +"EUCAST 2013" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2013" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2013" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "C.difficile" 2 2 FALSE FALSE "EUCAST 2013" "human" "human" "MIC" "B_ENTRC" 3 "AMC" "Enterococcus" 4 8 FALSE FALSE "EUCAST 2013" "human" "human" "DISK" "B_ENTRC" 3 "AMP" "Enterococcus" "2 mcg" 10 8 FALSE FALSE @@ -14559,12 +14553,12 @@ "EUCAST 2012" "human" "human" "MIC" "B_ANAER-POS" 6 "TIC" "Unknown" 8 16 FALSE FALSE "EUCAST 2012" "human" "human" "MIC" "B_ANAER-POS" 6 "TZP" "Unknown" 8 16 FALSE FALSE "EUCAST 2012" "human" "human" "MIC" "B_ANAER-POS" 6 "VAN" "Unknown" 2 2 FALSE FALSE -"EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "DAP" "Unknown" 4 FALSE FALSE -"EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "FUS" "Unknown" 2 FALSE FALSE -"EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MFX" "Unknown" 4 FALSE FALSE +"EUCAST 2012" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "DAP" "ECOFF" 4 4 FALSE FALSE +"EUCAST 2012" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "FUS" "ECOFF" 2 2 FALSE FALSE +"EUCAST 2012" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "MFX" "ECOFF" 4 4 FALSE FALSE "EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "MTR" "Unknown" 2 2 FALSE FALSE -"EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "RIF" "Unknown" 0.004 FALSE FALSE -"EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "TGC" "Unknown" 0.25 FALSE FALSE +"EUCAST 2012" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "RIF" "ECOFF" 0.004 0.004 FALSE FALSE +"EUCAST 2012" "ECOFF" "ECOFF" "MIC" "B_CRDDS_DFFC" 2 "TGC" "ECOFF" 0.25 0.25 FALSE FALSE "EUCAST 2012" "human" "human" "MIC" "B_CRDDS_DFFC" 2 "VAN" "Unknown" 2 2 FALSE FALSE "EUCAST 2012" "human" "human" "MIC" "B_ENTRC" 3 "AMC" "Unknown" 4 8 FALSE FALSE "EUCAST 2012" "human" "human" "DISK" "B_ENTRC" 3 "AMP" "Unknown" "2 mcg" 10 8 FALSE FALSE diff --git a/data-raw/clinical_breakpoints.xlsx b/data-raw/clinical_breakpoints.xlsx index 59667d6e4..456cdfaf1 100644 Binary files a/data-raw/clinical_breakpoints.xlsx and b/data-raw/clinical_breakpoints.xlsx differ diff --git a/data-raw/eucast_rules.tsv b/data-raw/eucast_rules.tsv index 506da21f1..280b9bd26 100644 --- a/data-raw/eucast_rules.tsv +++ b/data-raw/eucast_rules.tsv @@ -304,11 +304,11 @@ genus_species is Streptococcus pneumoniae ERY I AZM, CLR, RXT I Streptococcus pn genus_species is Streptococcus pneumoniae ERY R AZM, CLR, RXT R Streptococcus pneumoniae Breakpoints 12 genus_species is Streptococcus pneumoniae TCY-S S DOX, MNO S Streptococcus pneumoniae Breakpoints 12 genus_species is Streptococcus pneumoniae TCY-S R DOX, MNO R Streptococcus pneumoniae Breakpoints 12 -genus_species one_of Streptococcus milleri, Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis PEN-S S AMC, AMP, AMX, CPD, CPT, CRO, CTX, CXM, DOR, ETP, FEP, IMR, IPM, MEM, MEV, OXA, PEN, PIP, SAM, TZP S Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") -genus_species one_of Streptococcus milleri, Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis PEN-S R AMC, AMP, AMX, CPD, CPT, CRO, CTX, CXM, DOR, ETP, FEP, IMR, IPM, MEM, MEV, OXA, PEN, PIP, SAM, TZP R Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") -genus_species one_of Streptococcus milleri, Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis AMP S AMX, AMC, SAM, PIP, TZP S Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") -genus_species one_of Streptococcus milleri, Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis AMP I AMX, AMC, SAM, PIP, TZP I Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") -genus_species one_of Streptococcus milleri, Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis AMP R AMX, AMC, SAM, PIP, TZP R Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") +genus_species one_of Milleri Group Streptococcus (MGS), Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis PEN-S S AMC, AMP, AMX, CPD, CPT, CRO, CTX, CXM, DOR, ETP, FEP, IMR, IPM, MEM, MEV, OXA, PEN, PIP, SAM, TZP S Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") +genus_species one_of Milleri Group Streptococcus (MGS), Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis PEN-S R AMC, AMP, AMX, CPD, CPT, CRO, CTX, CXM, DOR, ETP, FEP, IMR, IPM, MEM, MEV, OXA, PEN, PIP, SAM, TZP R Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") +genus_species one_of Milleri Group Streptococcus (MGS), Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis AMP S AMX, AMC, SAM, PIP, TZP S Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") +genus_species one_of Milleri Group Streptococcus (MGS), Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis AMP I AMX, AMC, SAM, PIP, TZP I Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") +genus_species one_of Milleri Group Streptococcus (MGS), Streptococcus acidominimus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus anginosus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus constellatus, Streptococcus criceti, Streptococcus cristatus, Streptococcus downei, Streptococcus equinus, Streptococcus ferus, Streptococcus gordonii, Streptococcus intermedius, Streptococcus macacae, Streptococcus mitis, Streptococcus mutans, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus oralis, Streptococcus parasanguinis, Streptococcus ratti, Streptococcus salivarius, Streptococcus salivarius, Streptococcus thermophilus, Streptococcus sanguinis, Streptococcus sobrinus, Streptococcus suis, Streptococcus uberis, Streptococcus vestibularis AMP R AMX, AMC, SAM, PIP, TZP R Viridans group streptococci Breakpoints 12 paste("Streptococcus", mo_species(microorganisms.groups$mo[which(microorganisms.groups$mo_group == "B_STRPT_VIRI")]), collapse = ", ") genus_species is Haemophilus influenzae PEN-S S AMC, AMP, AMX, CFM, CPD, CPT, CRO, CTB, CTX, CXM, CZT, DOR, ETP, FEP, IMR, IPM, MEM, MEV, PEN, SAM, TZP S Haemophilus influenzae Breakpoints 12 x <- c(unique(clinical_breakpoints$ab[which(clinical_breakpoints$guideline == "EUCAST 2022" & clinical_breakpoints$mo == as.mo("H. influenzae"))]), "IMR", "MEV"); sort(x[x %in% betalactams()]) genus_species is Haemophilus influenzae PEN-S, BTL-S R, R AMP, AMX, PIP R Haemophilus influenzae Breakpoints 12 genus_species is Haemophilus influenzae AMC S SAM S Haemophilus influenzae Breakpoints 12 diff --git a/data-raw/gpt_training_text_v2.1.1.9195.txt b/data-raw/gpt_training_text_v2.1.1.9196.txt similarity index 99% rename from data-raw/gpt_training_text_v2.1.1.9195.txt rename to data-raw/gpt_training_text_v2.1.1.9196.txt index 539085f77..994b1420b 100644 --- a/data-raw/gpt_training_text_v2.1.1.9195.txt +++ b/data-raw/gpt_training_text_v2.1.1.9196.txt @@ -1,6 +1,6 @@ This knowledge base contains all context you must know about the AMR package for R. You are a GPT trained to be an assistant for the AMR package in R. You are an incredible R specialist, especially trained in this package and in the tidyverse. -First and foremost, you are trained on version 2.1.1.9195. Remember this whenever someone asks which AMR package version you’re at. +First and foremost, you are trained on version 2.1.1.9196. Remember this whenever someone asks which AMR package version you’re at. Below are the contents of the file, the file, and all the files (documentation) in the package. Every file content is split using 100 hypens. ---------------------------------------------------------------------------------------------------- @@ -3320,7 +3320,6 @@ For interpretations of minimum inhibitory concentration (MIC) values and disk di \item \strong{CLSI M39: Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data}, 2011-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m39/}. \item \strong{CLSI M100: Performance Standard for Antimicrobial Susceptibility Testing}, 2011-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m100/}. \item \strong{CLSI VET01: Performance Standards for Antimicrobial Disk and Dilution Susceptibility Tests for Bacteria Isolated From Animals}, 2019-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/veterinary-medicine/documents/vet01/}. -\item \strong{CLSI VET09: Understanding Susceptibility Test Data as a Component of Antimicrobial Stewardship in Veterinary Settings}, 2019-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/veterinary-medicine/documents/vet09/}. \item \strong{EUCAST Breakpoint tables for interpretation of MICs and zone diameters}, 2011-2024, \emph{European Committee on Antimicrobial Susceptibility Testing} (EUCAST). \url{https://www.eucast.org/clinical_breakpoints}. \item \strong{WHONET} as a source for machine-reading the clinical breakpoints (\href{https://msberends.github.io/AMR/reference/clinical_breakpoints.html#imported-from-whonet}{read more here}), 1989-2024, \emph{WHO Collaborating Centre for Surveillance of Antimicrobial Resistance}. \url{https://whonet.org/}. } @@ -3418,7 +3417,7 @@ These breakpoints are currently implemented: \itemize{ \item For \strong{clinical microbiology}: EUCAST 2011-2024 and CLSI 2011-2024; \item For \strong{veterinary microbiology}: EUCAST 2021-2024 and CLSI 2019-2024; -\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2020-2024 and CLSI 2022-2024. +\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2012-2024 and CLSI 2022-2024. } All breakpoints used for interpretation are available in our \link{clinical_breakpoints} data set. @@ -3483,8 +3482,6 @@ For veterinary guidelines, these might be the best options: \if{html}{\out{
}}\preformatted{ options(AMR_guideline = "CLSI") options(AMR_breakpoint_type = "animal") }\if{html}{\out{
}} - -When applying veterinary breakpoints (by setting \code{host} or by setting \code{breakpoint_type = "animal"}), the \href{https://clsi.org/standards/products/veterinary-medicine/documents/vet09/}{CLSI VET09 guideline} will be applied to cope with missing animal species-specific breakpoints. } \subsection{After Interpretation}{ @@ -3496,7 +3493,7 @@ To determine which isolates are multi-drug resistant, be sure to run \code{\link \subsection{Machine-Readable Clinical Breakpoints}{ -The repository of this package \href{https://github.com/msberends/AMR/blob/main/data-raw/clinical_breakpoints.txt}{contains a machine-readable version} of all guidelines. This is a CSV file consisting of 34 382 rows and 14 columns. This file is machine-readable, since it contains one row for every unique combination of the test method (MIC or disk diffusion), the antimicrobial drug and the microorganism. \strong{This allows for easy implementation of these rules in laboratory information systems (LIS)}. Note that it only contains interpretation guidelines for humans - interpretation guidelines from CLSI for animals were removed. +The repository of this package \href{https://github.com/msberends/AMR/blob/main/data-raw/clinical_breakpoints.txt}{contains a machine-readable version} of all guidelines. This is a CSV file consisting of 34 376 rows and 14 columns. This file is machine-readable, since it contains one row for every unique combination of the test method (MIC or disk diffusion), the antimicrobial drug and the microorganism. \strong{This allows for easy implementation of these rules in laboratory information systems (LIS)}. Note that it only contains interpretation guidelines for humans - interpretation guidelines from CLSI for animals were removed. } \subsection{Other}{ @@ -4138,7 +4135,7 @@ THE PART HEREAFTER CONTAINS CONTENTS FROM FILE 'man/clinical_breakpoints.Rd': \alias{clinical_breakpoints} \title{Data Set with Clinical Breakpoints for SIR Interpretation} \format{ -A \link[tibble:tibble]{tibble} with 34 382 observations and 14 variables: +A \link[tibble:tibble]{tibble} with 34 376 observations and 14 variables: \itemize{ \item \code{guideline}\cr Name of the guideline \item \code{type}\cr Breakpoint type, either "ECOFF", "animal", or "human" @@ -4166,7 +4163,7 @@ These breakpoints are currently implemented: \itemize{ \item For \strong{clinical microbiology}: EUCAST 2011-2024 and CLSI 2011-2024; \item For \strong{veterinary microbiology}: EUCAST 2021-2024 and CLSI 2019-2024; -\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2020-2024 and CLSI 2022-2024. +\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2012-2024 and CLSI 2022-2024. } Use \code{\link[=as.sir]{as.sir()}} to transform MICs or disks measurements to SIR values. diff --git a/data-raw/reproduction_of_clinical_breakpoints.R b/data-raw/reproduction_of_clinical_breakpoints.R index 1b3e2fb4b..b746efec3 100644 --- a/data-raw/reproduction_of_clinical_breakpoints.R +++ b/data-raw/reproduction_of_clinical_breakpoints.R @@ -343,6 +343,14 @@ breakpoints_new$mo[breakpoints_new$mo == "B_STPHY" & breakpoints_new$ab == "NIT" # WHONET sets the 2023 breakpoints for SAM to MIC of 16/32 for Enterobacterales, should be MIC 8/32 like AMC (see issue #123 on github.com/msberends/AMR) # UPDATE 2024-02-22: fixed now +# There's a problem with C. diff in EUCAST where breakpoint_R is missing - they are listed as normal human breakpoints but are ECOFF +rows <- which(breakpoints_new$guideline %like% "EUCAST" & breakpoints_new$mo == "B_CRDDS_DFFC" & is.na(breakpoints_new$breakpoint_R) & !is.na(breakpoints_new$breakpoint_S)) +breakpoints_new$type[rows] <- "ECOFF" +breakpoints_new$host[rows] <- "ECOFF" +breakpoints_new$ref_tbl[rows] <- "ECOFF" +breakpoints_new$breakpoint_R[rows] <- breakpoints_new$breakpoint_S[rows] +breakpoints_new <- distinct(breakpoints_new, .keep_all = TRUE) + # determine rank again now that some changes were made on taxonomic level (genus -> species) breakpoints_new <- breakpoints_new %>% mutate(rank_index = case_when( diff --git a/data/clinical_breakpoints.rda b/data/clinical_breakpoints.rda index 9cdd66e8a..4c78a5ab9 100644 Binary files a/data/clinical_breakpoints.rda and b/data/clinical_breakpoints.rda differ diff --git a/man/as.sir.Rd b/man/as.sir.Rd index 2c04d5fc0..8c51eb765 100644 --- a/man/as.sir.Rd +++ b/man/as.sir.Rd @@ -19,7 +19,6 @@ For interpretations of minimum inhibitory concentration (MIC) values and disk di \item \strong{CLSI M39: Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data}, 2011-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m39/}. \item \strong{CLSI M100: Performance Standard for Antimicrobial Susceptibility Testing}, 2011-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m100/}. \item \strong{CLSI VET01: Performance Standards for Antimicrobial Disk and Dilution Susceptibility Tests for Bacteria Isolated From Animals}, 2019-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/veterinary-medicine/documents/vet01/}. -\item \strong{CLSI VET09: Understanding Susceptibility Test Data as a Component of Antimicrobial Stewardship in Veterinary Settings}, 2019-2024, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/veterinary-medicine/documents/vet09/}. \item \strong{EUCAST Breakpoint tables for interpretation of MICs and zone diameters}, 2011-2024, \emph{European Committee on Antimicrobial Susceptibility Testing} (EUCAST). \url{https://www.eucast.org/clinical_breakpoints}. \item \strong{WHONET} as a source for machine-reading the clinical breakpoints (\href{https://msberends.github.io/AMR/reference/clinical_breakpoints.html#imported-from-whonet}{read more here}), 1989-2024, \emph{WHO Collaborating Centre for Surveillance of Antimicrobial Resistance}. \url{https://whonet.org/}. } @@ -117,7 +116,7 @@ These breakpoints are currently implemented: \itemize{ \item For \strong{clinical microbiology}: EUCAST 2011-2024 and CLSI 2011-2024; \item For \strong{veterinary microbiology}: EUCAST 2021-2024 and CLSI 2019-2024; -\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2020-2024 and CLSI 2022-2024. +\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2012-2024 and CLSI 2022-2024. } All breakpoints used for interpretation are available in our \link{clinical_breakpoints} data set. @@ -182,8 +181,6 @@ For veterinary guidelines, these might be the best options: \if{html}{\out{
}}\preformatted{ options(AMR_guideline = "CLSI") options(AMR_breakpoint_type = "animal") }\if{html}{\out{
}} - -When applying veterinary breakpoints (by setting \code{host} or by setting \code{breakpoint_type = "animal"}), the \href{https://clsi.org/standards/products/veterinary-medicine/documents/vet09/}{CLSI VET09 guideline} will be applied to cope with missing animal species-specific breakpoints. } \subsection{After Interpretation}{ @@ -195,7 +192,7 @@ To determine which isolates are multi-drug resistant, be sure to run \code{\link \subsection{Machine-Readable Clinical Breakpoints}{ -The repository of this package \href{https://github.com/msberends/AMR/blob/main/data-raw/clinical_breakpoints.txt}{contains a machine-readable version} of all guidelines. This is a CSV file consisting of 34 382 rows and 14 columns. This file is machine-readable, since it contains one row for every unique combination of the test method (MIC or disk diffusion), the antimicrobial drug and the microorganism. \strong{This allows for easy implementation of these rules in laboratory information systems (LIS)}. Note that it only contains interpretation guidelines for humans - interpretation guidelines from CLSI for animals were removed. +The repository of this package \href{https://github.com/msberends/AMR/blob/main/data-raw/clinical_breakpoints.txt}{contains a machine-readable version} of all guidelines. This is a CSV file consisting of 34 376 rows and 14 columns. This file is machine-readable, since it contains one row for every unique combination of the test method (MIC or disk diffusion), the antimicrobial drug and the microorganism. \strong{This allows for easy implementation of these rules in laboratory information systems (LIS)}. Note that it only contains interpretation guidelines for humans - interpretation guidelines from CLSI for animals were removed. } \subsection{Other}{ diff --git a/man/clinical_breakpoints.Rd b/man/clinical_breakpoints.Rd index 9b7ab9423..b894d5ed3 100644 --- a/man/clinical_breakpoints.Rd +++ b/man/clinical_breakpoints.Rd @@ -5,7 +5,7 @@ \alias{clinical_breakpoints} \title{Data Set with Clinical Breakpoints for SIR Interpretation} \format{ -A \link[tibble:tibble]{tibble} with 34 382 observations and 14 variables: +A \link[tibble:tibble]{tibble} with 34 376 observations and 14 variables: \itemize{ \item \code{guideline}\cr Name of the guideline \item \code{type}\cr Breakpoint type, either "ECOFF", "animal", or "human" @@ -33,7 +33,7 @@ These breakpoints are currently implemented: \itemize{ \item For \strong{clinical microbiology}: EUCAST 2011-2024 and CLSI 2011-2024; \item For \strong{veterinary microbiology}: EUCAST 2021-2024 and CLSI 2019-2024; -\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2020-2024 and CLSI 2022-2024. +\item For \strong{ECOFFs} (Epidemiological Cut-off Values): EUCAST 2012-2024 and CLSI 2022-2024. } Use \code{\link[=as.sir]{as.sir()}} to transform MICs or disks measurements to SIR values. diff --git a/tests/testthat/test-sir.R b/tests/testthat/test-sir.R index 039095196..e354f9aea 100644 --- a/tests/testthat/test-sir.R +++ b/tests/testthat/test-sir.R @@ -350,28 +350,29 @@ test_that("sir works", { ) out_vet <- as.sir(vet, host = vet$animal, guideline = "CLSI 2023") - # host column name instead of values + # give host column name instead of values expect_identical( out_vet, as.sir(vet, host = "animal", guideline = "CLSI 2023") ) # check outcomes - expect_identical(out_vet$PRA, as.sir(c("S", NA, "S", NA, NA, "R", NA, NA, NA, "I", NA))) + expect_identical(out_vet$PRA, as.sir(c("S", NA, "S", NA, NA, "R", NA, NA, NA, "R", NA))) expect_identical(out_vet$FLR, as.sir(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, "R", NA))) out_vet <- as.sir(vet, host = "animal", guideline = "EUCAST 2023") expect_identical(out_vet$PRA, rep(NA_sir_, 11)) - expect_identical(out_vet$FLR, as.sir(c("S", "S", NA, "S", "S", NA, "I", "R", NA, "R", "R"))) + # expect_identical(out_vet$FLR, as.sir(c("S", "S", NA, "S", "S", NA, "I", "R", NA, "R", "R"))) + expect_identical(out_vet$FLR, as.sir(c(NA, NA, NA, NA, NA, NA, NA, NA, NA, "R", NA))) sir_history <- sir_interpretation_history() expect_identical( sort(sir_history$host), c( - "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", - "cats", "cats", "cats", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "dogs", - "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", - "horse", "horse", "horse", "horse", "horse", "horse", "horse", "horse", "horse", "poultry", "poultry", "poultry", "poultry" + "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cats", "cattle", + "cattle", "cattle", "cattle", "cattle", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", + "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "dogs", "horse", "horse", "horse", "horse", "horse", "horse", "horse", "horse", + "horse", "horse", "poultry", "poultry", "poultry", "poultry", "poultry" ) )