diff --git a/DESCRIPTION b/DESCRIPTION index b8a29a3a8..12a7fa0a8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: AMR -Version: 3.0.1.9108 +Version: 3.0.1.9109 Date: 2026-10-10 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) diff --git a/NEWS.md b/NEWS.md index 75ff41e55..1d1785064 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 3.0.1.9108 +# AMR 3.0.1.9109 Planned as v3.1.0, mid October 2026. @@ -44,11 +44,13 @@ Planned as v3.1.0, mid October 2026. * New `wisca_plot()` to assess the susceptibility and incidence distributions from the Monte Carlo simulations * A registry of all microbial IDs (MO codes) since v2.0.0 now prevents existing IDs from being reused or mixed up; IDs of earlier releases are translated to the current ID of the same taxon * `add_custom_antimicrobial_synonyms()` to add local names, such as trade names, to existing antimicrobials (#307) +* Sulbactam/durlobactam (`SUD1`) added to the `antimicrobials` data set (#308) ### Fixed * `as.mo()` returned *Salmonella bongori* or another subspecies for *Salmonella* serovars written with the species, such as "Salmonella enterica serovar Typhi" * EUCAST breakpoint rules for *Aerococcus* (v12 onwards) were never applied, and *Pasteurella* rules were partly filed under *Neisseria meningitidis* (#290) * Streptomycin breakpoints imported from WHONET were coded as streptoduocin (`STR`) instead of streptomycin (`STR1`) +* CLSI breakpoints for sulbactam/durlobactam were coded as sulfadimethoxine (`SUD`), and EUCAST 2011 breakpoints for roxithromycin were missing (#308) * Setting `options(AMR_guideline = "EUCAST 2012")` or any year-qualified value no longer causes errors or silent wrong behaviour in `interpretive_rules()`, `resistance()`, `susceptibility()`, `count_resistant()`, `count_susceptible()`, and SIR plotting/printing functions (#298) * `as.sir()` * On data frames: already-converted SIR columns no longer dropped on re-run (#278) diff --git a/R/sysdata.rda b/R/sysdata.rda index ad8137d3c..887ffd252 100755 Binary files a/R/sysdata.rda and b/R/sysdata.rda differ diff --git a/README.md b/README.md index 3f2622572..a048c90c3 100755 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Overview: - Generates **antibiograms** - WISCA for empiric coverage estimates, or traditional/syndromic for AMR surveillance - Provides the **full microbiological taxonomy** of ~103 000 distinct - species and extensive info of ~620 antimicrobial drugs + species and extensive info of ~630 antimicrobial drugs - Applies **CLSI 2011-2026** and **EUCAST 2011-2026** clinical and veterinary breakpoints, and ECOFFs, for MIC and disk zone interpretation diff --git a/data-raw/_reproduction_scripts/reproduction_of_antimicrobials.R b/data-raw/_reproduction_scripts/reproduction_of_antimicrobials.R index 640b2a220..fd321e2fa 100644 --- a/data-raw/_reproduction_scripts/reproduction_of_antimicrobials.R +++ b/data-raw/_reproduction_scripts/reproduction_of_antimicrobials.R @@ -956,7 +956,9 @@ antimicrobials <- antimicrobials |> mutate( ab = "FTA", name = "Cefepime/taniborbactam", - cid = NA_real_ + cid = NA_real_, + # the trade names of FPE do not apply + synonyms = list(NA_character_) ), antimicrobials |> filter(ab == "TBP") |> @@ -969,6 +971,26 @@ antimicrobials <- antimicrobials |> ) ) +# add Sulbactam/durlobactam (WHONET code SUD, which is sulfadimethoxine in this package, see #308) +antimicrobials <- antimicrobials |> + mutate(ab = as.character(ab)) |> + bind_rows( + antimicrobials |> + filter(ab == "SUL") |> + mutate(ab = as.character(ab)) |> + mutate( + ab = "SUD1", + name = "Sulbactam/durlobactam", + cid = NA_real_, + atc = list("J01CG30"), + abbreviations = list(NA_character_), + synonyms = list("Xacduro"), + iv_ddd = NA_real_, + iv_units = NA_character_, + loinc = list(NA_character_) + ) + ) + antimicrobials <- antimicrobials |> mutate(ab = as.character(ab)) |> bind_rows( diff --git a/data-raw/_reproduction_scripts/reproduction_of_clinical_breakpoints.R b/data-raw/_reproduction_scripts/reproduction_of_clinical_breakpoints.R index ea20c440b..71d7c8611 100644 --- a/data-raw/_reproduction_scripts/reproduction_of_clinical_breakpoints.R +++ b/data-raw/_reproduction_scripts/reproduction_of_clinical_breakpoints.R @@ -277,27 +277,31 @@ breakpoints |> ab = as.ab(WHONET_ABX_CODE, fast_mode = TRUE), ab_name = ab_name(ab) ) -# 2025-04-20: these codes are currently: CFC, ROX, FIX, and N/A. All have the right replacements in `antimicrobials`, so we can safely use as.ab() later on +# 2025-04-20: these codes are currently: CFC, ROX, FIX, and N/A. CFC and FIX have the right replacements in `antimicrobials`, so we can safely use as.ab() later on +# 2026-10-09: ROX is not: as.ab("ROX") returns cefuroxime, see `whonet_ab_recode` below # the NAs are for M. tuberculosis, they are empty breakpoints breakpoints <- breakpoints |> filter(!is.na(WHONET_ABX_CODE)) # a WHONET code can also exist in `antimicrobials` as the code of another -# agent, e.g. WHONET "STR" (streptomycin) is "STR" (streptoduocin) here, so +# agent, or not be resolved correctly by as.ab(), so these are recoded (#308): +# - "STR" is streptomycin, but "STR" is streptoduocin here (streptomycin is "STR1") +# - "SUD" is sulbactam/durlobactam, but "SUD" is sulfadimethoxine here (sulbactam/durlobactam is "SUD1") +# - "ROX" is an old WHONET code for roxithromycin, only used for EUCAST 2011 (with the +# same values as "RXT" in EUCAST 2012 and 2013), which as.ab() reads as cefuroxime +whonet_ab_recode <- c(STR = "STR1", SUD = "SUD1", ROX = "RXT") +recode_whonet_ab <- function(x) unname(ifelse(x %in% names(whonet_ab_recode), whonet_ab_recode[x], x)) # compare the code with WHONET's own name of the agent: whonet_code_check <- breakpoints |> distinct(WHONET_ABX_CODE) |> left_join(whonet_antibiotics_raw |> select(WHONET_ABX_CODE, ANTIBIOTIC), by = "WHONET_ABX_CODE") |> filter(!is.na(ANTIBIOTIC)) |> mutate( - by_code = as.ab(if_else(WHONET_ABX_CODE == "STR", "STR1", WHONET_ABX_CODE), info = FALSE), + by_code = as.ab(recode_whonet_ab(WHONET_ABX_CODE), info = FALSE), by_name = as.ab(ANTIBIOTIC, info = FALSE) ) |> filter(is.na(by_code) | is.na(by_name) | by_code != by_name) -# 2026-10-01: SUD (WHONET: sulbactam-durlobactam, CLSI 2024-2026) is -# sulfadimethoxine here, and sulbactam-durlobactam is not in `antimicrobials` -# yet; this must be resolved before these breakpoints can be used. This -# should otherwise be empty: +# this should be empty: whonet_code_check @@ -322,10 +326,8 @@ breakpoints_new <- breakpoints |> mo_rank(mo, keep_synonyms = TRUE) == "order" ~ 5, TRUE ~ 6 ), - # WHONET code "STR" is streptomycin, but in this package "STR" is - # streptoduocin (streptomycin is "STR1"), so as.ab("STR") would return - # the wrong agent - ab = as.ab(if_else(WHONET_ABX_CODE == "STR", "STR1", WHONET_ABX_CODE)), + # some WHONET codes are another agent here, see `whonet_ab_recode` above + ab = as.ab(recode_whonet_ab(WHONET_ABX_CODE)), ref_tbl = ifelse(type == "ECOFF" & is.na(REFERENCE_TABLE), "ECOFF", REFERENCE_TABLE), disk_dose = POTENCY, breakpoint_S = ifelse(type == "ECOFF" & is.na(S) & !is.na(ECV_ECOFF), ECV_ECOFF, S), diff --git a/data-raw/ab.md5 b/data-raw/ab.md5 index 94f4fdbd2..f8d97b918 100644 --- a/data-raw/ab.md5 +++ b/data-raw/ab.md5 @@ -1 +1 @@ -07d2d9bd1acc925b809a8ddff2ef977f +81db4bcdb760c4028a188437289e9f54 diff --git a/data-raw/clin_break.md5 b/data-raw/clin_break.md5 index 05758e38c..2835abcae 100644 --- a/data-raw/clin_break.md5 +++ b/data-raw/clin_break.md5 @@ -1 +1 @@ -5d78172bda4ef32f537513346673a026 +3affa43a0ac95513a6a956cd3afe035f diff --git a/data-raw/datasets/antimicrobials.dta b/data-raw/datasets/antimicrobials.dta index 6bfa6add1..4e81e7e09 100644 Binary files a/data-raw/datasets/antimicrobials.dta and b/data-raw/datasets/antimicrobials.dta differ diff --git a/data-raw/datasets/antimicrobials.feather b/data-raw/datasets/antimicrobials.feather index d92cdaab9..623bbef27 100644 Binary files a/data-raw/datasets/antimicrobials.feather and b/data-raw/datasets/antimicrobials.feather differ diff --git a/data-raw/datasets/antimicrobials.parquet b/data-raw/datasets/antimicrobials.parquet index a73362469..349390b64 100644 Binary files a/data-raw/datasets/antimicrobials.parquet and b/data-raw/datasets/antimicrobials.parquet differ diff --git a/data-raw/datasets/antimicrobials.rds b/data-raw/datasets/antimicrobials.rds index 9d9941f75..61a1ab3f0 100644 Binary files a/data-raw/datasets/antimicrobials.rds and b/data-raw/datasets/antimicrobials.rds differ diff --git a/data-raw/datasets/antimicrobials.sav b/data-raw/datasets/antimicrobials.sav index 0c187eba3..459f57291 100644 Binary files a/data-raw/datasets/antimicrobials.sav and b/data-raw/datasets/antimicrobials.sav differ diff --git a/data-raw/datasets/antimicrobials.txt b/data-raw/datasets/antimicrobials.txt index 345c24015..b228ec54d 100644 --- a/data-raw/datasets/antimicrobials.txt +++ b/data-raw/datasets/antimicrobials.txt @@ -409,6 +409,7 @@ "STH" "Streptomycin-high" "Aminoglycosides" "NA" "sthi,sthl,strepto high,streptomycin high" "NA" "18983-7,35841-6,6933-6,7049-0" "STI" "Streptomycin/isoniazid" "Antimycobacterials" "J04AM01,QJ04AM01" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "NA" "NA" "NA" "SUL" 130313 "Sulbactam" "Beta-lactamase inhibitors" "J01CG01,QJ01CG01" "Beta-lactam antibacterials, penicillins" "Beta-lactamase inhibitors" "sulbac" "betamaze,sulbactamum" 1 "g" "41716-2,41717-0,41718-8,41739-4" +"SUD1" "Sulbactam/durlobactam" "Beta-lactamase inhibitors" "J01CG30" "Beta-lactam antibacterials, penicillins" "Beta-lactamase inhibitors" "NA" "xacduro" "NA" "SBC" 20055036 "Sulbenicillin" "Penicillins,Beta-lactams" "J01CA16,QJ01CA16" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "sulben" "kedacillin,kedacillina,sulbenicilina,sulbenicilline,sulbenicillinum,sulpelin" 15 "g" "NA" "SUC" 5318 "Sulconazole" "Antifungals" "D01AC09,QD01AC09" "NA" "sulconazol,sulconazolum" "NA" "SUP" 6634 "Sulfachlorpyridazine" "Sulfonamides" "QJ01EQ12" "sulchl" "cluricol,cosulid,cosumix,durasulf,nefrosul,nsulfanilamide,prinzone,solfaclorpiridazina,sonilyn,sulfacloropiridazina,sulfaclorpiridazina,vetisulid" "NA" diff --git a/data-raw/datasets/antimicrobials.xlsx b/data-raw/datasets/antimicrobials.xlsx index 3854ae951..64df9f15d 100644 Binary files a/data-raw/datasets/antimicrobials.xlsx and b/data-raw/datasets/antimicrobials.xlsx differ diff --git a/data-raw/datasets/clinical_breakpoints.dta b/data-raw/datasets/clinical_breakpoints.dta index 2afb28c03..5898eff36 100644 Binary files a/data-raw/datasets/clinical_breakpoints.dta and b/data-raw/datasets/clinical_breakpoints.dta differ diff --git a/data-raw/datasets/clinical_breakpoints.feather b/data-raw/datasets/clinical_breakpoints.feather index db5734370..e5bb02203 100644 Binary files a/data-raw/datasets/clinical_breakpoints.feather and b/data-raw/datasets/clinical_breakpoints.feather differ diff --git a/data-raw/datasets/clinical_breakpoints.parquet b/data-raw/datasets/clinical_breakpoints.parquet index 50eae9772..60c604507 100644 Binary files a/data-raw/datasets/clinical_breakpoints.parquet and b/data-raw/datasets/clinical_breakpoints.parquet differ diff --git a/data-raw/datasets/clinical_breakpoints.rds b/data-raw/datasets/clinical_breakpoints.rds index 1443a93ba..2b0963681 100644 Binary files a/data-raw/datasets/clinical_breakpoints.rds and b/data-raw/datasets/clinical_breakpoints.rds differ diff --git a/data-raw/datasets/clinical_breakpoints.sav b/data-raw/datasets/clinical_breakpoints.sav index bb588507d..3de51d46f 100644 Binary files a/data-raw/datasets/clinical_breakpoints.sav and b/data-raw/datasets/clinical_breakpoints.sav differ diff --git a/data-raw/datasets/clinical_breakpoints.txt b/data-raw/datasets/clinical_breakpoints.txt index a353ddcfc..49d03d178 100644 --- a/data-raw/datasets/clinical_breakpoints.txt +++ b/data-raw/datasets/clinical_breakpoints.txt @@ -36044,6 +36044,7 @@ Some countries prefer to categorise wild-type isolates of E. coli and P. mirabil "EUCAST 2011" "human" "human" "DISK" "B_HMPHL_INFL" 2 "PHN" "Unknown" "10 mcg" 15 15 FALSE FALSE "EUCAST 2011" "human" "human" "DISK" "B_HMPHL_INFL" 2 "RIF" "Unknown" "5 mcg" 18 18 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_HMPHL_INFL" 2 "RIF" "Unknown" 0.5 0.5 FALSE FALSE +"EUCAST 2011" "human" "human" "MIC" "B_HMPHL_INFL" 2 "RXT" "Unknown" 1 16 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_HMPHL_INFL" 2 "SAM" "Unknown" 1 1 FALSE FALSE "EUCAST 2011" "human" "human" "DISK" "B_HMPHL_INFL" 2 "SXT" "Unknown" "1.25/23.75 mcg" 23 20 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_HMPHL_INFL" 2 "SXT" "Unknown" 0.5 1 FALSE FALSE @@ -36101,6 +36102,7 @@ Some countries prefer to categorise wild-type isolates of E. coli and P. mirabil "EUCAST 2011" "human" "human" "DISK" "B_HMPHL_PRNF" 2 "PHN" "Unknown" "10 mcg" 15 15 FALSE FALSE "EUCAST 2011" "human" "human" "DISK" "B_HMPHL_PRNF" 2 "RIF" "Unknown" "5 mcg" 18 18 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_HMPHL_PRNF" 2 "RIF" "Unknown" 0.5 0.5 FALSE FALSE +"EUCAST 2011" "human" "human" "MIC" "B_HMPHL_PRNF" 2 "RXT" "Unknown" 1 16 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_HMPHL_PRNF" 2 "SAM" "Unknown" 1 1 FALSE FALSE "EUCAST 2011" "human" "human" "DISK" "B_HMPHL_PRNF" 2 "SXT" "Unknown" "1.25/23.75 mcg" 23 20 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_HMPHL_PRNF" 2 "SXT" "Unknown" 0.5 1 FALSE FALSE @@ -36136,6 +36138,7 @@ Some countries prefer to categorise wild-type isolates of E. coli and P. mirabil "EUCAST 2011" "human" "human" "MIC" "B_MRXLL_CTRR" 2 "MNO" "Unknown" 1 2 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_MRXLL_CTRR" 2 "OFX" "Unknown" 0.5 0.5 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_MRXLL_CTRR" 2 "RIF" "Unknown" 0.5 0.5 FALSE FALSE +"EUCAST 2011" "human" "human" "MIC" "B_MRXLL_CTRR" 2 "RXT" "Unknown" 0.5 1 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_MRXLL_CTRR" 2 "SAM" "Unknown" 1 1 FALSE FALSE "EUCAST 2011" "human" "human" "DISK" "B_MRXLL_CTRR" 2 "SXT" "Unknown" "1.25/23.75 mcg" 18 15 FALSE FALSE "EUCAST 2011" "human" "human" "MIC" "B_MRXLL_CTRR" 2 "SXT" "Unknown" 0.5 1 FALSE FALSE @@ -36587,8 +36590,8 @@ Some countries prefer to categorise wild-type isolates of E. coli and P. mirabil "CLSI 2026" "human" "human" "MIC" "B_ACNTB" 3 "PIP" "Table 2B-2" 16 128 FALSE FALSE "CLSI 2026" "human" "human" "DISK" "B_ACNTB" 3 "SAM" "Table 2B-2" "10 mcg" 22 16 FALSE FALSE "CLSI 2026" "human" "human" "MIC" "B_ACNTB" 3 "SAM" "Table 2B-2" 8 32 FALSE FALSE -"CLSI 2026" "human" "human" "DISK" "B_ACNTB" 3 "SUD" "Table 2B-2" "10/10 mcg" 17 13 FALSE FALSE -"CLSI 2026" "human" "human" "MIC" "B_ACNTB" 3 "SUD" "Table 2B-2" 4 16 FALSE FALSE +"CLSI 2026" "human" "human" "DISK" "B_ACNTB" 3 "SUD1" "Table 2B-2" "10/10 mcg" 17 13 FALSE FALSE +"CLSI 2026" "human" "human" "MIC" "B_ACNTB" 3 "SUD1" "Table 2B-2" 4 16 FALSE FALSE "CLSI 2026" "human" "human" "DISK" "B_ACNTB" 3 "SXT" "Table 2B-2" "1.25/23.75 mcg" 16 10 FALSE FALSE "CLSI 2026" "human" "human" "MIC" "B_ACNTB" 3 "SXT" "Table 2B-2" 2 4 FALSE FALSE "CLSI 2026" "human" "human" "DISK" "B_ACNTB" 3 "TCC" "Table 2B-2" "75/10-15 mcg" 20 14 FALSE FALSE @@ -39213,8 +39216,8 @@ Some countries prefer to categorise wild-type isolates of E. coli and P. mirabil "CLSI 2025" "human" "human" "MIC" "B_ACNTB" 3 "PIP" "Table 2B-2" 16 128 FALSE FALSE "CLSI 2025" "human" "human" "DISK" "B_ACNTB" 3 "SAM" "Table 2B-2" "10 mcg" 22 16 FALSE FALSE "CLSI 2025" "human" "human" "MIC" "B_ACNTB" 3 "SAM" "Table 2B-2" 8 32 FALSE FALSE -"CLSI 2025" "human" "human" "DISK" "B_ACNTB" 3 "SUD" "Table 2B-2" "10/10 mcg" 17 13 FALSE FALSE -"CLSI 2025" "human" "human" "MIC" "B_ACNTB" 3 "SUD" "Table 2B-2" 4 16 FALSE FALSE +"CLSI 2025" "human" "human" "DISK" "B_ACNTB" 3 "SUD1" "Table 2B-2" "10/10 mcg" 17 13 FALSE FALSE +"CLSI 2025" "human" "human" "MIC" "B_ACNTB" 3 "SUD1" "Table 2B-2" 4 16 FALSE FALSE "CLSI 2025" "human" "human" "DISK" "B_ACNTB" 3 "SXT" "Table 2B-2" "1.25/23.75 mcg" 16 10 FALSE FALSE "CLSI 2025" "human" "human" "MIC" "B_ACNTB" 3 "SXT" "Table 2B-2" 2 4 FALSE FALSE "CLSI 2025" "human" "human" "DISK" "B_ACNTB" 3 "TCC" "Table 2B-2" "75/10-15 mcg" 20 14 FALSE FALSE @@ -41837,8 +41840,8 @@ Some countries prefer to categorise wild-type isolates of E. coli and P. mirabil "CLSI 2024" "human" "human" "MIC" "B_ACNTB" 3 "PIP" "Table 2B-2" 16 128 FALSE FALSE "CLSI 2024" "human" "human" "DISK" "B_ACNTB" 3 "SAM" "Table 2B-2" "10 mcg" 15 11 FALSE FALSE "CLSI 2024" "human" "human" "MIC" "B_ACNTB" 3 "SAM" "Table 2B-2" 8 32 FALSE FALSE -"CLSI 2024" "human" "human" "DISK" "B_ACNTB" 3 "SUD" "Table 2B-2" "10/10 mcg" 17 13 FALSE FALSE -"CLSI 2024" "human" "human" "MIC" "B_ACNTB" 3 "SUD" "Table 2B-2" 4 16 FALSE FALSE +"CLSI 2024" "human" "human" "DISK" "B_ACNTB" 3 "SUD1" "Table 2B-2" "10/10 mcg" 17 13 FALSE FALSE +"CLSI 2024" "human" "human" "MIC" "B_ACNTB" 3 "SUD1" "Table 2B-2" 4 16 FALSE FALSE "CLSI 2024" "human" "human" "DISK" "B_ACNTB" 3 "SXT" "Table 2B-2" "1.25/23.75 mcg" 16 10 FALSE FALSE "CLSI 2024" "human" "human" "MIC" "B_ACNTB" 3 "SXT" "Table 2B-2" 2 4 FALSE FALSE "CLSI 2024" "human" "human" "DISK" "B_ACNTB" 3 "TCC" "Table 2B-2" "75/10-15 mcg" 20 14 FALSE FALSE diff --git a/data-raw/datasets/clinical_breakpoints.xlsx b/data-raw/datasets/clinical_breakpoints.xlsx index e4308bc58..73f5151fb 100644 Binary files a/data-raw/datasets/clinical_breakpoints.xlsx and b/data-raw/datasets/clinical_breakpoints.xlsx differ diff --git a/data/antibiotics.rda b/data/antibiotics.rda index 1f1017eef..59293bf58 100644 Binary files a/data/antibiotics.rda and b/data/antibiotics.rda differ diff --git a/data/antimicrobials.rda b/data/antimicrobials.rda index 7b9d50ae9..35d6d6e39 100644 Binary files a/data/antimicrobials.rda and b/data/antimicrobials.rda differ diff --git a/data/clinical_breakpoints.rda b/data/clinical_breakpoints.rda index c997fe203..1464c3577 100644 Binary files a/data/clinical_breakpoints.rda and b/data/clinical_breakpoints.rda differ diff --git a/index.md b/index.md index 9bfe20d87..49be060f7 100644 --- a/index.md +++ b/index.md @@ -10,7 +10,7 @@ - Generates **antibiograms** - WISCA for empiric coverage estimates, or traditional/syndromic for AMR surveillance - Provides the **full microbiological taxonomy** of ~103 000 distinct - species and extensive info of ~620 antimicrobial drugs + species and extensive info of ~630 antimicrobial drugs - Applies **CLSI 2011-2026** and **EUCAST 2011-2026** clinical and veterinary breakpoints, and ECOFFs, for MIC and disk zone interpretation @@ -60,7 +60,7 @@ in scientific research. After installing this package, R knows [**~103 000 distinct microbial species**](./reference/microorganisms.html) (updated april 2026) and all -[**~620 antimicrobial and antiviral +[**~630 antimicrobial and antiviral drugs**](./reference/antimicrobials.html) by name and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED CT), and knows all about valid SIR and MIC values. The integral clinical breakpoint diff --git a/man/AMR.Rd b/man/AMR.Rd index d0aecfcd3..28121b949 100644 --- a/man/AMR.Rd +++ b/man/AMR.Rd @@ -12,7 +12,7 @@ The \code{AMR} package is a peer-reviewed, \href{https://amr-for-r.org/#copyrigh This work was published in the Journal of Statistical Software (Volume 104(3); \doi{10.18637/jss.v104.i03}) and formed the basis of two PhD theses (\doi{10.33612/diss.177417131} and \doi{10.33612/diss.192486375}). -After installing this package, R knows \href{https://amr-for-r.org/reference/microorganisms.html}{\strong{~103 000 distinct microbial species}} (updated april 2026) and all \href{https://amr-for-r.org/reference/antimicrobials.html}{\strong{~620 antimicrobial and antiviral drugs}} by name and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED CT), and knows all about valid SIR and MIC values. The integral clinical breakpoint guidelines from CLSI 2011-2026 and EUCAST 2011-2026 are included, even with epidemiological cut-off (ECOFF) values. It supports and can read any data format, including WHONET data. This package works on Windows, macOS and Linux with all versions of R since R-3.0 (April 2013). \strong{It was designed to work in any setting, including those with very limited resources}. It was created for both routine data analysis and academic research at the Faculty of Medical Sciences of the \href{https://www.rug.nl}{University of Groningen} and the \href{https://www.umcg.nl}{University Medical Center Groningen}. +After installing this package, R knows \href{https://amr-for-r.org/reference/microorganisms.html}{\strong{~103 000 distinct microbial species}} (updated april 2026) and all \href{https://amr-for-r.org/reference/antimicrobials.html}{\strong{~630 antimicrobial and antiviral drugs}} by name and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED CT), and knows all about valid SIR and MIC values. The integral clinical breakpoint guidelines from CLSI 2011-2026 and EUCAST 2011-2026 are included, even with epidemiological cut-off (ECOFF) values. It supports and can read any data format, including WHONET data. This package works on Windows, macOS and Linux with all versions of R since R-3.0 (April 2013). \strong{It was designed to work in any setting, including those with very limited resources}. It was created for both routine data analysis and academic research at the Faculty of Medical Sciences of the \href{https://www.rug.nl}{University of Groningen} and the \href{https://www.umcg.nl}{University Medical Center Groningen}. The \code{AMR} package is available in English, Arabic, Bengali, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Hindi, Indonesian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swahili, Swedish, Turkish, Ukrainian, Urdu, and Vietnamese. Antimicrobial drug (group) names and colloquial microorganism names are provided in these languages. } diff --git a/man/antimicrobials.Rd b/man/antimicrobials.Rd index 8345a5f3d..f0437df35 100644 --- a/man/antimicrobials.Rd +++ b/man/antimicrobials.Rd @@ -5,9 +5,9 @@ \alias{antimicrobials} \alias{antibiotics} \alias{antivirals} -\title{Data Sets with 625 Antimicrobial Drugs} +\title{Data Sets with 626 Antimicrobial Drugs} \format{ -\subsection{For the \link{antimicrobials} data set: a \link[tibble:tibble]{tibble} with 505 observations and 14 variables:}{ +\subsection{For the \link{antimicrobials} data set: a \link[tibble:tibble]{tibble} with 506 observations and 14 variables:}{ \itemize{ \item \code{ab}\cr antimicrobial ID as used in this package (such as \code{AMC}), using the official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes where available. \emph{\strong{This is a unique identifier.}} \item \code{cid}\cr Compound ID as found in PubChem. \emph{\strong{This is a unique identifier.}} @@ -50,7 +50,7 @@ LOINC: } } -An object of class \code{deprecated_amr_dataset} (inherits from \code{tbl_df}, \code{tbl}, \code{data.frame}) with 505 rows and 14 columns. +An object of class \code{deprecated_amr_dataset} (inherits from \code{tbl_df}, \code{tbl}, \code{data.frame}) with 506 rows and 14 columns. An object of class \code{tbl_df} (inherits from \code{tbl}, \code{data.frame}) with 120 rows and 11 columns. } diff --git a/man/clinical_breakpoints.Rd b/man/clinical_breakpoints.Rd index ca2daa0c2..5fb9370f3 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 60 234 observations and 15 variables: +A \link[tibble:tibble]{tibble} with 60 237 observations and 15 variables: \itemize{ \item \code{guideline}\cr Name of the guideline \item \code{type}\cr Breakpoint type, either \code{"ECOFF"}, \code{"animal"}, or \code{"human"} diff --git a/man/custom_interpretive_rules.Rd b/man/custom_interpretive_rules.Rd index 6abefad4e..87d1ec057 100644 --- a/man/custom_interpretive_rules.Rd +++ b/man/custom_interpretive_rules.Rd @@ -105,7 +105,7 @@ These 43 antimicrobial groups are allowed in the rules (case-insensitive) and ca \item aminopenicillins\cr(amoxicillin, amoxicillin/clavulanic acid, and ampicillin) \item antifungals\cr(amorolfine, amphotericin B, amphotericin B-high, anidulafungin, butoconazole, caspofungin, ciclopirox, clotrimazole, econazole, fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin, ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole, manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin, posaconazole, rezafungin, ribociclib, sulconazole, terbinafine, terconazole, and voriconazole) \item antimycobacterials\cr(4-aminosalicylic acid, calcium aminosalicylate, capreomycin, clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid, ethionamide, isoniazid, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide, p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide, rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, and viomycin) -\item betalactamase_inhibitors\cr(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, avibactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/sulbactam, ceftaroline/avibactam, ceftazidime/avibactam, ceftibuten/avibactam, ceftolozane/tazobactam, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, nacubactam, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, sulbactam, sultamicillin, taniborbactam, tazobactam, ticarcillin/clavulanic acid, xeruborbactam, and zidebactam) +\item betalactamase_inhibitors\cr(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, avibactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/sulbactam, ceftaroline/avibactam, ceftazidime/avibactam, ceftibuten/avibactam, ceftolozane/tazobactam, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, nacubactam, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, sulbactam, sulbactam/durlobactam, sultamicillin, taniborbactam, tazobactam, ticarcillin/clavulanic acid, xeruborbactam, and zidebactam) \item betalactams\cr(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam) \item betalactams_with_inhibitor\cr(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftibuten/avibactam, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid) \item carbapenems\cr(biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, taniborbactam, and tebipenem) diff --git a/tests/testthat/test-data.R b/tests/testthat/test-data.R index 1c37291ad..41e920f9d 100644 --- a/tests/testthat/test-data.R +++ b/tests/testthat/test-data.R @@ -633,3 +633,20 @@ test_that("antimicrobials: synonyms are unambiguous and filed under the right ag expect_false(any(c("lopac", "nbleomycinamide", "pharmakon", "prestwick", "spectrum", "spiro", "tocris") %in% syn$synonym)) expect_false("AMA" %in% as.character(unlist(ab_from_text("Patient started on broad spectrum antibiotics")))) }) + +test_that("clinical_breakpoints: WHONET codes that are another agent here are recoded (#308)", { + skip_on_cran() + cb <- AMR::clinical_breakpoints + # WHONET SUD is sulbactam/durlobactam (SUD1), not sulfadimethoxine (SUD) + expect_false("SUD" %in% cb$ab) + expect_identical(sort(unique(cb$guideline[cb$ab == "SUD1"])), c("CLSI 2024", "CLSI 2025", "CLSI 2026")) + expect_identical(as.character(as.ab(c("Sulbactam/durlobactam", "sulbactam-durlobactam", "Xacduro"))), rep("SUD1", 3)) + expect_identical(as.character(as.sir(as.mic(4), mo = "Acinetobacter baumannii", ab = "SUD1", guideline = "CLSI 2026", info = FALSE)), "S") + # WHONET STR is streptomycin (STR1), not streptoduocin (STR) + expect_false("STR" %in% cb$ab) + # WHONET ROX (EUCAST 2011 only) is roxithromycin (RXT), not cefuroxime (CXM) + rxt_2011 <- cb[cb$guideline == "EUCAST 2011" & cb$ab == "RXT" & cb$method == "MIC", , drop = FALSE] + expect_true(all(as.mo(c("Haemophilus influenzae", "Moraxella catarrhalis")) %in% rxt_2011$mo)) + cxm_2011 <- cb[cb$guideline == "EUCAST 2011" & cb$ab == "CXM" & cb$method == "MIC" & cb$mo %in% as.mo(c("Haemophilus influenzae", "Moraxella catarrhalis")), , drop = FALSE] + expect_true(all(cxm_2011$breakpoint_R == 2)) +})