1
0
mirror of https://github.com/msberends/AMR.git synced 2024-12-26 06:46:11 +01:00

support veterinary MIC/disk translation

This commit is contained in:
dr. M.S. (Matthijs) Berends 2024-02-24 15:16:52 +01:00
parent 74ea6c8c60
commit 7be4dabbc0
69 changed files with 34521 additions and 30207 deletions

View File

@ -1,13 +1,12 @@
Package: AMR Package: AMR
Version: 2.1.1.9004 Version: 2.1.1.9006
Date: 2023-12-04 Date: 2024-02-24
Title: Antimicrobial Resistance Data Analysis Title: Antimicrobial Resistance Data Analysis
Description: Functions to simplify and standardise antimicrobial resistance (AMR) Description: Functions to simplify and standardise antimicrobial resistance (AMR)
data analysis and to work with microbial and antimicrobial properties by data analysis and to work with microbial and antimicrobial properties by
using evidence-based methods, as described in <doi:10.18637/jss.v104.i03>. using evidence-based methods, as described in <doi:10.18637/jss.v104.i03>.
Authors@R: c( Authors@R: c(
person(family = "Berends", c("Matthijs", "S."), role = c("aut", "cre"), comment = c(ORCID = "0000-0001-7620-1800"), email = "m.s.berends@umcg.nl"), person(family = "Berends", c("Matthijs", "S."), role = c("aut", "cre"), comment = c(ORCID = "0000-0001-7620-1800"), email = "m.s.berends@umcg.nl"),
person(family = "Luz", c("Christian", "F."), role = c("aut", "ctb"), comment = c(ORCID = "0000-0001-5809-5995")),
person(family = "Souverein", c("Dennis"), role = c("aut", "ctb"), comment = c(ORCID = "0000-0003-0455-0336")), person(family = "Souverein", c("Dennis"), role = c("aut", "ctb"), comment = c(ORCID = "0000-0003-0455-0336")),
person(family = "Hassing", c("Erwin", "E.", "A."), role = c("aut", "ctb")), person(family = "Hassing", c("Erwin", "E.", "A."), role = c("aut", "ctb")),
person(family = "Albers", c("Casper", "J."), role = "ths", comment = c(ORCID = "0000-0002-9213-6743")), person(family = "Albers", c("Casper", "J."), role = "ths", comment = c(ORCID = "0000-0002-9213-6743")),
@ -18,14 +17,18 @@ Authors@R: c(
person(family = "Hazenberg", c("Eric", "H.", "L.", "C.", "M."), role = "ctb"), person(family = "Hazenberg", c("Eric", "H.", "L.", "C.", "M."), role = "ctb"),
person(family = "Knight", c("Gwen"), role = "ctb", comment = c(ORCID = "0000-0002-7263-9896")), person(family = "Knight", c("Gwen"), role = "ctb", comment = c(ORCID = "0000-0002-7263-9896")),
person(family = "Lenglet", c("Annick"), role = "ctb", comment = c(ORCID = "0000-0003-2013-8405")), person(family = "Lenglet", c("Annick"), role = "ctb", comment = c(ORCID = "0000-0003-2013-8405")),
person(family = "Luz", c("Christian", "F."), role = c("ctb"), comment = c(ORCID = "0000-0001-5809-5995")),
person(family = "Meijer", c("Bart", "C."), role = "ctb"), person(family = "Meijer", c("Bart", "C."), role = "ctb"),
person(family = "Mykhailenko", c("Dmytro"), role = "ctb"), person(family = "Mykhailenko", c("Dmytro"), role = "ctb"),
person(family = "Mymrikov", c("Anton"), role = "ctb"), person(family = "Mymrikov", c("Anton"), role = "ctb"),
person(family = "Norgan", c("Andrew", "P."), role = "ctb", comment = c(ORCID = "0000-0002-2955-2066")), person(family = "Norgan", c("Andrew", "P."), role = "ctb", comment = c(ORCID = "0000-0002-2955-2066")),
person(family = "Ny", c("Sofia"), role = "ctb", comment = c(ORCID = "0000-0002-2017-1363")), person(family = "Ny", c("Sofia"), role = "ctb", comment = c(ORCID = "0000-0002-2017-1363")),
person(family = "Saab", c("Matthew"), role = "ctb"),
person(family = "Salm", c("Jonas"), role = "ctb"), person(family = "Salm", c("Jonas"), role = "ctb"),
person(family = "Sanchez", c("Javier"), role = "ctb", comment = c(ORCID = "0000-0003-2605-8094")),
person(family = "Schade", c("Rogier", "P."), role = "ctb"), person(family = "Schade", c("Rogier", "P."), role = "ctb"),
person(family = "Sinha", c("Bhanu", "N.", "M."), role = "ths", comment = c(ORCID = "0000-0003-1634-0010")), person(family = "Sinha", c("Bhanu", "N.", "M."), role = "ths", comment = c(ORCID = "0000-0003-1634-0010")),
person(family = "Stull", c("Jason"), role = "ctb", comment = c(ORCID = "0000-0002-9028-8153")),
person(family = "Underwood", c("Anthony"), role = "ctb", comment = c(ORCID = "0000-0002-8547-4277")), person(family = "Underwood", c("Anthony"), role = "ctb", comment = c(ORCID = "0000-0002-8547-4277")),
person(family = "Williams", c("Anita"), role = "ctb", comment = c(ORCID = "0000-0002-5295-8451"))) person(family = "Williams", c("Anita"), role = "ctb", comment = c(ORCID = "0000-0002-5295-8451")))
Depends: R (>= 3.0.0) Depends: R (>= 3.0.0)
@ -48,6 +51,7 @@ Suggests:
rmarkdown, rmarkdown,
rvest, rvest,
tinytest, tinytest,
vctrs,
xml2 xml2
VignetteBuilder: knitr,rmarkdown VignetteBuilder: knitr,rmarkdown
URL: https://msberends.github.io/AMR/, https://github.com/msberends/AMR URL: https://msberends.github.io/AMR/, https://github.com/msberends/AMR
@ -55,5 +59,5 @@ BugReports: https://github.com/msberends/AMR/issues
License: GPL-2 | file LICENSE License: GPL-2 | file LICENSE
Encoding: UTF-8 Encoding: UTF-8
LazyData: true LazyData: true
RoxygenNote: 7.2.3 RoxygenNote: 7.3.1
Roxygen: list(markdown = TRUE) Roxygen: list(markdown = TRUE)

View File

@ -232,6 +232,7 @@ export(kurtosis)
export(labels_sir_count) export(labels_sir_count)
export(left_join_microorganisms) export(left_join_microorganisms)
export(like) export(like)
export(limit_mic_range)
export(lincosamides) export(lincosamides)
export(lipoglycopeptides) export(lipoglycopeptides)
export(macrolides) export(macrolides)
@ -297,7 +298,6 @@ export(quinolones)
export(random_disk) export(random_disk)
export(random_mic) export(random_mic)
export(random_sir) export(random_sir)
export(rescale_mic)
export(reset_AMR_locale) export(reset_AMR_locale)
export(resistance) export(resistance)
export(resistance_predict) export(resistance_predict)

28
NEWS.md
View File

@ -1,16 +1,30 @@
# AMR 2.1.1.9004 # AMR 2.1.1.9006
*(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!)*
## A New Milestone: One Health Support (= Human + Veterinary + Environmental)
This package now supports not only tools for AMR data analysis in clinical settings, but also for veterinary and environmental microbiology. This was made possible through a collaboration with the [University of Prince Edward Island](https://www.upei.ca/avc), Canada. To celebrate this great improvement of the package, we also updated the package logo to reflect this change.
* `as.sir()` now supports animal breakpoints from CLSI. Use `breakpoint_type = "animal"` and set the `host` argument to a variable that contains animal species names.
* The `clinical_breakpoints` data set contains all these breakpoints, and can be downloaded on our [download page](https://msberends.github.io/AMR/articles/datasets.html).
* The `antibiotics` data set contains all veterinary antibiotics, such as pradofloxacin and enrofloxacin. All WHOCC codes for veterinary use have been added as well.
* `ab_atc()` now supports ATC codes of veterinary antibiotics (that all start with "Q")
* `ab_url()` now supports retrieving the WHOCC url of their ATCvet pages
## Breaking ## Breaking
* Removed all functions and references that used the deprecated `rsi` class, which were all replaced with their `sir` equivalents a year ago * Removed all functions and references that used the deprecated `rsi` class, which were all replaced with their `sir` equivalents over a year ago
## New ## New functions
* Function group `scale_*_mic()`, namely: `scale_x_mic()`, `scale_y_mic()`, `scale_colour_mic()` and `scale_fill_mic()`. They are advanced ggplot2 extensions to allow plotting of MIC values. They allow for manual range definition and plotting missing intermediate log2 levels. * The group `scale_*_mic()`, namely: `scale_x_mic()`, `scale_y_mic()`, `scale_colour_mic()` and `scale_fill_mic()`. They are advanced ggplot2 extensions to allow easy plotting of MIC values. They allow for manual range definition and plotting missing intermediate log2 levels.
* Function `rescale_mic()`, which allows to rescale MIC values to a manually set range. This is the powerhouse behind the `scale_*_mic()` functions, but it can be used by users directly to e.g. compare equality in MIC distributions by rescaling them to the same range first. * `limit_mic_range()`, which allows to limit MIC values to a manually set range. This is the powerhouse behind the `scale_*_mic()` functions, but it can be used by users directly to e.g. compare equality in MIC distributions by rescaling them to the same range first.
### Changed ### Changed
* For MICs: * For MICs:
* Added 4096 and 5 powers of 192 as valid levels (192, 384, 576, 768, 960) * Added as valid levels: 4096, 6 powers of 0.0625, and 5 powers of 192 (192, 384, 576, 768, 960)
* Added new argument `keep_operators` to `as.mic()`. This can be `"all"` (default), `"none"`, or `"edges"`. * Added new argument `keep_operators` to `as.mic()`. This can be `"all"` (default), `"none"`, or `"edges"`. This argument is also available in the new `limit_mic_range()` and `scale_*_mic()` functions.
* Updated `italicise_taxonomy()` to support HTML
* Greatly improved `vctrs` integration, a Tidyverse package working in the background for many Tidyverse functions. For users, this means that `dplyr::rowwise()` and `dplyr::c_across()` are now supported for e.g. columns of class `mic`. Despite this, this `AMR` package is still zero-dependent on any other package, including `dplyr` and `vctrs`.
* Updated all ATC codes from WHOCC
* Updated all antibiotic DDDs from WHOCC
# AMR 2.1.1 # AMR 2.1.1

View File

@ -237,7 +237,7 @@ addin_insert_like <- function() {
} }
} }
search_type_in_df <- function(x, type, info = TRUE) { search_type_in_df <- function(x, type, info = TRUE, add_col_prefix = TRUE) {
meet_criteria(x, allow_class = "data.frame") meet_criteria(x, allow_class = "data.frame")
meet_criteria(type, allow_class = "character", has_length = 1) meet_criteria(type, allow_class = "character", has_length = 1)
@ -280,7 +280,7 @@ search_type_in_df <- function(x, type, info = TRUE) {
if (!inherits(pm_pull(x, found), c("Date", "POSIXct"))) { if (!inherits(pm_pull(x, found), c("Date", "POSIXct"))) {
stop( stop(
font_red(paste0( font_red(paste0(
"Found column '", font_bold(found), "' to be used as input for `col_", type, "Found column '", font_bold(found), "' to be used as input for `", ifelse(add_col_prefix, "col_", ""), type,
"`, but this column contains no valid dates. Transform its values to valid dates first." "`, but this column contains no valid dates. Transform its values to valid dates first."
)), )),
call. = FALSE call. = FALSE
@ -311,6 +311,14 @@ search_type_in_df <- function(x, type, info = TRUE) {
found <- sort(colnames(x)[colnames_formatted %like_case% "^(specimen)"]) found <- sort(colnames(x)[colnames_formatted %like_case% "^(specimen)"])
} }
} }
# -- host (animals)
if (type == "host") {
if (any(colnames_formatted %like_case% "^(host|animal)")) {
found <- sort(colnames(x)[colnames_formatted %like_case% "^(host|animal)"])
} else if (any(colnames_formatted %like_case% "((^|[^A-Za-z])host($|[^A-Za-z])|animal)")) {
found <- sort(colnames(x)[colnames_formatted %like_case% "((^|[^A-Za-z])host($|[^A-Za-z])|animal)"])
}
}
# -- UTI (urinary tract infection) # -- UTI (urinary tract infection)
if (type == "uti") { if (type == "uti") {
if (any(colnames_formatted == "uti")) { if (any(colnames_formatted == "uti")) {
@ -321,7 +329,7 @@ search_type_in_df <- function(x, type, info = TRUE) {
if (!is.null(found)) { if (!is.null(found)) {
# this column should contain logicals # this column should contain logicals
if (!is.logical(x[, found, drop = TRUE])) { if (!is.logical(x[, found, drop = TRUE])) {
message_("Column '", font_bold(found), "' found as input for `col_", type, message_("Column '", font_bold(found), "' found as input for `", ifelse(add_col_prefix, "col_", ""), type,
"`, but this column does not contain 'logical' values (TRUE/FALSE) and was ignored.", "`, but this column does not contain 'logical' values (TRUE/FALSE) and was ignored.",
add_fn = font_red add_fn = font_red
) )
@ -334,9 +342,9 @@ search_type_in_df <- function(x, type, info = TRUE) {
if (!is.null(found) && isTRUE(info)) { if (!is.null(found) && isTRUE(info)) {
if (message_not_thrown_before("search_in_type", type)) { if (message_not_thrown_before("search_in_type", type)) {
msg <- paste0("Using column '", font_bold(found), "' as input for `col_", type, "`.") msg <- paste0("Using column '", font_bold(found), "' as input for `", ifelse(add_col_prefix, "col_", ""), type, "`.")
if (type %in% c("keyantibiotics", "keyantimicrobials", "specimen")) { if (type %in% c("keyantibiotics", "keyantimicrobials", "specimen")) {
msg <- paste(msg, "Use", font_bold(paste0("col_", type), "= FALSE"), "to prevent this.") msg <- paste(msg, "Use", font_bold(paste0(ifelse(add_col_prefix, "col_", ""), type), "= FALSE"), "to prevent this.")
} }
message_(msg) message_(msg)
} }
@ -456,7 +464,8 @@ word_wrap <- function(...,
ops <- "([,./><\\]\\[])" ops <- "([,./><\\]\\[])"
msg <- gsub(paste0(ops, " ", ops), "\\1\\2", msg, perl = TRUE) msg <- gsub(paste0(ops, " ", ops), "\\1\\2", msg, perl = TRUE)
# we need to correct for already applied style, that adds text like "\033[31m\" # we need to correct for already applied style, that adds text like "\033[31m\"
msg_stripped <- font_stripstyle(msg) msg_stripped <- gsub("(.*)?\\033\\]8;;.*\\a(.*?)\\033\\]8;;\\a(.*)", "\\1\\2\\3", msg, perl = TRUE) # for font_url()
msg_stripped <- font_stripstyle(msg_stripped)
# where are the spaces now? # where are the spaces now?
msg_stripped_wrapped <- paste0( msg_stripped_wrapped <- paste0(
strwrap(msg_stripped, strwrap(msg_stripped,

View File

@ -31,19 +31,19 @@
#' #'
#' This is an overview of all the package-specific [options()] you can set in the `AMR` package. #' This is an overview of all the package-specific [options()] you can set in the `AMR` package.
#' @section Options: #' @section Options:
#' * `AMR_custom_ab` \cr Allows to use custom antimicrobial drugs with this package. This is explained in [add_custom_antimicrobials()]. #' * `AMR_breakpoint_type` \cr A [character] to use in [as.sir()], to indicate which breakpoint type to use. This must be either `r vector_or(clinical_breakpoints$type)`.
#' * `AMR_custom_mo` \cr Allows to use custom microorganisms with this package. This is explained in [add_custom_microorganisms()]. #' * `AMR_cleaning_regex` \cr A [regular expression][base::regex] (case-insensitive) to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to clean the user input. The default is the outcome of [mo_cleaning_regex()], which removes texts between brackets and texts such as "species" and "serovar".
#' * `AMR_eucastrules` \cr Used for setting the default types of rules for [eucast_rules()] function, must be one or more of: `"breakpoints"`, `"expert"`, `"other"`, `"custom"`, `"all"`, and defaults to `c("breakpoints", "expert")`. #' * `AMR_custom_ab` \cr A file location to an RDS file, to use custom antimicrobial drugs with this package. This is explained in [add_custom_antimicrobials()].
#' * `AMR_guideline` \cr Used for setting the default guideline for interpreting MIC values and disk diffusion diameters with [as.sir()]. Can be only the guideline name (e.g., `"CLSI"`) or the name with a year (e.g. `"CLSI 2019"`). The default to the latest implemented EUCAST guideline, currently \code{"`r clinical_breakpoints$guideline[1]`"}. Supported guideline are currently EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`). #' * `AMR_custom_mo` \cr A file location to an RDS file, to use custom microorganisms with this package. This is explained in [add_custom_microorganisms()].
#' * `AMR_eucastrules` \cr A [character] to set the default types of rules for [eucast_rules()] function, must be one or more of: `"breakpoints"`, `"expert"`, `"other"`, `"custom"`, `"all"`, and defaults to `c("breakpoints", "expert")`.
#' * `AMR_guideline` \cr A [character] to set the default guideline for interpreting MIC values and disk diffusion diameters with [as.sir()]. Can be only the guideline name (e.g., `"CLSI"`) or the name with a year (e.g. `"CLSI 2019"`). The default to the latest implemented EUCAST guideline, currently \code{"`r clinical_breakpoints$guideline[1]`"}. Supported guideline are currently EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`).
#' * `AMR_ignore_pattern` \cr A [regular expression][base::regex] to ignore (i.e., make `NA`) any match given in [as.mo()] and all [`mo_*`][mo_property()] functions. #' * `AMR_ignore_pattern` \cr A [regular expression][base::regex] to ignore (i.e., make `NA`) any match given in [as.mo()] and all [`mo_*`][mo_property()] functions.
#' * `AMR_include_PKPD` \cr A [logical] to use in [as.sir()], to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`. #' * `AMR_include_PKPD` \cr A [logical] to use in [as.sir()], to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`.
#' * `AMR_ecoff` \cr A [logical] use in [as.sir()], to indicate that ECOFF (Epidemiological Cut-Off) values must be used - the default is `FALSE`.
#' * `AMR_include_screening` \cr A [logical] to use in [as.sir()], to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`. #' * `AMR_include_screening` \cr A [logical] to use in [as.sir()], to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`.
#' * `AMR_keep_synonyms` \cr A [logical] to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to indicate if old, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. The default is `FALSE`. #' * `AMR_keep_synonyms` \cr A [logical] to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to indicate if old, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. The default is `FALSE`.
#' * `AMR_cleaning_regex` \cr A [regular expression][base::regex] (case-insensitive) to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to clean the user input. The default is the outcome of [mo_cleaning_regex()], which removes texts between brackets and texts such as "species" and "serovar". #' * `AMR_locale` \cr A [character] to set the language for the `AMR` package, can be one of these supported language names or ISO-639-1 codes: `r vector_or(paste0(sapply(LANGUAGES_SUPPORTED_NAMES, function(x) x[[1]]), " (" , LANGUAGES_SUPPORTED, ")"), quotes = FALSE, sort = FALSE)`. The default is the current system language (if supported, English otherwise).
#' * `AMR_locale` \cr A language to use for the `AMR` package, can be one of these supported language names or ISO-639-1 codes: `r vector_or(paste0(sapply(LANGUAGES_SUPPORTED_NAMES, function(x) x[[1]]), " (" , LANGUAGES_SUPPORTED, ")"), quotes = FALSE, sort = FALSE)`. The default is the current system language (if supported).
#' * `AMR_mo_source` \cr A file location for a manual code list to be used in [as.mo()] and all [`mo_*`][mo_property()] functions. This is explained in [set_mo_source()]. #' * `AMR_mo_source` \cr A file location for a manual code list to be used in [as.mo()] and all [`mo_*`][mo_property()] functions. This is explained in [set_mo_source()].
#' #'
#' @section Saving Settings Between Sessions: #' @section Saving Settings Between Sessions:
#' Settings in \R are not saved globally and are thus lost when \R is exited. You can save your options to your own `.Rprofile` file, which is a user-specific file. You can edit it using: #' Settings in \R are not saved globally and are thus lost when \R is exited. You can save your options to your own `.Rprofile` file, which is a user-specific file. You can edit it using:
#' #'
@ -51,18 +51,18 @@
#' utils::file.edit("~/.Rprofile") #' utils::file.edit("~/.Rprofile")
#' ``` #' ```
#' #'
#' In this file, you can set options such as: #' In this file, you can set options such as...
#' #'
#' ```r #' ```r
#' options(AMR_locale = "pt") #' options(AMR_locale = "pt")
#' options(AMR_include_PKPD = TRUE) #' options(AMR_include_PKPD = TRUE)
#' ``` #' ```
#' #'
#' to add Portuguese language support of antibiotics, and allow PK/PD rules when interpreting MIC values with [as.sir()]. #' ...to add Portuguese language support of antibiotics, and allow PK/PD rules when interpreting MIC values with [as.sir()].
#' #'
#' ### Share Options Within Team #' ### Share Options Within Team
#' #'
#' For a more global approach, e.g. within a data team, save an options file to a remote file location, such as a shared network drive. This would work in this way: #' For a more global approach, e.g. within a (data) team, save an options file to a remote file location, such as a shared network drive, and have each user read in this file automatically at start-up. This would work in this way:
#' #'
#' 1. Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill it with preferred settings. #' 1. Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill it with preferred settings.
#' #'

4
R/ab.R
View File

@ -117,8 +117,8 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) {
# remove diacritics # remove diacritics
x <- iconv(x, from = "UTF-8", to = "ASCII//TRANSLIT") x <- iconv(x, from = "UTF-8", to = "ASCII//TRANSLIT")
x <- gsub('"', "", x, fixed = TRUE) x <- gsub('"', "", x, fixed = TRUE)
x <- gsub("(specimen|specimen date|specimen_date|spec_date|gender|^dates?$)", "", x, ignore.case = TRUE, perl = TRUE) x <- gsub("(specimen|specimen date|specimen_date|spec_date|gender|^dates?$|animal|host($|[a-z]))", "", x, ignore.case = TRUE, perl = TRUE)
# penicillin is a special case: we call it so, but then mean benzylpenicillin # penicillin is a special case: we call it so, but then most often mean benzylpenicillin
x[x %like_case% "^PENICILLIN" & x %unlike_case% "[ /+-]"] <- "benzylpenicillin" x[x %like_case% "^PENICILLIN" & x %unlike_case% "[ /+-]"] <- "benzylpenicillin"
x_bak_clean <- x x_bak_clean <- x
if (already_regex == FALSE) { if (already_regex == FALSE) {

View File

@ -310,7 +310,10 @@ ab_url <- function(x, open = FALSE, ...) {
ab <- as.ab(x = x, ...) ab <- as.ab(x = x, ...)
atcs <- ab_atc(ab, only_first = TRUE) atcs <- ab_atc(ab, only_first = TRUE)
u <- paste0("https://www.whocc.no/atc_ddd_index/?code=", atcs, "&showdescription=no") u <- character(length(atcs))
# veterinary codes
u[atcs %like% "^Q"] <- paste0("https://www.whocc.no/atcvet/atcvet_index/?code=", atcs[atcs %like% "^Q"], "&showdescription=no")
u[atcs %unlike% "^Q"] <- paste0("https://www.whocc.no/atc_ddd_index/?code=", atcs[atcs %unlike% "^Q"], "&showdescription=no")
u[is.na(atcs)] <- NA_character_ u[is.na(atcs)] <- NA_character_
names(u) <- ab_name(ab) names(u) <- ab_name(ab)

View File

@ -541,10 +541,10 @@ not_intrinsic_resistant <- function(only_sir_columns = FALSE, col_mo = NULL, ver
), ),
error = function(e) stop_("in not_intrinsic_resistant(): ", e$message, call = FALSE) error = function(e) stop_("in not_intrinsic_resistant(): ", e$message, call = FALSE)
) )
agents <- ab_in_data[ab_in_data %in% names(vars_df_R[which(vars_df_R)])] agents <- ab_in_data[ab_in_data %in% names(vars_df_R[which(vars_df_R)])]
if (length(agents) > 0 && if (length(agents) > 0 &&
message_not_thrown_before("not_intrinsic_resistant", sort(agents))) { message_not_thrown_before("not_intrinsic_resistant", sort(agents))) {
agents_formatted <- paste0("'", font_bold(agents, collapse = NULL), "'") agents_formatted <- paste0("'", font_bold(agents, collapse = NULL), "'")
agents_names <- ab_name(names(agents), tolower = TRUE, language = NULL) agents_names <- ab_name(names(agents), tolower = TRUE, language = NULL)
need_name <- generalise_antibiotic_name(agents) != generalise_antibiotic_name(agents_names) need_name <- generalise_antibiotic_name(agents) != generalise_antibiotic_name(agents_names)
@ -555,7 +555,7 @@ not_intrinsic_resistant <- function(only_sir_columns = FALSE, col_mo = NULL, ver
vector_and(agents_formatted, quotes = FALSE, sort = FALSE) vector_and(agents_formatted, quotes = FALSE, sort = FALSE)
) )
} }
vars_df_R <- names(vars_df_R)[which(!vars_df_R)] vars_df_R <- names(vars_df_R)[which(!vars_df_R)]
# find columns that are abx, but also intrinsic R # find columns that are abx, but also intrinsic R
out <- unname(intersect(ab_in_data, vars_df_R)) out <- unname(intersect(ab_in_data, vars_df_R))

View File

@ -83,7 +83,7 @@ atc_online_property <- function(atc_code,
administration = "O", administration = "O",
url = "https://www.whocc.no/atc_ddd_index/?code=%s&showdescription=no", url = "https://www.whocc.no/atc_ddd_index/?code=%s&showdescription=no",
url_vet = "https://www.whocc.no/atcvet/atcvet_index/?code=%s&showdescription=no") { url_vet = "https://www.whocc.no/atcvet/atcvet_index/?code=%s&showdescription=no") {
meet_criteria(atc_code, allow_class = "character") meet_criteria(atc_code, allow_class = "character", allow_NA = TRUE)
meet_criteria(property, allow_class = "character", has_length = 1, is_in = c("ATC", "Name", "DDD", "U", "unit", "Adm.R", "Note", "groups"), ignore.case = TRUE) meet_criteria(property, allow_class = "character", has_length = 1, is_in = c("ATC", "Name", "DDD", "U", "unit", "Adm.R", "Note", "groups"), ignore.case = TRUE)
meet_criteria(administration, allow_class = "character", has_length = 1) meet_criteria(administration, allow_class = "character", has_length = 1)
meet_criteria(url, allow_class = "character", has_length = 1, looks_like = "https?://") meet_criteria(url, allow_class = "character", has_length = 1, looks_like = "https?://")
@ -128,6 +128,10 @@ atc_online_property <- function(atc_code,
for (i in seq_len(length(atc_code))) { for (i in seq_len(length(atc_code))) {
progress$tick() progress$tick()
if (is.na(atc_code[i])) {
next
}
if (atc_code[i] %like% "^Q") { if (atc_code[i] %like% "^Q") {
# veterinary drugs, ATC_vet codes start with a "Q" # veterinary drugs, ATC_vet codes start with a "Q"
@ -176,7 +180,7 @@ atc_online_property <- function(atc_code,
colnames(out) <- gsub("^atc.*", "atc", tolower(colnames(out))) colnames(out) <- gsub("^atc.*", "atc", tolower(colnames(out)))
if (length(out) == 0) { if (length(out) == 0) {
warning_("in `atc_online_property()`: ATC not found: ", atc_code[i], ". Please check ", atc_url, ".") message_("in `atc_online_property()`: no properties found for ATC ", atc_code[i], ". Please check ", font_url(atc_url, "this WHOCC webpage"), ".")
returnvalue[i] <- NA returnvalue[i] <- NA
next next
} }
@ -209,20 +213,20 @@ atc_online_property <- function(atc_code,
#' @rdname atc_online #' @rdname atc_online
#' @export #' @export
atc_online_groups <- function(atc_code, ...) { atc_online_groups <- function(atc_code, ...) {
meet_criteria(atc_code, allow_class = "character") meet_criteria(atc_code, allow_class = "character", allow_NA = TRUE)
atc_online_property(atc_code = atc_code, property = "groups", ...) atc_online_property(atc_code = atc_code, property = "groups", ...)
} }
#' @rdname atc_online #' @rdname atc_online
#' @export #' @export
atc_online_ddd <- function(atc_code, ...) { atc_online_ddd <- function(atc_code, ...) {
meet_criteria(atc_code, allow_class = "character") meet_criteria(atc_code, allow_class = "character", allow_NA = TRUE)
atc_online_property(atc_code = atc_code, property = "ddd", ...) atc_online_property(atc_code = atc_code, property = "ddd", ...)
} }
#' @rdname atc_online #' @rdname atc_online
#' @export #' @export
atc_online_ddd_units <- function(atc_code, ...) { atc_online_ddd_units <- function(atc_code, ...) {
meet_criteria(atc_code, allow_class = "character") meet_criteria(atc_code, allow_class = "character", allow_NA = TRUE)
atc_online_property(atc_code = atc_code, property = "unit", ...) atc_online_property(atc_code = atc_code, property = "unit", ...)
} }

View File

@ -100,7 +100,7 @@
#' - `gbif_parent`\cr GBIF identifier of the parent taxon #' - `gbif_parent`\cr GBIF identifier of the parent taxon
#' - `gbif_renamed_to`\cr GBIF identifier of the currently valid taxon #' - `gbif_renamed_to`\cr GBIF identifier of the currently valid taxon
#' - `source`\cr Either `r vector_or(microorganisms$source)` (see *Source*) #' - `source`\cr Either `r vector_or(microorganisms$source)` (see *Source*)
#' - `prevalence`\cr Prevalence of the microorganism according to Bartlett *et al.* (2022, \doi{10.1099/mic.0.001269}), see [mo_matching_score()] for the full explanation #' - `prevalence`\cr Prevalence of the microorganism based on Bartlett *et al.* (2022, \doi{10.1099/mic.0.001269}), see [mo_matching_score()] for the full explanation
#' - `snomed`\cr Systematized Nomenclature of Medicine (SNOMED) code of the microorganism, version of `r documentation_date(TAXONOMY_VERSION$SNOMED$accessed_date)` (see *Source*). Use [mo_snomed()] to retrieve it quickly, see [mo_property()]. #' - `snomed`\cr Systematized Nomenclature of Medicine (SNOMED) code of the microorganism, version of `r documentation_date(TAXONOMY_VERSION$SNOMED$accessed_date)` (see *Source*). Use [mo_snomed()] to retrieve it quickly, see [mo_property()].
#' @details #' @details
#' Please note that entries are only based on the List of Prokaryotic names with Standing in Nomenclature (LPSN) and the Global Biodiversity Information Facility (GBIF) (see below). Since these sources incorporate entries based on (recent) publications in the International Journal of Systematic and Evolutionary Microbiology (IJSEM), it can happen that the year of publication is sometimes later than one might expect. #' Please note that entries are only based on the List of Prokaryotic names with Standing in Nomenclature (LPSN) and the Global Biodiversity Information Facility (GBIF) (see below). Since these sources incorporate entries based on (recent) publications in the International Journal of Systematic and Evolutionary Microbiology (IJSEM), it can happen that the year of publication is sometimes later than one might expect.
@ -262,10 +262,17 @@
#' Data Set with Clinical Breakpoints for SIR Interpretation #' Data Set with Clinical Breakpoints for SIR Interpretation
#' #'
#' Data set containing clinical breakpoints to interpret MIC and disk diffusion to SIR values, according to international guidelines. Currently implemented guidelines are EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`). Use [as.sir()] to transform MICs or disks measurements to SIR values. #' @description Data set containing clinical breakpoints to interpret MIC and disk diffusion to SIR values, according to international guidelines. This dataset contain breakpoints for humans, `r length(unique(clinical_breakpoints$host[!clinical_breakpoints$host %in% clinical_breakpoints$type]))` different animal groups, and ECOFFs.
#'
#' Currently available breakpoint guidelines for **clinical microbiology** are EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "human")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "human")$guideline)))` and CLSI `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "human")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "human")$guideline)))`.
#'
#' Currently available breakpoint guidelines for **veterinary microbiology** are EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "animal")$guideline)))` and CLSI `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)))`.
#'
#' Use [as.sir()] to transform MICs or disks measurements to SIR values.
#' @format A [tibble][tibble::tibble] with `r format(nrow(clinical_breakpoints), big.mark = " ")` observations and `r ncol(clinical_breakpoints)` variables: #' @format A [tibble][tibble::tibble] with `r format(nrow(clinical_breakpoints), big.mark = " ")` observations and `r ncol(clinical_breakpoints)` variables:
#' - `guideline`\cr Name of the guideline #' - `guideline`\cr Name of the guideline
#' - `type`\cr Breakpoint type, either `r vector_or(clinical_breakpoints$type)` #' - `type`\cr Breakpoint type, either `r vector_or(clinical_breakpoints$type)`
#' - `host`\cr Host of infectious agent. This is mostly useful for veterinary breakpoints and is either `r vector_or(clinical_breakpoints$host)`
#' - `method`\cr Testing method, either `r vector_or(clinical_breakpoints$method)` #' - `method`\cr Testing method, either `r vector_or(clinical_breakpoints$method)`
#' - `site`\cr Body site for which the breakpoint must be applied, e.g. "Oral" or "Respiratory" #' - `site`\cr Body site for which the breakpoint must be applied, e.g. "Oral" or "Respiratory"
#' - `mo`\cr Microbial ID, see [as.mo()] #' - `mo`\cr Microbial ID, see [as.mo()]

77
R/mic.R
View File

@ -27,48 +27,22 @@
# how to conduct AMR data analysis: https://msberends.github.io/AMR/ # # how to conduct AMR data analysis: https://msberends.github.io/AMR/ #
# ==================================================================== # # ==================================================================== #
# these are allowed MIC values and will become [factor] levels # these are allowed MIC values and will become factor levels
operators <- c("<", "<=", "", ">=", ">")
VALID_MIC_LEVELS <- c( VALID_MIC_LEVELS <- c(
c(t(vapply( as.double(paste0("0.000", c(1:9))),
FUN.VALUE = character(6), operators, as.double(paste0("0.00", c(1:99, 1953125, 390625, 78125))),
function(x) paste0(x, "0.000", c(1:4, 6, 8)) as.double(paste0("0.0", c(1:99, 125, 128, 156, 165, 256, 512, 625, 3125, 15625))),
))), as.double(paste0("0.", c(1:99, 125, 128, 256, 512))),
c(t(vapply( 1:9, 1.5,
FUN.VALUE = character(90), operators, c(10:98)[9:98 %% 2 == TRUE],
function(x) paste0(x, "0.00", c(1:9, 11:19, 21:29, 31:39, 41:49, 51:59, 61:69, 71:79, 81:89, 91:99)) 2^c(7:12), 192 * c(1:5), 80 * c(2:12)
))),
unique(c(t(vapply(
FUN.VALUE = character(106), operators,
function(x) {
paste0(x, sort(as.double(paste0(
"0.0",
sort(c(1:99, 125, 128, 156, 165, 256, 512, 625))
))))
}
)))),
unique(c(t(vapply(
FUN.VALUE = character(103), operators,
function(x) {
paste0(x, sort(as.double(paste0(
"0.",
c(1:99, 125, 128, 256, 512)
))))
}
)))),
c(t(vapply(
FUN.VALUE = character(10), operators,
function(x) paste0(x, sort(c(1:9, 1.5)))
))),
c(t(vapply(
FUN.VALUE = character(45), operators,
function(x) paste0(x, c(10:98)[9:98 %% 2 == TRUE])
))),
unique(c(t(vapply(
FUN.VALUE = character(22), operators,
function(x) paste0(x, sort(c(2^c(7:12), 192 * c(1:5), 80 * c(2:12))))
))))
) )
VALID_MIC_LEVELS <- trimws(gsub("[.]?0+$", "", format(unique(sort(VALID_MIC_LEVELS)), scientific = FALSE), perl = TRUE))
operators <- c("<", "<=", "", ">=", ">")
VALID_MIC_LEVELS <- c(t(vapply(FUN.VALUE = character(length(VALID_MIC_LEVELS)),
c("<", "<=", "", ">=", ">"),
paste0,
VALID_MIC_LEVELS)))
#' Transform Input to Minimum Inhibitory Concentrations (MIC) #' Transform Input to Minimum Inhibitory Concentrations (MIC)
#' #'
@ -116,16 +90,16 @@ VALID_MIC_LEVELS <- c(
#' #> 10 16 A #' #> 10 16 A
#' ``` #' ```
#' #'
#' The following [generic functions][groupGeneric()] are implemented for the MIC class: `!`, `!=`, `%%`, `%/%`, `&`, `*`, `+`, `-`, `/`, `<`, `<=`, `==`, `>`, `>=`, `^`, `|`, [abs()], [acos()], [acosh()], [all()], [any()], [asin()], [asinh()], [atan()], [atanh()], [ceiling()], [cos()], [cosh()], [cospi()], [cummax()], [cummin()], [cumprod()], [cumsum()], [digamma()], [exp()], [expm1()], [floor()], [gamma()], [lgamma()], [log()], [log1p()], [log2()], [log10()], [max()], [mean()], [min()], [prod()], [range()], [round()], [sign()], [signif()], [sin()], [sinh()], [sinpi()], [sqrt()], [sum()], [tan()], [tanh()], [tanpi()], [trigamma()] and [trunc()]. Some functions of the `stats` package are also implemented: [median()], [quantile()], [mad()], [IQR()], [fivenum()]. Also, [boxplot.stats()] is supported. Since [sd()] and [var()] are non-generic functions, these could not be extended. Use [mad()] as an alternative, or use e.g. `sd(as.numeric(x))` where `x` is your vector of MIC values. #' All so-called [group generic functions][groupGeneric()] are implemented for the MIC class (such as `!`, `!=`, `<`, `>=`, [exp()], [log2()]). Some functions of the `stats` package are also implemented (such as [quantile()], [median()], [fivenum()]). Since [sd()] and [var()] are non-generic functions, these could not be extended. Use [mad()] as an alternative, or use e.g. `sd(as.numeric(x))` where `x` is your vector of MIC values.
#' #'
#' Using [as.double()] or [as.numeric()] on MIC values will remove the operators and return a numeric vector. Do **not** use [as.integer()] on MIC values as by the \R convention on [factor]s, it will return the index of the factor levels (which is often useless for regular users). #' Using [as.double()] or [as.numeric()] on MIC values will remove the operators and return a numeric vector. Do **not** use [as.integer()] on MIC values as by the \R convention on [factor]s, it will return the index of the factor levels (which is often useless for regular users).
#' #'
#' Use [droplevels()] to drop unused levels. At default, it will return a plain factor. Use `droplevels(..., as.mic = TRUE)` to maintain the `mic` class. #' Use [droplevels()] to drop unused levels. At default, it will return a plain factor. Use `droplevels(..., as.mic = TRUE)` to maintain the `mic` class.
#' #'
#' With [rescale_mic()], existing MIC ranges can be rescaled to a defined range of MIC values. This can be useful to better compare MIC distributions. #' With [limit_mic_range()], existing MIC ranges can be limited to a defined range of MIC values. This can be useful to better compare MIC distributions.
#' #'
#' For `ggplot2`, use one of the [`scale_*_mic()`][scale_x_mic()] functions to plot MIC values. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values. #' For `ggplot2`, use one of the [`scale_*_mic()`][scale_x_mic()] functions to plot MIC values. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values.
#' @return Ordered [factor] with additional class [`mic`], that in mathematical operations acts as decimal numbers. Bare in mind that the outcome of any mathematical operation on MICs will return a [numeric] value. #' @return Ordered [factor] with additional class [`mic`], that in mathematical operations acts as a [numeric] vector. Bear in mind that the outcome of any mathematical operation on MICs will return a [numeric] value.
#' @aliases mic #' @aliases mic
#' @export #' @export
#' @seealso [as.sir()] #' @seealso [as.sir()]
@ -142,8 +116,8 @@ VALID_MIC_LEVELS <- c(
#' quantile(mic_data) #' quantile(mic_data)
#' all(mic_data < 512) #' all(mic_data < 512)
#' #'
#' # rescale MICs using rescale_mic() #' # limit MICs using limit_mic_range()
#' rescale_mic(mic_data, mic_range = c(4, 16)) #' limit_mic_range(mic_data, mic_range = c(4, 16))
#' #'
#' # interpret MIC values #' # interpret MIC values
#' as.sir( #' as.sir(
@ -185,15 +159,16 @@ as.mic <- function(x, na.rm = FALSE, keep_operators = "all") {
x.bak <- NULL x.bak <- NULL
if (is.numeric(x)) { if (is.numeric(x)) {
x.bak <- format(x, scientific = FALSE) x.bak <- format(x, scientific = FALSE)
# MICs never need more than 4 decimals, so: # MICs never have more than 9 decimals, so:
x <- format(round(x, 4), scientific = FALSE) x <- format(round(x, 9), scientific = FALSE)
} else { } else {
x <- as.character(unlist(x)) x <- as.character(unlist(x))
} }
if (isTRUE(na.rm)) { if (isTRUE(na.rm)) {
x <- x[!is.na(x)] x <- x[!is.na(x)]
} }
x[trimws2(x) == ""] <- NA x <- trimws2(x)
x[x == ""] <- NA
if (is.null(x.bak)) { if (is.null(x.bak)) {
x.bak <- x x.bak <- x
} }
@ -289,12 +264,12 @@ NA_mic_ <- set_clean_class(factor(NA, levels = VALID_MIC_LEVELS, ordered = TRUE)
) )
#' @rdname as.mic #' @rdname as.mic
#' @param mic_range a manual range to plot the MIC values, e.g., `mic_range = c(0.001, 32)`. Use `NA` to set no limit on one side, e.g., `mic_range = c(NA, 32)`. #' @param mic_range a manual range to limit the MIC values, e.g., `mic_range = c(0.001, 32)`. Use `NA` to set no limit on one side, e.g., `mic_range = c(NA, 32)`.
#' @export #' @export
rescale_mic <- function(x, mic_range, keep_operators = "edges", as.mic = TRUE) { limit_mic_range <- function(x, mic_range, keep_operators = "edges", as.mic = TRUE) {
meet_criteria(mic_range, allow_class = c("numeric", "integer", "logical"), has_length = 2, allow_NA = TRUE, allow_NULL = TRUE) meet_criteria(mic_range, allow_class = c("numeric", "integer", "logical"), has_length = 2, allow_NA = TRUE, allow_NULL = TRUE)
stop_ifnot(all(mic_range %in% c(VALID_MIC_LEVELS, NA)), stop_ifnot(all(mic_range %in% c(VALID_MIC_LEVELS, NA)),
"Values in `mic_range` must be valid MIC values. Unvalid: ", vector_and(mic_range[mic_range %in% c(levels(as.mic(1)), NA)])) "Values in `mic_range` must be valid MIC values. Unvalid: ", vector_and(mic_range[mic_range %in% c(VALID_MIC_LEVELS, NA)]))
x <- as.mic(x) x <- as.mic(x)
if (is.null(mic_range)) { if (is.null(mic_range)) {
mic_range <- c(NA, NA) mic_range <- c(NA, NA)

2
R/mo.R
View File

@ -250,7 +250,7 @@ as.mo <- function(x,
x_unique <- unique(x[is.na(out) & !is.na(x)]) x_unique <- unique(x[is.na(out) & !is.na(x)])
# set up progress bar # set up progress bar
progress <- progress_ticker(n = length(x_unique), n_min = 10, print = info) progress <- progress_ticker(n = length(x_unique), n_min = 10, print = info, title = "Converting microorganism input")
on.exit(close(progress)) on.exit(close(progress))
msg <- character(0) msg <- character(0)

View File

@ -245,7 +245,7 @@ mo_shortname <- function(x, language = get_AMR_locale(), keep_synonyms = getOpti
# unknown species etc. # unknown species etc.
shortnames[shortnames %like% "unknown"] <- paste0("(", trimws2(gsub("[^a-zA-Z -]", "", shortnames[shortnames %like% "unknown"], perl = TRUE)), ")") shortnames[shortnames %like% "unknown"] <- paste0("(", trimws2(gsub("[^a-zA-Z -]", "", shortnames[shortnames %like% "unknown"], perl = TRUE)), ")")
shortnames[mo_rank(x.mo) %in% c("kingdom", "phylum", "class", "order", "family")] <- mo_name(x.mo, language = NULL, keep_synonyms = keep_synonyms) shortnames[mo_rank(x.mo) %in% c("kingdom", "phylum", "class", "order", "family")] <- mo_name(x.mo[mo_rank(x.mo) %in% c("kingdom", "phylum", "class", "order", "family")], language = NULL, keep_synonyms = keep_synonyms)
shortnames[is.na(x.mo)] <- NA_character_ shortnames[is.na(x.mo)] <- NA_character_
load_mo_uncertainties(metadata) load_mo_uncertainties(metadata)

View File

@ -125,14 +125,13 @@
#' If the original file (in the previous case an Excel file) is moved or deleted, the `mo_source.rds` file will be removed upon the next use of [as.mo()] or any [`mo_*`][mo_property()] function. #' If the original file (in the previous case an Excel file) is moved or deleted, the `mo_source.rds` file will be removed upon the next use of [as.mo()] or any [`mo_*`][mo_property()] function.
#' @export #' @export
set_mo_source <- function(path, destination = getOption("AMR_mo_source", "~/mo_source.rds")) { set_mo_source <- function(path, destination = getOption("AMR_mo_source", "~/mo_source.rds")) {
stop_ifnot(interactive(), "this function can only be used in interactive mode, since it must ask for the user's permission to write a file to their file system.")
meet_criteria(path, allow_class = "character", has_length = 1, allow_NULL = TRUE) meet_criteria(path, allow_class = "character", has_length = 1, allow_NULL = TRUE)
meet_criteria(destination, allow_class = "character", has_length = 1) meet_criteria(destination, allow_class = "character", has_length = 1)
stop_ifnot(destination %like% "[.]rds$", "the `destination` must be a file location with file extension .rds.") stop_ifnot(destination %like% "[.]rds$", "the `destination` must be a file location with file extension .rds.")
mo_source_destination <- path.expand(destination) mo_source_destination <- path.expand(destination)
stop_ifnot(interactive(), "this function can only be used in interactive mode, since it must ask for the user's permission to write a file to their file system.")
if (is.null(path) || path %in% c(FALSE, "")) { if (is.null(path) || path %in% c(FALSE, "")) {
AMR_env$mo_source <- NULL AMR_env$mo_source <- NULL
if (file.exists(mo_source_destination)) { if (file.exists(mo_source_destination)) {
@ -247,6 +246,12 @@ get_mo_source <- function(destination = getOption("AMR_mo_source", "~/mo_source.
} }
return(NULL) return(NULL)
} }
if (destination %unlike% "[.]rds$") {
current_ext <- regexpr("\\.([[:alnum:]]+)$", destination)
current_ext <- ifelse(current_ext > -1L, substring(destination, current_ext + 1L), "")
vowel <- ifelse(current_ext %like% "^[AEFHILMNORSX]", "n", "")
stop_("The AMR mo source must be an RDS file, not a", vowel, " ", toupper(current_ext), " file. If `\"", basename(destination), "\"` was meant as your input file, use `set_mo_source()` on this file. In any case, the option `AMR_mo_source` must be set to another path.")
}
if (is.null(AMR_env$mo_source)) { if (is.null(AMR_env$mo_source)) {
AMR_env$mo_source <- readRDS_AMR(path.expand(destination)) AMR_env$mo_source <- readRDS_AMR(path.expand(destination))
} }

View File

@ -117,7 +117,7 @@ scale_x_mic <- function(keep_operators = "edges", mic_range = NULL, drop = FALSE
meet_criteria(drop, allow_class = "logical", has_length = 1) meet_criteria(drop, allow_class = "logical", has_length = 1)
scale <- ggplot2::scale_x_discrete(drop = drop, ...) scale <- ggplot2::scale_x_discrete(drop = drop, ...)
scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) { scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) {
rescale_mic(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE) limit_mic_range(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE)
} }
scale scale
} }
@ -130,7 +130,7 @@ scale_y_mic <- function(keep_operators = "edges", mic_range = NULL, drop = FALSE
meet_criteria(drop, allow_class = "logical", has_length = 1) meet_criteria(drop, allow_class = "logical", has_length = 1)
scale <- ggplot2::scale_y_discrete(drop = drop, ...) scale <- ggplot2::scale_y_discrete(drop = drop, ...)
scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) { scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) {
rescale_mic(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE) limit_mic_range(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE)
} }
scale scale
} }
@ -143,7 +143,7 @@ scale_colour_mic <- function(keep_operators = "edges", mic_range = NULL, drop =
meet_criteria(drop, allow_class = "logical", has_length = 1) meet_criteria(drop, allow_class = "logical", has_length = 1)
scale <- ggplot2::scale_colour_discrete(drop = drop, ...) scale <- ggplot2::scale_colour_discrete(drop = drop, ...)
scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) { scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) {
rescale_mic(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE) limit_mic_range(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE)
} }
scale scale
} }
@ -156,7 +156,7 @@ scale_fill_mic <- function(keep_operators = "edges", mic_range = NULL, drop = FA
meet_criteria(drop, allow_class = "logical", has_length = 1) meet_criteria(drop, allow_class = "logical", has_length = 1)
scale <- ggplot2::scale_fill_discrete(drop = drop, ...) scale <- ggplot2::scale_fill_discrete(drop = drop, ...)
scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) { scale$transform <- function(x, keep_ops = keep_operators, mic_rng = mic_range) {
rescale_mic(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE) limit_mic_range(x = x, keep_operators = keep_ops, mic_range = mic_rng, as.mic = FALSE)
} }
scale scale
} }

175
R/sir.R
View File

@ -29,10 +29,13 @@
#' Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data #' Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data
#' #'
#' @description Interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI, or clean up existing SIR values. This transforms the input to a new class [`sir`], which is an ordered [factor] with levels `S < I < R`. #' @description Clean up existing SIR values, or interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI. [as.sir()] transforms the input to a new class [`sir`], which is an ordered [factor] with levels `S < I < R`.
#'
#' Currently breakpoints are available:
#' - For **clinical microbiology** from EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "human")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "human")$guideline)))` and CLSI `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "human")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "human")$guideline)))`;
#' - For **veterinary microbiology** from EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "animal")$guideline)))` and CLSI `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)))`;
#' - ECOFFs (Epidemiological cut-off values) from EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "ECOFF")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "ECOFF")$guideline)))` and CLSI `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "ECOFF")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "ECOFF")$guideline)))`.
#' #'
#' Currently available **breakpoint guidelines** are EUCAST `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)))` and CLSI `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)))`, and available **breakpoint types** are `r vector_and(clinical_breakpoints$type)`.
#'
#' All breakpoints used for interpretation are publicly available in the [clinical_breakpoints] data set. #' All breakpoints used for interpretation are publicly available in the [clinical_breakpoints] data set.
#' @rdname as.sir #' @rdname as.sir
#' @param x vector of values (for class [`mic`]: MIC values in mg/L, for class [`disk`]: a disk diffusion radius in millimetres) #' @param x vector of values (for class [`mic`]: MIC values in mg/L, for class [`disk`]: a disk diffusion radius in millimetres)
@ -45,16 +48,17 @@
#' @param add_intrinsic_resistance *(only useful when using a EUCAST guideline)* a [logical] to indicate whether intrinsic antibiotic resistance must also be considered for applicable bug-drug combinations, meaning that e.g. ampicillin will always return "R" in *Klebsiella* species. Determination is based on the [intrinsic_resistant] data set, that itself is based on `r format_eucast_version_nr(3.3)`. #' @param add_intrinsic_resistance *(only useful when using a EUCAST guideline)* a [logical] to indicate whether intrinsic antibiotic resistance must also be considered for applicable bug-drug combinations, meaning that e.g. ampicillin will always return "R" in *Klebsiella* species. Determination is based on the [intrinsic_resistant] data set, that itself is based on `r format_eucast_version_nr(3.3)`.
#' @param include_screening a [logical] to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`. Can also be set with the [package option][AMR-options] [`AMR_include_screening`][AMR-options]. #' @param include_screening a [logical] to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`. Can also be set with the [package option][AMR-options] [`AMR_include_screening`][AMR-options].
#' @param include_PKPD a [logical] to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`. Can also be set with the [package option][AMR-options] [`AMR_include_PKPD`][AMR-options]. #' @param include_PKPD a [logical] to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`. Can also be set with the [package option][AMR-options] [`AMR_include_PKPD`][AMR-options].
#' @param breakpoint_type the type of breakpoints to use, either `r vector_or(clinical_breakpoints$type)`. ECOFF stands for Epidemiological Cut-Off values. The default is `"human"`, which can also be set with the [package option][AMR-options] [`AMR_breakpoint_type`][AMR-options]. #' @param breakpoint_type the type of breakpoints to use, either `r vector_or(clinical_breakpoints$type)`. ECOFF stands for Epidemiological Cut-Off values. The default is `"human"`, which can also be set with the [package option][AMR-options] [`AMR_breakpoint_type`][AMR-options]. If `host` is set to values of veterinary species, this will automatically be set to `"animal"`.
#' @param host a vector (or column name) with [character]s to indicate the host. Only useful for veterinary breakpoints, as it requires `breakpoint_type = "animal"`. The values can be any text resembling the animal species, even in any of the `r length(LANGUAGES_SUPPORTED)` supported languages of this package. For foreign languages, be sure to set the language with [set_AMR_locale()] (though it will be automatically guessed based on the system language).
#' @param reference_data a [data.frame] to be used for interpretation, which defaults to the [clinical_breakpoints] data set. Changing this argument allows for using own interpretation guidelines. This argument must contain a data set that is equal in structure to the [clinical_breakpoints] data set (same column names and column types). Please note that the `guideline` argument will be ignored when `reference_data` is manually set. #' @param reference_data a [data.frame] to be used for interpretation, which defaults to the [clinical_breakpoints] data set. Changing this argument allows for using own interpretation guidelines. This argument must contain a data set that is equal in structure to the [clinical_breakpoints] data set (same column names and column types). Please note that the `guideline` argument will be ignored when `reference_data` is manually set.
#' @param threshold maximum fraction of invalid antimicrobial interpretations of `x`, see *Examples* #' @param threshold maximum fraction of invalid antimicrobial interpretations of `x`, see *Examples*
#' @param ... for using on a [data.frame]: names of columns to apply [as.sir()] on (supports tidy selection such as `column1:column4`). Otherwise: arguments passed on to methods. #' @param ... for using on a [data.frame]: names of columns to apply [as.sir()] on (supports tidy selection such as `column1:column4`). Otherwise: arguments passed on to methods.
#' @details #' @details
#' *Note: The clinical breakpoints in this package were validated through and imported from [WHONET](https://whonet.org) and the public use of this `AMR` package has been endorsed by CLSI and EUCAST, please see [clinical_breakpoints] for more information.* #' *Note: The clinical breakpoints in this package were validated through, and imported from, [WHONET](https://whonet.org). The public use of this `AMR` package has been endorsed by both CLSI and EUCAST. See [clinical_breakpoints] for more information.*
#' #'
#' ### How it Works #' ### How it Works
#' #'
#' The [as.sir()] function works in four ways: #' The [as.sir()] function can work in four ways:
#' #'
#' 1. For **cleaning raw / untransformed data**. The data will be cleaned to only contain values S, I and R and will try its best to determine this with some intelligence. For example, mixed values with SIR interpretations and MIC values such as `"<0.25; S"` will be coerced to `"S"`. Combined interpretations for multiple test methods (as seen in laboratory records) such as `"S; S"` will be coerced to `"S"`, but a value like `"S; I"` will return `NA` with a warning that the input is unclear. #' 1. For **cleaning raw / untransformed data**. The data will be cleaned to only contain values S, I and R and will try its best to determine this with some intelligence. For example, mixed values with SIR interpretations and MIC values such as `"<0.25; S"` will be coerced to `"S"`. Combined interpretations for multiple test methods (as seen in laboratory records) such as `"S; S"` will be coerced to `"S"`, but a value like `"S; I"` will return `NA` with a warning that the input is unclear.
#' #'
@ -63,6 +67,9 @@
#' ``` #' ```
#' your_data %>% mutate_if(is.mic, as.sir) #' your_data %>% mutate_if(is.mic, as.sir)
#' your_data %>% mutate(across(where(is.mic), as.sir)) #' your_data %>% mutate(across(where(is.mic), as.sir))
#'
#' # for veterinary breakpoints, also set `host`:
#' your_data %>% mutate_if(is.mic, as.sir, host = "column_with_animal_hosts", guideline = "CLSI")
#' ``` #' ```
#' * Operators like "<=" will be stripped before interpretation. When using `conserve_capped_values = TRUE`, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (`conserve_capped_values = FALSE`) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". #' * Operators like "<=" will be stripped before interpretation. When using `conserve_capped_values = TRUE`, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (`conserve_capped_values = FALSE`) considers ">2" to be lower than ">=4" and might in this case return "S" or "I".
#' 3. For **interpreting disk diffusion diameters** according to EUCAST or CLSI. You must clean your disk zones first using [as.disk()], that also gives your columns the new data class [`disk`]. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the `mo` argument. #' 3. For **interpreting disk diffusion diameters** according to EUCAST or CLSI. You must clean your disk zones first using [as.disk()], that also gives your columns the new data class [`disk`]. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the `mo` argument.
@ -70,6 +77,9 @@
#' ``` #' ```
#' your_data %>% mutate_if(is.disk, as.sir) #' your_data %>% mutate_if(is.disk, as.sir)
#' your_data %>% mutate(across(where(is.disk), as.sir)) #' your_data %>% mutate(across(where(is.disk), as.sir))
#'
#' # for veterinary breakpoints, also set `host`:
#' your_data %>% mutate_if(is.disk, as.sir, host = "column_with_animal_hosts", guideline = "CLSI")
#' ``` #' ```
#' 4. For **interpreting a complete data set**, with automatic determination of MIC values, disk diffusion diameters, microorganism names or codes, and antimicrobial test results. This is done very simply by running `as.sir(your_data)`. #' 4. For **interpreting a complete data set**, with automatic determination of MIC values, disk diffusion diameters, microorganism names or codes, and antimicrobial test results. This is done very simply by running `as.sir(your_data)`.
#' #'
@ -77,7 +87,7 @@
#' #'
#' ### Supported Guidelines #' ### Supported Guidelines
#' #'
#' For interpreting MIC values as well as disk diffusion diameters, currently implemented guidelines are EUCAST (`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)))`) and CLSI (`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)))`). #' For interpreting MIC values as well as disk diffusion diameters, currently implemented guidelines are for **clinical microbiology**: EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "human")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "human")$guideline)))` and CLSI `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "human")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI" & type == "human")$guideline)))`, and for **veterinary microbiology**: EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "animal")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST" & type == "animal")$guideline)))` and CLSI `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)))`.
#' #'
#' Thus, the `guideline` argument must be set to e.g., ``r paste0('"', subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline[1], '"')`` or ``r paste0('"', subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline[1], '"')``. By simply using `"EUCAST"` (the default) or `"CLSI"` as input, the latest included version of that guideline will automatically be selected. You can set your own data set using the `reference_data` argument. The `guideline` argument will then be ignored. #' Thus, the `guideline` argument must be set to e.g., ``r paste0('"', subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline[1], '"')`` or ``r paste0('"', subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline[1], '"')``. By simply using `"EUCAST"` (the default) or `"CLSI"` as input, the latest included version of that guideline will automatically be selected. You can set your own data set using the `reference_data` argument. The `guideline` argument will then be ignored.
#' #'
@ -90,6 +100,13 @@
#' # or to reset: #' # or to reset:
#' options(AMR_guideline = NULL) #' options(AMR_guideline = NULL)
#' ``` #' ```
#'
#' For veterinary guidelines, these might be the best options:
#'
#' ```
#' options(AMR_guideline = "CLSI")
#' options(AMR_breakpoint_type = "animal")
#' ```
#' #'
#' ### After Interpretation #' ### After Interpretation
#' #'
@ -124,9 +141,10 @@
#' @source #' @source
#' For interpretations of minimum inhibitory concentration (MIC) values and disk diffusion diameters: #' For interpretations of minimum inhibitory concentration (MIC) values and disk diffusion diameters:
#' #'
#' - **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). <https://clsi.org/standards/products/microbiology/documents/m39/>. #' - **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). <https://clsi.org/standards/products/microbiology/documents/m39/>.
#' - **M100 Performance Standard for Antimicrobial Susceptibility Testing**, `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). <https://clsi.org/standards/products/microbiology/documents/m100/>. #' - **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). <https://clsi.org/standards/products/microbiology/documents/m100/>.
#' - **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). <https://www.eucast.org/clinical_breakpoints>. #' - **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). <https://clsi.org/standards/products/veterinary-medicine/documents/vet01//>.
#' - **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). <https://www.eucast.org/clinical_breakpoints>.
#' @inheritSection AMR Reference Data Publicly Available #' @inheritSection AMR Reference Data Publicly Available
#' @examples #' @examples
#' example_isolates #' example_isolates
@ -226,6 +244,7 @@ as.sir <- function(x, ...) {
#' @rdname as.sir #' @rdname as.sir
#' @details `NA_sir_` is a missing value of the new `sir` class, analogous to e.g. base \R's [`NA_character_`][base::NA]. #' @details `NA_sir_` is a missing value of the new `sir` class, analogous to e.g. base \R's [`NA_character_`][base::NA].
#' @format NULL
#' @export #' @export
NA_sir_ <- set_clean_class(factor(NA_character_, levels = c("S", "I", "R"), ordered = TRUE), NA_sir_ <- set_clean_class(factor(NA_character_, levels = c("S", "I", "R"), ordered = TRUE),
new_class = c("sir", "ordered", "factor") new_class = c("sir", "ordered", "factor")
@ -429,6 +448,7 @@ as.sir.mic <- function(x,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), breakpoint_type = getOption("AMR_breakpoint_type", "human"),
host = NULL,
...) { ...) {
as_sir_method( as_sir_method(
method_short = "mic", method_short = "mic",
@ -444,6 +464,7 @@ as.sir.mic <- function(x,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type, breakpoint_type = breakpoint_type,
host = host,
... ...
) )
} }
@ -460,6 +481,7 @@ as.sir.disk <- function(x,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), breakpoint_type = getOption("AMR_breakpoint_type", "human"),
host = NULL,
...) { ...) {
as_sir_method( as_sir_method(
method_short = "disk", method_short = "disk",
@ -475,6 +497,7 @@ as.sir.disk <- function(x,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type, breakpoint_type = breakpoint_type,
host = NULL,
... ...
) )
} }
@ -491,7 +514,8 @@ as.sir.data.frame <- function(x,
reference_data = AMR::clinical_breakpoints, reference_data = AMR::clinical_breakpoints,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human")) { breakpoint_type = getOption("AMR_breakpoint_type", "human"),
host = NULL) {
meet_criteria(x, allow_class = "data.frame") # will also check for dimensions > 0 meet_criteria(x, allow_class = "data.frame") # will also check for dimensions > 0
meet_criteria(col_mo, allow_class = "character", is_in = colnames(x), allow_NULL = TRUE) meet_criteria(col_mo, allow_class = "character", is_in = colnames(x), allow_NULL = TRUE)
meet_criteria(guideline, allow_class = "character", has_length = 1) meet_criteria(guideline, allow_class = "character", has_length = 1)
@ -502,7 +526,7 @@ as.sir.data.frame <- function(x,
meet_criteria(include_screening, allow_class = "logical", has_length = 1) meet_criteria(include_screening, allow_class = "logical", has_length = 1)
meet_criteria(include_PKPD, allow_class = "logical", has_length = 1) meet_criteria(include_PKPD, allow_class = "logical", has_length = 1)
meet_criteria(breakpoint_type, allow_class = "character", is_in = reference_data$type, has_length = 1) meet_criteria(breakpoint_type, allow_class = "character", is_in = reference_data$type, has_length = 1)
meet_criteria(host, allow_class = "character", allow_NULL = TRUE, allow_NA = TRUE)
x.bak <- x x.bak <- x
for (i in seq_len(ncol(x))) { for (i in seq_len(ncol(x))) {
# don't keep factors, overwriting them is hard # don't keep factors, overwriting them is hard
@ -516,11 +540,20 @@ as.sir.data.frame <- function(x,
if (is.null(col_mo)) { if (is.null(col_mo)) {
col_mo <- search_type_in_df(x = x, type = "mo", info = FALSE) col_mo <- search_type_in_df(x = x, type = "mo", info = FALSE)
} }
# -- host
if (breakpoint_type == "animal") {
if (is.null(host)) {
host <- search_type_in_df(x = x, type = "host", add_col_prefix = FALSE)
} else if (length(host) == 1 && host %in% colnames(x)) {
host <- x[[host]]
}
}
# -- UTIs # -- UTIs
col_uti <- uti col_uti <- uti
if (is.null(col_uti)) { if (is.null(col_uti)) {
col_uti <- search_type_in_df(x = x, type = "uti") col_uti <- search_type_in_df(x = x, type = "uti", add_col_prefix = FALSE)
} }
if (!is.null(col_uti)) { if (!is.null(col_uti)) {
if (is.logical(col_uti)) { if (is.logical(col_uti)) {
@ -634,6 +667,7 @@ as.sir.data.frame <- function(x,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type, breakpoint_type = breakpoint_type,
host = host,
is_data.frame = TRUE is_data.frame = TRUE
) )
} else if (types[i] == "disk") { } else if (types[i] == "disk") {
@ -652,6 +686,7 @@ as.sir.data.frame <- function(x,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type, breakpoint_type = breakpoint_type,
host = host,
is_data.frame = TRUE is_data.frame = TRUE
) )
} else if (types[i] == "sir") { } else if (types[i] == "sir") {
@ -661,7 +696,7 @@ as.sir.data.frame <- function(x,
if (!all(x[, ab_cols[i], drop = TRUE] %in% c("S", "I", "R", NA), na.rm = TRUE)) { if (!all(x[, ab_cols[i], drop = TRUE] %in% c("S", "I", "R", NA), na.rm = TRUE)) {
show_message <- TRUE show_message <- TRUE
# only print message if values are not already clean # only print message if values are not already clean
message_("=> Cleaning values in column '", font_bold(ab), "' (", message_("Cleaning values in column '", font_bold(ab), "' (",
ifelse(ab_coerced != toupper(ab), paste0(ab_coerced, ", "), ""), ifelse(ab_coerced != toupper(ab), paste0(ab_coerced, ", "), ""),
ab_name(ab_coerced, tolower = TRUE), ")... ", ab_name(ab_coerced, tolower = TRUE), ")... ",
appendLF = FALSE, appendLF = FALSE,
@ -670,7 +705,7 @@ as.sir.data.frame <- function(x,
} else if (!is.sir(x.bak[, ab_cols[i], drop = TRUE])) { } else if (!is.sir(x.bak[, ab_cols[i], drop = TRUE])) {
show_message <- TRUE show_message <- TRUE
# only print message if class not already set # only print message if class not already set
message_("=> Assigning class 'sir' to already clean column '", font_bold(ab), "' (", message_("Assigning class 'sir' to already clean column '", font_bold(ab), "' (",
ifelse(ab_coerced != toupper(ab), paste0(ab_coerced, ", "), ""), ifelse(ab_coerced != toupper(ab), paste0(ab_coerced, ", "), ""),
ab_name(ab_coerced, tolower = TRUE, language = NULL), ")... ", ab_name(ab_coerced, tolower = TRUE, language = NULL), ")... ",
appendLF = FALSE, appendLF = FALSE,
@ -679,7 +714,7 @@ as.sir.data.frame <- function(x,
} }
x[, ab_cols[i]] <- as.sir.default(x = as.character(x[, ab_cols[i], drop = TRUE])) x[, ab_cols[i]] <- as.sir.default(x = as.character(x[, ab_cols[i], drop = TRUE]))
if (show_message == TRUE) { if (show_message == TRUE) {
message_(" OK.", add_fn = list(font_green), as_note = FALSE) message(font_green_bg(" OK "))
} }
} }
} }
@ -709,6 +744,20 @@ get_guideline <- function(guideline, reference_data) {
guideline_param guideline_param
} }
convert_host <- function(x, lang = get_AMR_locale()) {
x <- trimws2(tolower(x))
x_out <- rep(NA_character_, length(x))
# this order is based on: clinical_breakpoints |> filter(type == "animal") |> count(host, sort = TRUE)
x_out[is.na(x_out) & (x %like% "dog|canine" | x %like% translate_AMR("dog|dogs|canine", lang))] <- "dogs"
x_out[is.na(x_out) & (x %like% "cattle|bovine" | x %like% translate_AMR("cattle|bovine", lang))] <- "cattle"
x_out[is.na(x_out) & (x %like% "swine|suida(e)?" | x %like% translate_AMR("swine|swines", lang))] <- "swine"
x_out[is.na(x_out) & (x %like% "cat|feline" | x %like% translate_AMR("cat|cats|feline", lang))] <- "cats"
x_out[is.na(x_out) & (x %like% "horse|equine" | x %like% translate_AMR("horse|horses|equine", lang))] <- "horse"
x_out[is.na(x_out) & (x %like% "aqua|fish" | x %like% translate_AMR("aquatic|fish", lang))] <- "aquatic"
x_out[is.na(x_out) & (x %like% "bird|chicken|poultry|avia" | x %like% translate_AMR("bird|birds|poultry", lang))] <- "poultry"
x_out
}
as_sir_method <- function(method_short, as_sir_method <- function(method_short,
method_long, method_long,
x, x,
@ -722,6 +771,7 @@ as_sir_method <- function(method_short,
include_screening, include_screening,
include_PKPD, include_PKPD,
breakpoint_type, breakpoint_type,
host,
...) { ...) {
meet_criteria(x, allow_NA = TRUE, .call_depth = -2) meet_criteria(x, allow_NA = TRUE, .call_depth = -2)
meet_criteria(mo, allow_class = c("mo", "character"), allow_NULL = TRUE, .call_depth = -2) meet_criteria(mo, allow_class = c("mo", "character"), allow_NULL = TRUE, .call_depth = -2)
@ -735,11 +785,43 @@ as_sir_method <- function(method_short,
meet_criteria(include_PKPD, allow_class = "logical", has_length = 1, .call_depth = -2) meet_criteria(include_PKPD, allow_class = "logical", has_length = 1, .call_depth = -2)
check_reference_data(reference_data, .call_depth = -2) check_reference_data(reference_data, .call_depth = -2)
meet_criteria(breakpoint_type, allow_class = "character", is_in = reference_data$type, has_length = 1, .call_depth = -2) meet_criteria(breakpoint_type, allow_class = "character", is_in = reference_data$type, has_length = 1, .call_depth = -2)
meet_criteria(host, allow_class = "character", allow_NULL = TRUE, allow_NA = TRUE, .call_depth = -2)
# backward compatibilty
dots <- list(...)
dots <- dots[which(!names(dots) %in% c("warn", "mo.bak", "is_data.frame"))]
if (length(dots) != 0) {
warning_("These arguments in `as.sir()` are no longer used: ", vector_and(names(dots), quotes = "`"), ".", call = FALSE)
}
guideline_coerced <- get_guideline(guideline, reference_data) guideline_coerced <- get_guideline(guideline, reference_data)
if (breakpoint_type == "animal") {
if (is.null(host)) {
host <- AMR_env$host_preferred_order[1]
if (message_not_thrown_before("as.sir", "host_missing")) {
message_("Animal hosts not set in `host`, assuming `host = \"", host, "\"`, since these have the highest breakpoint availability.\n\n")
}
}
} else {
if (!is.null(host) && !all(toupper(host) %in% c("HUMAN", "ECOFF"))) {
if (message_not_thrown_before("as.sir", "assumed_breakpoint_animal")) {
message_("Assuming `breakpoint_type = \"animal\"`, since `host` is set.", ifelse(guideline_coerced %like% "EUCAST", " Do you also need to set `guideline = \"CLSI\"`?", ""), "\n\n")
}
breakpoint_type <- "animal"
} else {
host <- NA_character_
}
}
host <- convert_host(host)
host <- tolower(host)
host[host == "ecoff"] <- "ECOFF"
if (message_not_thrown_before("as.sir", "sir_interpretation_history")) { if (message_not_thrown_before("as.sir", "sir_interpretation_history")) {
message_("Run `sir_interpretation_history()` afterwards to retrieve a logbook with all the details of the breakpoint interpretations. Note that some microorganisms might not have breakpoints for each antimicrobial drug in ", guideline_coerced, ".\n\n") message_("Run `sir_interpretation_history()` afterwards to retrieve a logbook with all the details of the breakpoint interpretations. Note that some ", ifelse(breakpoint_type == "animal", "animal hosts and ", ""), "microorganisms might not have breakpoints for each antimicrobial drug in ", guideline_coerced, ".\n\n")
}
if (breakpoint_type == "animal" && message_not_thrown_before("as.sir", "host_preferred_order")) {
message_("Please note that in the absence of specific veterinary breakpoints for certain animal hosts, breakpoints for dogs, cattle, swine, cats, horse, aquatic, and poultry, in that order, are used as substitutes.\n\n")
} }
# for dplyr's across() # for dplyr's across()
@ -812,7 +894,9 @@ as_sir_method <- function(method_short,
if (length(uti) == 1) { if (length(uti) == 1) {
uti <- rep(uti, length(x)) uti <- rep(uti, length(x))
} }
if (length(host) == 1) {
host <- rep(host, length(x))
}
if (isTRUE(add_intrinsic_resistance) && guideline_coerced %unlike% "EUCAST") { if (isTRUE(add_intrinsic_resistance) && guideline_coerced %unlike% "EUCAST") {
if (message_not_thrown_before("as.sir", "intrinsic")) { if (message_not_thrown_before("as.sir", "intrinsic")) {
warning_("in `as.sir()`: using 'add_intrinsic_resistance' is only useful when using EUCAST guidelines, since the rules for intrinsic resistance are based on EUCAST.") warning_("in `as.sir()`: using 'add_intrinsic_resistance' is only useful when using EUCAST guidelines, since the rules for intrinsic resistance are based on EUCAST.")
@ -865,6 +949,7 @@ as_sir_method <- function(method_short,
mo = mo, mo = mo,
result = NA_sir_, result = NA_sir_,
uti = uti, uti = uti,
host = host,
stringsAsFactors = FALSE stringsAsFactors = FALSE
) )
if (method == "mic") { if (method == "mic") {
@ -874,7 +959,7 @@ as_sir_method <- function(method_short,
# when as.sir.disk is called directly # when as.sir.disk is called directly
df$values <- as.disk(df$values) df$values <- as.disk(df$values)
} }
df_unique <- unique(df[ , c("mo", "uti"), drop = FALSE]) df_unique <- unique(df[ , c("mo", "uti", "host"), drop = FALSE])
rise_warning <- FALSE rise_warning <- FALSE
rise_note <- FALSE rise_note <- FALSE
@ -913,7 +998,7 @@ as_sir_method <- function(method_short,
# apparently no breakpoints found # apparently no breakpoints found
message( message(
paste0(font_rose_bg(" WARNING "), "\n"), paste0(font_rose_bg(" WARNING "), "\n"),
font_black(paste0(" ", AMR_env$bullet_icon, " No ", method_coerced, " breakpoints available for ", font_black(paste0(" ", AMR_env$bullet_icon, " No ", guideline_coerced, " ", method_coerced, " breakpoints available for ",
suppressMessages(suppressWarnings(ab_name(ab_coerced, language = NULL, tolower = TRUE))), suppressMessages(suppressWarnings(ab_name(ab_coerced, language = NULL, tolower = TRUE))),
" (", ab_coerced, ")."))) " (", ab_coerced, ").")))
@ -930,7 +1015,7 @@ as_sir_method <- function(method_short,
has_progress_bar <- !is.null(import_fn("progress_bar", "progress", error_on_fail = FALSE)) && nrow(df_unique) >= 10 has_progress_bar <- !is.null(import_fn("progress_bar", "progress", error_on_fail = FALSE)) && nrow(df_unique) >= 10
on.exit(close(p)) on.exit(close(p))
# run the rules # run the rules (df_unique is a row combination per mo/ab/uti/host)
for (i in seq_len(nrow(df_unique))) { for (i in seq_len(nrow(df_unique))) {
p$tick() p$tick()
mo_current <- df_unique[i, "mo", drop = TRUE] mo_current <- df_unique[i, "mo", drop = TRUE]
@ -967,9 +1052,9 @@ as_sir_method <- function(method_short,
suppressMessages(suppressWarnings(ab_name(ab_coerced, language = NULL, tolower = TRUE))), suppressMessages(suppressWarnings(ab_name(ab_coerced, language = NULL, tolower = TRUE))),
" (", ab_coerced, ")" " (", ab_coerced, ")"
) )
# gather all available breakpoints for current MO and sort on taxonomic rank
# (this will prefer species breakpoints over order breakpoints) # gather all available breakpoints for current MO
breakpoints_current <- breakpoints %pm>% breakpoints_current <- breakpoints %pm>%
subset(mo %in% c( subset(mo %in% c(
mo_current, mo_current_genus, mo_current_family, mo_current, mo_current_genus, mo_current_family,
@ -977,23 +1062,45 @@ as_sir_method <- function(method_short,
mo_current_species_group, mo_current_species_group,
mo_current_other mo_current_other
)) ))
# set the host index according to most available breakpoints (see R/zzz.R where this is set in the pkg environment)
breakpoints_current$host_index <- match(breakpoints_current$host, c("human", "ECOFF", AMR_env$host_preferred_order))
# sort on host and taxonomic rank
# (this will prefer species breakpoints over order breakpoints)
if (is.na(unique(uti_current))) { if (is.na(unique(uti_current))) {
breakpoints_current <- breakpoints_current %pm>% breakpoints_current <- breakpoints_current %pm>%
# this will put UTI = FALSE first, then UTI = TRUE, then UTI = NA # this will put UTI = FALSE first, then UTI = TRUE, then UTI = NA
pm_arrange(rank_index, uti) # 'uti' is a column in data set 'clinical_breakpoints' pm_arrange(host_index, rank_index, uti) # 'uti' is a column in data set 'clinical_breakpoints'
} else if (unique(uti_current) == TRUE) { } else if (unique(uti_current) == TRUE) {
breakpoints_current <- breakpoints_current %pm>% breakpoints_current <- breakpoints_current %pm>%
subset(uti == TRUE) %pm>% subset(uti == TRUE) %pm>%
# be as specific as possible (i.e. prefer species over genus): # be as specific as possible (i.e. prefer species over genus):
pm_arrange(rank_index) pm_arrange(host_index, rank_index)
} else if (unique(uti_current) == FALSE) { } else if (unique(uti_current) == FALSE) {
breakpoints_current <- breakpoints_current %pm>% breakpoints_current <- breakpoints_current %pm>%
subset(uti == FALSE) %pm>% subset(uti == FALSE) %pm>%
# be as specific as possible (i.e. prefer species over genus): # be as specific as possible (i.e. prefer species over genus):
pm_arrange(rank_index) pm_arrange(host_index, rank_index)
} }
if (NROW(breakpoints_current) == 0) {
# no note about missing breakpoints - it's already in the header before the interpretation starts
next
}
# veterinary host check
host_current <- unique(df_unique[i, "host", drop = TRUE])[1]
breakpoints_current$host_match <- breakpoints_current$host == host_current
if (breakpoint_type == "animal") {
if (any(breakpoints_current$host_match == TRUE, na.rm = TRUE)) {
breakpoints_current <- breakpoints_current %pm>%
subset(host_match == TRUE)
} else {
# no breakpoint found for this host, so sort on mostly available guidelines
msgs <- c(msgs, paste0("No ", guideline_coerced, " breakpoints for ", font_bold(host_current), " available for ", ab_formatted, " in ", mo_formatted, " - using ", font_bold(breakpoints_current$host[1]), " breakpoints instead."))
}
}
# throw notes for different body sites # throw notes for different body sites
site <- breakpoints_current[1L, "site", drop = FALSE] # this is the one we'll take site <- breakpoints_current[1L, "site", drop = FALSE] # this is the one we'll take
if (is.na(site)) { if (is.na(site)) {
@ -1007,15 +1114,12 @@ as_sir_method <- function(method_short,
rise_warning <- TRUE rise_warning <- TRUE
} else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && any(is.na(uti_current)) && all(c(TRUE, FALSE) %in% breakpoints_current$uti, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteUTI", mo_current, ab_coerced)) { } else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && any(is.na(uti_current)) && all(c(TRUE, FALSE) %in% breakpoints_current$uti, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteUTI", mo_current, ab_coerced)) {
# both UTI and Non-UTI breakpoints available # both UTI and Non-UTI breakpoints available
msgs <- c(msgs, paste0("Breakpoints for UTI ", font_underline("and"), " non-UTI available for ", ab_formatted, " in ", mo_formatted, " - assuming ", site, ". Use argument `uti` to set which isolates are from urine. See `?as.sir`.")) msgs <- c(msgs, paste0("Breakpoints for UTI ", font_bold("and"), " non-UTI available for ", ab_formatted, " in ", mo_formatted, " - assuming ", site, ". Use argument `uti` to set which isolates are from urine. See `?as.sir`."))
breakpoints_current <- breakpoints_current %pm>% breakpoints_current <- breakpoints_current %pm>%
pm_filter(uti == FALSE) pm_filter(uti == FALSE)
} else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && all(breakpoints_current$uti == FALSE, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteOther", mo_current, ab_coerced)) { } else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && all(breakpoints_current$uti == FALSE, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteOther", mo_current, ab_coerced)) {
# breakpoints for multiple body sites available # breakpoints for multiple body sites available
msgs <- c(msgs, paste0("Multiple breakpoints available for ", ab_formatted, " in ", mo_formatted, " - assuming ", site, ".")) msgs <- c(msgs, paste0("Multiple breakpoints available for ", ab_formatted, " in ", mo_formatted, " - assuming ", site, "."))
} else if (nrow(breakpoints_current) == 0) {
# # do not note - it's already in the header before the interpretation starts
next
} }
# first check if mo is intrinsic resistant # first check if mo is intrinsic resistant
@ -1076,6 +1180,7 @@ as_sir_method <- function(method_short,
method = rep(method_coerced, length(rows)), method = rep(method_coerced, length(rows)),
breakpoint_S_R = rep(paste0(breakpoints_current[, "breakpoint_S", drop = TRUE], "-", breakpoints_current[, "breakpoint_R", drop = TRUE]), length(rows)), breakpoint_S_R = rep(paste0(breakpoints_current[, "breakpoint_S", drop = TRUE], "-", breakpoints_current[, "breakpoint_R", drop = TRUE]), length(rows)),
guideline = rep(guideline_coerced, length(rows)), guideline = rep(guideline_coerced, length(rows)),
host = rep(breakpoints_current[, "host", drop = TRUE], length(rows)),
ref_table = rep(breakpoints_current[, "ref_tbl", drop = TRUE], length(rows)), ref_table = rep(breakpoints_current[, "ref_tbl", drop = TRUE], length(rows)),
uti = rep(breakpoints_current[, "uti", drop = TRUE], length(rows)), uti = rep(breakpoints_current[, "uti", drop = TRUE], length(rows)),
stringsAsFactors = FALSE stringsAsFactors = FALSE

Binary file not shown.

View File

@ -35,33 +35,33 @@
# see https://github.com/tidyverse/dplyr/issues/5955 why this is required # see https://github.com/tidyverse/dplyr/issues/5955 why this is required
# S3: ab_selector # S3: ab_selector
vec_ptype2.character.ab_selector <- function(x, y, ...) { vec_ptype2.ab_selector.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.ab_selector.character <- function(x, y, ...) { vec_ptype2.ab_selector.ab_selector <- function(x, y, ...) {
y x
} }
vec_cast.character.ab_selector <- function(x, to, ...) { vec_cast.character.ab_selector <- function(x, to, ...) {
unclass(x) unclass(x)
} }
# S3: ab_selector_any_all # S3: ab_selector_any_all
vec_ptype2.logical.ab_selector_any_all <- function(x, y, ...) { vec_ptype2.ab_selector_any_all.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.ab_selector_any_all.logical <- function(x, y, ...) { vec_ptype2.ab_selector_any_all.ab_selector_any_all <- function(x, y, ...) {
y x
} }
vec_cast.logical.ab_selector_any_all <- function(x, to, ...) { vec_cast.logical.ab_selector_any_all <- function(x, to, ...) {
unclass(x) unclass(x)
} }
# S3: ab # S3: ab
vec_ptype2.character.ab <- function(x, y, ...) { vec_ptype2.ab.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.ab.character <- function(x, y, ...) { vec_ptype2.ab.ab <- function(x, y, ...) {
y x
} }
vec_cast.character.ab <- function(x, to, ...) { vec_cast.character.ab <- function(x, to, ...) {
as.character(x) as.character(x)
@ -71,11 +71,11 @@ vec_cast.ab.character <- function(x, to, ...) {
} }
# S3: av # S3: av
vec_ptype2.character.av <- function(x, y, ...) { vec_ptype2.av.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.av.character <- function(x, y, ...) { vec_ptype2.av.av <- function(x, y, ...) {
y x
} }
vec_cast.character.av <- function(x, to, ...) { vec_cast.character.av <- function(x, to, ...) {
as.character(x) as.character(x)
@ -85,11 +85,11 @@ vec_cast.av.character <- function(x, to, ...) {
} }
# S3: mo # S3: mo
vec_ptype2.character.mo <- function(x, y, ...) { vec_ptype2.mo.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.mo.character <- function(x, y, ...) { vec_ptype2.mo.mo <- function(x, y, ...) {
y x
} }
vec_cast.character.mo <- function(x, to, ...) { vec_cast.character.mo <- function(x, to, ...) {
as.character(x) as.character(x)
@ -100,11 +100,11 @@ vec_cast.mo.character <- function(x, to, ...) {
} }
# S3: disk # S3: disk
vec_ptype2.integer.disk <- function(x, y, ...) { vec_ptype2.disk.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.disk.integer <- function(x, y, ...) { vec_ptype2.disk.disk <- function(x, y, ...) {
y x
} }
vec_cast.integer.disk <- function(x, to, ...) { vec_cast.integer.disk <- function(x, to, ...) {
unclass(x) unclass(x)
@ -126,28 +126,43 @@ vec_cast.disk.character <- function(x, to, ...) {
} }
# S3: mic # S3: mic
vec_ptype2.mic.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x
}
vec_ptype2.mic.mic <- function(x, y, ...) {
x
}
vec_cast.character.mic <- function(x, to, ...) { vec_cast.character.mic <- function(x, to, ...) {
as.character(x) as.character(x)
} }
vec_cast.double.mic <- function(x, to, ...) { vec_cast.double.mic <- function(x, to, ...) {
as.double(x) as.double(x)
} }
vec_cast.integer.mic <- function(x, to, ...) {
as.integer(x)
}
vec_cast.mic.double <- function(x, to, ...) { vec_cast.mic.double <- function(x, to, ...) {
as.mic(x) as.mic(x)
} }
vec_cast.mic.character <- function(x, to, ...) { vec_cast.mic.character <- function(x, to, ...) {
as.mic(x) as.mic(x)
} }
vec_cast.mic.integer <- function(x, to, ...) {
as.mic(x)
}
vec_math.mic <- function(.fn, x, ...) { vec_math.mic <- function(.fn, x, ...) {
.fn(as.double(x), ...) .fn(as.double(x), ...)
} }
vec_arith.mic <- function(op, x, y, ...) {
vctrs::vec_arith(op, as.double(x), as.double(y))
}
# S3: sir # S3: sir
vec_ptype2.character.sir <- function(x, y, ...) { vec_ptype2.sir.default <- function (x, y, ..., x_arg = "", y_arg = "") {
x x
} }
vec_ptype2.sir.character <- function(x, y, ...) { vec_ptype2.sir.sir <- function(x, y, ...) {
y x
} }
vec_cast.character.sir <- function(x, to, ...) { vec_cast.character.sir <- function(x, to, ...) {
as.character(x) as.character(x)

80
R/zzz.R
View File

@ -55,6 +55,7 @@ AMR_env$av_previously_coerced <- data.frame(
av = character(0), av = character(0),
stringsAsFactors = FALSE stringsAsFactors = FALSE
) )
AMR_env$host_preferred_order <- names(sort(table(AMR::clinical_breakpoints$host[!AMR::clinical_breakpoints$host %in% AMR::clinical_breakpoints$type]), decreasing = TRUE))
AMR_env$sir_interpretation_history <- data.frame( AMR_env$sir_interpretation_history <- data.frame(
datetime = Sys.time()[0], datetime = Sys.time()[0],
index = integer(0), index = integer(0),
@ -67,6 +68,7 @@ AMR_env$sir_interpretation_history <- data.frame(
method = character(0), method = character(0),
breakpoint_S_R = character(0), breakpoint_S_R = character(0),
guideline = character(0), guideline = character(0),
host = character(0),
ref_table = character(0), ref_table = character(0),
stringsAsFactors = FALSE stringsAsFactors = FALSE
) )
@ -130,32 +132,33 @@ if (pkg_is_available("cli")) {
s3_register("knitr::knit_print", "antibiogram") s3_register("knitr::knit_print", "antibiogram")
s3_register("knitr::knit_print", "formatted_bug_drug_combinations") s3_register("knitr::knit_print", "formatted_bug_drug_combinations")
# Support vctrs package for use in e.g. dplyr verbs # Support vctrs package for use in e.g. dplyr verbs
# NOTE 2024-02-22 this is the right way - it should be 2 S3 classes in the second argument
# S3: ab_selector # S3: ab_selector
s3_register("vctrs::vec_ptype2", "character.ab_selector") s3_register("vctrs::vec_ptype2", "ab_selector.default")
s3_register("vctrs::vec_ptype2", "ab_selector.character") s3_register("vctrs::vec_ptype2", "ab_selector.ab_selector")
s3_register("vctrs::vec_cast", "character.ab_selector") s3_register("vctrs::vec_cast", "character.ab_selector")
# S3: ab_selector_any_all # S3: ab_selector_any_all
s3_register("vctrs::vec_ptype2", "logical.ab_selector_any_all") s3_register("vctrs::vec_ptype2", "ab_selector_any_all.default")
s3_register("vctrs::vec_ptype2", "ab_selector_any_all.logical") s3_register("vctrs::vec_ptype2", "ab_selector_any_all.ab_selector_any_all")
s3_register("vctrs::vec_cast", "logical.ab_selector_any_all") s3_register("vctrs::vec_cast", "logical.ab_selector_any_all")
# S3: ab # S3: ab
s3_register("vctrs::vec_ptype2", "character.ab") s3_register("vctrs::vec_ptype2", "ab.default")
s3_register("vctrs::vec_ptype2", "ab.character") s3_register("vctrs::vec_ptype2", "ab.ab")
s3_register("vctrs::vec_cast", "character.ab") s3_register("vctrs::vec_cast", "character.ab")
s3_register("vctrs::vec_cast", "ab.character") s3_register("vctrs::vec_cast", "ab.character")
# S3: av # S3: av
s3_register("vctrs::vec_ptype2", "character.av") s3_register("vctrs::vec_ptype2", "av.default")
s3_register("vctrs::vec_ptype2", "av.character") s3_register("vctrs::vec_ptype2", "av.av")
s3_register("vctrs::vec_cast", "character.av") s3_register("vctrs::vec_cast", "character.av")
s3_register("vctrs::vec_cast", "av.character") s3_register("vctrs::vec_cast", "av.character")
# S3: mo # S3: mo
s3_register("vctrs::vec_ptype2", "character.mo") s3_register("vctrs::vec_ptype2", "mo.default")
s3_register("vctrs::vec_ptype2", "mo.character") s3_register("vctrs::vec_ptype2", "mo.mo")
s3_register("vctrs::vec_cast", "character.mo") s3_register("vctrs::vec_cast", "character.mo")
s3_register("vctrs::vec_cast", "mo.character") s3_register("vctrs::vec_cast", "mo.character")
# S3: disk # S3: disk
s3_register("vctrs::vec_ptype2", "integer.disk") s3_register("vctrs::vec_ptype2", "disk.default")
s3_register("vctrs::vec_ptype2", "disk.integer") s3_register("vctrs::vec_ptype2", "disk.disk")
s3_register("vctrs::vec_cast", "integer.disk") s3_register("vctrs::vec_cast", "integer.disk")
s3_register("vctrs::vec_cast", "disk.integer") s3_register("vctrs::vec_cast", "disk.integer")
s3_register("vctrs::vec_cast", "double.disk") s3_register("vctrs::vec_cast", "double.disk")
@ -163,14 +166,19 @@ if (pkg_is_available("cli")) {
s3_register("vctrs::vec_cast", "character.disk") s3_register("vctrs::vec_cast", "character.disk")
s3_register("vctrs::vec_cast", "disk.character") s3_register("vctrs::vec_cast", "disk.character")
# S3: mic # S3: mic
s3_register("vctrs::vec_ptype2", "mic.default")
s3_register("vctrs::vec_ptype2", "mic.mic")
s3_register("vctrs::vec_cast", "character.mic") s3_register("vctrs::vec_cast", "character.mic")
s3_register("vctrs::vec_cast", "double.mic") s3_register("vctrs::vec_cast", "double.mic")
s3_register("vctrs::vec_cast", "integer.mic")
s3_register("vctrs::vec_cast", "mic.character") s3_register("vctrs::vec_cast", "mic.character")
s3_register("vctrs::vec_cast", "mic.double") s3_register("vctrs::vec_cast", "mic.double")
s3_register("vctrs::vec_cast", "mic.integer")
s3_register("vctrs::vec_math", "mic") s3_register("vctrs::vec_math", "mic")
s3_register("vctrs::vec_arith", "mic")
# S3: sir # S3: sir
s3_register("vctrs::vec_ptype2", "character.sir") s3_register("vctrs::vec_ptype2", "sir.default")
s3_register("vctrs::vec_ptype2", "sir.character") s3_register("vctrs::vec_ptype2", "sir.sir")
s3_register("vctrs::vec_cast", "character.sir") s3_register("vctrs::vec_cast", "character.sir")
s3_register("vctrs::vec_cast", "sir.character") s3_register("vctrs::vec_cast", "sir.character")
@ -192,26 +200,34 @@ if (pkg_is_available("cli")) {
.onAttach <- function(lib, pkg) { .onAttach <- function(lib, pkg) {
# if custom ab option is available, load it # if custom ab option is available, load it
if (!is.null(getOption("AMR_custom_ab")) && file.exists(getOption("AMR_custom_ab", default = ""))) { if (!is.null(getOption("AMR_custom_ab")) && file.exists(getOption("AMR_custom_ab", default = ""))) {
packageStartupMessage("Adding custom antimicrobials from '", getOption("AMR_custom_ab"), "'...", appendLF = FALSE) if (getOption("AMR_custom_ab") %unlike% "[.]rds$") {
x <- readRDS_AMR(getOption("AMR_custom_ab")) packageStartupMessage("The file with custom antimicrobials must be an RDS file. Set the option `AMR_custom_ab` to another path.")
tryCatch( } else {
{ packageStartupMessage("Adding custom antimicrobials from '", getOption("AMR_custom_ab"), "'...", appendLF = FALSE)
suppressWarnings(suppressMessages(add_custom_antimicrobials(x))) x <- readRDS_AMR(getOption("AMR_custom_ab"))
packageStartupMessage("OK.") tryCatch(
}, {
error = function(e) packageStartupMessage("Failed: ", e$message) suppressWarnings(suppressMessages(add_custom_antimicrobials(x)))
) packageStartupMessage("OK.")
},
error = function(e) packageStartupMessage("Failed: ", e$message)
)
}
} }
# if custom mo option is available, load it # if custom mo option is available, load it
if (!is.null(getOption("AMR_custom_mo")) && file.exists(getOption("AMR_custom_mo", default = ""))) { if (!is.null(getOption("AMR_custom_mo")) && file.exists(getOption("AMR_custom_mo", default = ""))) {
packageStartupMessage("Adding custom microorganisms from '", getOption("AMR_custom_mo"), "'...", appendLF = FALSE) if (getOption("AMR_custom_mo") %unlike% "[.]rds$") {
x <- readRDS_AMR(getOption("AMR_custom_mo")) packageStartupMessage("The file with custom microorganisms must be an RDS file. Set the option `AMR_custom_mo` to another path.")
tryCatch( } else {
{ packageStartupMessage("Adding custom microorganisms from '", getOption("AMR_custom_mo"), "'...", appendLF = FALSE)
suppressWarnings(suppressMessages(add_custom_microorganisms(x))) x <- readRDS_AMR(getOption("AMR_custom_mo"))
packageStartupMessage("OK.") tryCatch(
}, {
error = function(e) packageStartupMessage("Failed: ", e$message) suppressWarnings(suppressMessages(add_custom_microorganisms(x)))
) packageStartupMessage("OK.")
},
error = function(e) packageStartupMessage("Failed: ", e$message)
)
}
} }
} }

3663
data-raw/AMR_vet.html Normal file

File diff suppressed because one or more lines are too long

71
data-raw/AMR_vet.qmd Normal file
View File

@ -0,0 +1,71 @@
---
title: "AMR Goes Vet"
author: "Jason, Matthew, Javier, Matthijs"
date: "2024-02-20"
format:
html:
embed-resources: true
---
## Import WHONET data set
```{r, message=FALSE, warning=FALSE}
library(dplyr)
library(readr)
library(tidyr)
library(janitor)
# WHONET version of 16th Feb 2024
whonet_breakpoints <- read_tsv("WHONET/Resources/Breakpoints.txt", na = c("", "NA", "-"),
show_col_types = FALSE, guess_max = Inf) %>%
filter(GUIDELINES %in% c("CLSI", "EUCAST"))
dim(whonet_breakpoints)
```
# EDA of Animal Breakpoints
```{r}
whonet_breakpoints |>
filter(BREAKPOINT_TYPE != "Human")
whonet_breakpoints |>
filter(BREAKPOINT_TYPE != "Human") |>
count(BREAKPOINT_TYPE)
whonet_breakpoints |>
filter(BREAKPOINT_TYPE == "Animal")
```
### Count of all animal breakpoints
```{r}
whonet_breakpoints |>
filter(BREAKPOINT_TYPE == "Animal") |>
count(YEAR, HOST, REFERENCE_TABLE = gsub("VET[0-9]+ ", "", REFERENCE_TABLE)) |>
pivot_wider(names_from = YEAR, values_from = n, values_fill = list(n = 0)) |>
arrange(HOST, REFERENCE_TABLE) |>
adorn_totals(name = "TOTAL")
```
### Cats only
```{r}
whonet_breakpoints |>
filter(HOST == "Cats", YEAR >= 2021) |>
select(GUIDELINES, YEAR, TEST_METHOD, ORGANISM_CODE, R, S) |>
mutate(MO_NAME = AMR::mo_shortname(ORGANISM_CODE), .before = R) |>
as.data.frame()
```
### Site of infection in cats (2023)
```{r}
whonet_breakpoints |>
filter(HOST == "Cats", YEAR == 2023) |>
mutate(MO = AMR::mo_shortname(ORGANISM_CODE),
AB = AMR::ab_name(WHONET_ABX_CODE),
SITE_OF_INFECTION = substr(SITE_OF_INFECTION, 1, 25)) |>
arrange(MO, AB) |>
select(MO, AB, SITE_OF_INFECTION) |>
as.data.frame()
```

View File

@ -157,20 +157,21 @@ MO_STREP_ABCG <- AMR::microorganisms$mo[which(AMR::microorganisms$genus == "Stre
MO_LANCEFIELD <- AMR::microorganisms$mo[which(AMR::microorganisms$mo %like% "^(B_STRPT_PYGN(_|$)|B_STRPT_AGLC(_|$)|B_STRPT_(DYSG|EQUI)(_|$)|B_STRPT_ANGN(_|$)|B_STRPT_(DYSG|CANS)(_|$)|B_STRPT_SNGN(_|$)|B_STRPT_SLVR(_|$))")] MO_LANCEFIELD <- AMR::microorganisms$mo[which(AMR::microorganisms$mo %like% "^(B_STRPT_PYGN(_|$)|B_STRPT_AGLC(_|$)|B_STRPT_(DYSG|EQUI)(_|$)|B_STRPT_ANGN(_|$)|B_STRPT_(DYSG|CANS)(_|$)|B_STRPT_SNGN(_|$)|B_STRPT_SLVR(_|$))")]
MO_PREVALENT_GENERA <- c( MO_PREVALENT_GENERA <- c(
"Absidia", "Acanthamoeba", "Acremonium", "Aedes", "Alternaria", "Amoeba", "Ancylostoma", "Angiostrongylus", "Absidia", "Acanthamoeba", "Acremonium", "Aedes", "Alternaria", "Amoeba", "Ancylostoma", "Angiostrongylus",
"Anisakis", "Anopheles", "Apophysomyces", "Aspergillus", "Aureobasidium", "Basidiobolus", "Beauveria", "Anisakis", "Anopheles", "Apophysomyces", "Arthroderma", "Aspergillus", "Aureobasidium", "Basidiobolus", "Beauveria",
"Blastocystis", "Blastomyces", "Candida", "Capillaria", "Chaetomium", "Chrysonilia", "Cladophialophora", "Blastocystis", "Blastomyces", "Candida", "Capillaria", "Chaetomium", "Chrysonilia", "Chrysosporium", "Cladophialophora",
"Cladosporium", "Conidiobolus", "Contracaecum", "Cordylobia", "Cryptococcus", "Curvularia", "Demodex", "Cladosporium", "Conidiobolus", "Contracaecum", "Cordylobia", "Cryptococcus", "Curvularia", "Demodex",
"Dermatobia", "Dientamoeba", "Diphyllobothrium", "Dirofilaria", "Echinostoma", "Entamoeba", "Enterobius", "Dermatobia", "Dientamoeba", "Diphyllobothrium", "Dirofilaria", "Echinostoma", "Entamoeba", "Enterobius",
"Exophiala", "Exserohilum", "Fasciola", "Fonsecaea", "Fusarium", "Giardia", "Haloarcula", "Halobacterium", "Exophiala", "Exserohilum", "Fasciola", "Fonsecaea", "Fusarium", "Geotrichum", "Giardia", "Haloarcula", "Halobacterium",
"Halococcus", "Hendersonula", "Heterophyes", "Histomonas", "Histoplasma", "Hymenolepis", "Hypomyces", "Halococcus", "Hendersonula", "Heterophyes", "Histomonas", "Histoplasma", "Hymenolepis", "Hypomyces",
"Hysterothylacium", "Leishmania", "Malassezia", "Malbranchea", "Metagonimus", "Meyerozyma", "Microsporidium", "Hysterothylacium", "Kloeckera", "Kodamaea", "Leishmania", "Lichtheimia", "Lodderomyces",
"Microsporum", "Mortierella", "Mucor", "Mycocentrospora", "Necator", "Nectria", "Ochroconis", "Oesophagostomum", "Malassezia", "Malbranchea", "Metagonimus", "Meyerozyma", "Microsporidium",
"Oidiodendron", "Opisthorchis", "Pediculus", "Penicillium", "Phlebotomus", "Phoma", "Pichia", "Piedraia", "Pithomyces", "Microsporum", "Millerozyma", "Mortierella", "Mucor", "Mycocentrospora", "Necator", "Nectria", "Ochroconis", "Oesophagostomum",
"Oidiodendron", "Opisthorchis", "Paecilomyces", "Pediculus", "Penicillium", "Phlebotomus", "Phoma", "Pichia", "Piedraia", "Pithomyces",
"Pityrosporum", "Pneumocystis", "Pseudallescheria", "Pseudoterranova", "Pulex", "Rhizomucor", "Rhizopus", "Pityrosporum", "Pneumocystis", "Pseudallescheria", "Pseudoterranova", "Pulex", "Rhizomucor", "Rhizopus",
"Rhodotorula", "Saccharomyces", "Sarcoptes", "Scolecobasidium", "Scopulariopsis", "Scytalidium", "Spirometra", "Rhodotorula", "Saccharomyces", "Saprochaete", "Sarcoptes", "Scedosporium", "Scolecobasidium", "Scopulariopsis", "Scytalidium", "Spirometra",
"Sporobolomyces", "Stachybotrys", "Strongyloides", "Syngamus", "Taenia", "Talaromyces", "Toxocara", "Trichinella", "Sporobolomyces", "Sporotrichum", "Stachybotrys", "Strongyloides", "Syngamus", "Taenia", "Talaromyces", "Toxocara", "Trichinella",
"Trichobilharzia", "Trichoderma", "Trichomonas", "Trichophyton", "Trichosporon", "Trichostrongylus", "Trichuris", "Trichobilharzia", "Trichoderma", "Trichomonas", "Trichophyton", "Trichosporon", "Trichostrongylus", "Trichuris",
"Tritirachium", "Trombicula", "Trypanosoma", "Tunga", "Wuchereria" "Tritirachium", "Trombicula", "Trypanosoma", "Tunga", "Verticillium", "Wuchereria"
) )
# antibiotic groups # antibiotic groups

View File

@ -1 +1 @@
3d8c509ec95d61889cae83af43b0e6b7 85e31c828b6f1795c8cb18b568f15c3e

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -8,19 +8,19 @@
"AMX" 33613 "Amoxicillin" "Beta-lactams/penicillins" "J01CA04" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "ac,amox,amx" "actimoxi,amoclen,amolin,amopen,amopenixin,amoxibiotic,amoxicaps,amoxicilina,amoxicillin,amoxicillin hydrate,amoxicilline,amoxicillinum,amoxiden,amoxil,amoxivet,amoxy,amoxycillin,amoxyke,anemolin,aspenil,atoksilin,biomox,bristamox,cemoxin,clamoxyl,damoxy,delacillin,demoksil,dispermox,efpenix,flemoxin,hiconcil,histocillin,hydroxyampicillin,ibiamox,imacillin,lamoxy,largopen,metafarma capsules,metifarma capsules,moksilin,moxacin,moxatag,ospamox,pamoxicillin,piramox,promoxil,remoxil,robamox,sawamox pm,tolodina,topramoxin,unicillin,utimox,vetramox" 1.5 "g" 3 "g" "101498-4,15-8,16-6,16365-9,17-4,18-2,18861-5,18862-3,19-0,20-8,21-6,22-4,25274-2,25310-4,3344-9,55614-2,55615-9,55616-7,6976-5,6977-3,80133-2" "AMX" 33613 "Amoxicillin" "Beta-lactams/penicillins" "J01CA04" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "ac,amox,amx" "actimoxi,amoclen,amolin,amopen,amopenixin,amoxibiotic,amoxicaps,amoxicilina,amoxicillin,amoxicillin hydrate,amoxicilline,amoxicillinum,amoxiden,amoxil,amoxivet,amoxy,amoxycillin,amoxyke,anemolin,aspenil,atoksilin,biomox,bristamox,cemoxin,clamoxyl,damoxy,delacillin,demoksil,dispermox,efpenix,flemoxin,hiconcil,histocillin,hydroxyampicillin,ibiamox,imacillin,lamoxy,largopen,metafarma capsules,metifarma capsules,moksilin,moxacin,moxatag,ospamox,pamoxicillin,piramox,promoxil,remoxil,robamox,sawamox pm,tolodina,topramoxin,unicillin,utimox,vetramox" 1.5 "g" 3 "g" "101498-4,15-8,16-6,16365-9,17-4,18-2,18861-5,18862-3,19-0,20-8,21-6,22-4,25274-2,25310-4,3344-9,55614-2,55615-9,55616-7,6976-5,6977-3,80133-2"
"AMC" 23665637 "Amoxicillin/clavulanic acid" "Beta-lactams/penicillins" "J01CR02" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "a/c,amcl,aml,aug,xl" "amocla,amoclan,amoclav,amoksiclav,amoxsiklav,amoxyclav,augmentan,augmentin,augmentin xr,augmentine,auspilic,clamentin,clamobit,clavamox,clavinex,clavoxilin plus,clavulin,clavumox,coamoxiclav,eumetinex,kmoxilin,spectramox,spektramox,synulox,viaclav,xiclav" 1.5 "g" 3 "g" "" "AMC" 23665637 "Amoxicillin/clavulanic acid" "Beta-lactams/penicillins" "J01CR02" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "a/c,amcl,aml,aug,xl" "amocla,amoclan,amoclav,amoksiclav,amoxsiklav,amoxyclav,augmentan,augmentin,augmentin xr,augmentine,auspilic,clamentin,clamobit,clavamox,clavinex,clavoxilin plus,clavulin,clavumox,coamoxiclav,eumetinex,kmoxilin,spectramox,spektramox,synulox,viaclav,xiclav" 1.5 "g" 3 "g" ""
"AXS" 465441 "Amoxicillin/sulbactam" "Beta-lactams/penicillins" "NA" "" "" "55614-2,55615-9,55616-7" "AXS" 465441 "Amoxicillin/sulbactam" "Beta-lactams/penicillins" "NA" "" "" "55614-2,55615-9,55616-7"
"AMB" 5280965 "Amphotericin B" "Antifungals/antimycotics" "A01AB04,A07AA07,G01AA03,J02AA01" "Antimycotics for systemic use" "Antibiotics" "amf,amfb,amph" "abelcet,abelecet,ambisome,amfotericina b,amphocin,amphomoronal,amphortericin b,amphotec,amphotericin,amphotericin b,amphotericine b,amphotericinum b,amphozone,anfotericine b,fungilin,fungisome,fungisone,fungizone,halizon" 40 "mg" 35 "mg" "16370-9,18863-1,23-2,24-0,25-7,26-5,3353-0,3354-8,40707-2,40757-7,49859-2,6978-1" "AMB" 5280965 "Amphotericin B" "Antifungals/antimycotics" "A01AB04,A07AA07,G01AA03,J02AA01" "Antimycotics for systemic use" "Antibiotics" "amf,amfb,amph" "abelcet,abelecet,ambisome,amfotericina b,amphocin,amphomoronal,amphortericin b,amphotec,amphotericin,amphotericin b,amphotericine b,amphotericinum b,amphozone,anfotericine b,fungilin,fungisome,fungisone,fungizone,halizon" 40 "mg" 210 "mg" "16370-9,18863-1,23-2,24-0,25-7,26-5,3353-0,3354-8,40707-2,40757-7,49859-2,6978-1"
"AMH" "Amphotericin B-high" "Aminoglycosides" "NA" "amfo b high,amhl,ampho b high,amphotericin high" "" "" "AMH" "Amphotericin B-high" "Aminoglycosides" "NA" "amfo b high,amhl,ampho b high,amphotericin high" "" ""
"AMP" 6249 "Ampicillin" "Beta-lactams/penicillins" "J01CA01,S01AA19" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "am,amp,ampi" "acillin,adobacillin,amblosin,amcill,amfipen,amfipen v,amipenix s,ampichel,ampicil,ampicilina,ampicillin,ampicillin a,ampicillin acid,ampicillin anhydrate,ampicillin anhydrous,ampicillin base,ampicillin hydrate,ampicillin sodium,ampicillina,ampicilline,ampicillinum,ampicin,ampifarm,ampikel,ampimed,ampipenin,ampiscel,ampisyn,ampivax,ampivet,amplacilina,amplin,amplipenyl,amplisom,amplital,anhydrous ampicillin,austrapen,binotal,bonapicillin,britacil,campicillin,copharcilin,delcillin,deripen,divercillin,doktacillin,duphacillin,grampenil,guicitrina,guicitrine,lifeampil,marcillin,morepen,norobrittin,nuvapen,olin kid,omnipen,orbicilina,pen a oral,pen ampil,penbristol,penbritin,penbritin paediatric,penbritin syrup,penbrock,penicline,penimic,pensyn,pentrex,pentrexl,pentrexyl,pentritin,pfizerpen a,polycillin,polyflex,ponecil,princillin,principen,qidamp,racenacillin,redicilin,rosampline,roscillin,semicillin,semicillin r,servicillin,sumipanto,synpenin,texcillin,tokiocillin,tolomol,totacillin,totalciclina,totapen,trifacilina,ukapen,ultrabion,ultrabron,vampen,viccillin,viccillin s,vidocillin,wypicil" 2 "g" 6 "g" "101477-8,101478-6,18864-9,18865-6,20374-5,21066-6,23618-2,27-3,28-1,29-9,30-7,31-5,32-3,33-1,3355-5,33562-0,33919-2,34-9,43883-8,43884-6,6979-9,6980-7,87604-5" "AMP" 6249 "Ampicillin" "Beta-lactams/penicillins" "J01CA01,S01AA19" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "am,amp,ampi" "acillin,adobacillin,amblosin,amcill,amfipen,amfipen v,amipenix s,ampichel,ampicil,ampicilina,ampicillin,ampicillin a,ampicillin acid,ampicillin anhydrate,ampicillin anhydrous,ampicillin base,ampicillin hydrate,ampicillin sodium,ampicillina,ampicilline,ampicillinum,ampicin,ampifarm,ampikel,ampimed,ampipenin,ampiscel,ampisyn,ampivax,ampivet,amplacilina,amplin,amplipenyl,amplisom,amplital,anhydrous ampicillin,austrapen,binotal,bonapicillin,britacil,campicillin,copharcilin,delcillin,deripen,divercillin,doktacillin,duphacillin,grampenil,guicitrina,guicitrine,lifeampil,marcillin,morepen,norobrittin,nuvapen,olin kid,omnipen,orbicilina,pen a oral,pen ampil,penbristol,penbritin,penbritin paediatric,penbritin syrup,penbrock,penicline,penimic,pensyn,pentrex,pentrexl,pentrexyl,pentritin,pfizerpen a,polycillin,polyflex,ponecil,princillin,principen,qidamp,racenacillin,redicilin,rosampline,roscillin,semicillin,semicillin r,servicillin,sumipanto,synpenin,texcillin,tokiocillin,tolomol,totacillin,totalciclina,totapen,trifacilina,ukapen,ultrabion,ultrabron,vampen,viccillin,viccillin s,vidocillin,wypicil" 2 "g" 6 "g" "101477-8,101478-6,18864-9,18865-6,20374-5,21066-6,23618-2,27-3,28-1,29-9,30-7,31-5,32-3,33-1,3355-5,33562-0,33919-2,34-9,43883-8,43884-6,6979-9,6980-7,87604-5"
"SAM" 119561 "Ampicillin/sulbactam" "Beta-lactams/penicillins" "J01CR01" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "a/s,ab,ams,amsu,apsu,sam" "sulacillin" 6 "g" "101478-6,18865-6,20374-5,23618-2,31-5,32-3,33-1,34-9,6980-7" "SAM" 119561 "Ampicillin/sulbactam" "Beta-lactams/penicillins" "J01CR01" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "a/s,ab,ams,amsu,apsu,sam" "sulacillin" 6 "g" "101478-6,18865-6,20374-5,23618-2,31-5,32-3,33-1,34-9,6980-7"
"AMR" 73341 "Amprolium" "Other antibacterials" "NA" "" "amprocidum,amprol,amprolio,amprolium,amprolium chloride,amprovine,thiacoccid" "" "AMR" 73341 "Amprolium" "Other antibacterials" "QP51BX02" "" "amprocidum,amprol,amprolio,amprolium,amprolium chloride,amprovine,thiacoccid" ""
"ANI" 166548 "Anidulafungin" "Antifungals/antimycotics" "J02AX06" "Antimycotics for systemic use" "Other antimycotics for systemic use" "anid" "anidulafungin,anidulafungina,anidulafungine,anidulafunginum,ecalta,eraxis" 0.1 "g" "55343-8,57095-2,58420-1,77162-6" "ANI" 166548 "Anidulafungin" "Antifungals/antimycotics" "J02AX06" "Antimycotics for systemic use" "Other antimycotics for systemic use" "anid" "anidulafungin,anidulafungina,anidulafungine,anidulafunginum,ecalta,eraxis" 0.1 "g" "55343-8,57095-2,58420-1,77162-6"
"APL" 6602341 "Apalcillin" "Beta-lactams/penicillins" "NA" "" "apalcilina,apalcillin,apalcilline,apalcillinum" "" "APL" 6602341 "Apalcillin" "Beta-lactams/penicillins" "NA" "" "apalcilina,apalcillin,apalcilline,apalcillinum" ""
"APR" 3081545 "Apramycin" "Aminoglycosides" "NA" "" "ambylan,apralan,apramicina,apramycin,apramycine,apramycinum,nebramycin ii" "23659-6,73652-0,73653-8" "APR" 3081545 "Apramycin" "Aminoglycosides" "QA07AA92,QJ01GB90,QJ51GB90" "" "ambylan,apralan,apramicina,apramycin,apramycine,apramycinum,nebramycin ii" "23659-6,73652-0,73653-8"
"ARB" 68682 "Arbekacin" "Aminoglycosides" "J01GB12" "" "arbekacin,arbekacina,arbekacine,arbekacini sulfas,arbekacinum,habekacin,haberacin" 0.2 "g" "32373-3,53818-1,54173-0" "ARB" 68682 "Arbekacin" "Aminoglycosides" "J01GB12" "" "arbekacin,arbekacina,arbekacine,arbekacini sulfas,arbekacinum,habekacin,haberacin" 0.2 "g" "32373-3,53818-1,54173-0"
"APX" 71961 "Aspoxicillin" "Beta-lactams/penicillins" "J01CA19" "" "aspoxicilina,aspoxicillan,aspoxicillin,aspoxicilline,aspoxicillinum" 4 "g" "" "APX" 71961 "Aspoxicillin" "Beta-lactams/penicillins" "J01CA19" "" "aspoxicilina,aspoxicillan,aspoxicillin,aspoxicilline,aspoxicillinum" 4 "g" ""
"AST" 5284517 "Astromicin" "Aminoglycosides" "NA" "" "astromicin,astromicin a,astromicina,astromicine,astromicinum,fortimicin,fortimicin a" "" "AST" 5284517 "Astromicin" "Aminoglycosides" "NA" "" "astromicin,astromicin a,astromicina,astromicine,astromicinum,fortimicin,fortimicin a" ""
"AVB" 9835049 "Avibactam" "Beta-lactams/penicillins" "NA" "" "avibactam,avibactam free acid,avibactamfreeacid" "" "AVB" 9835049 "Avibactam" "Beta-lactams/penicillins" "NA" "" "avibactam,avibactam free acid,avibactamfreeacid" ""
"AVI" 71674 "Avilamycin" "Other antibacterials" "NA" "" "avilamycin,avilamycina,avilamycine,avilamycinum,surmax" "35754-1,35755-8,35756-6,55619-1" "AVI" 71674 "Avilamycin" "Other antibacterials" "QA07AA95" "" "avilamycin,avilamycina,avilamycine,avilamycinum,surmax" "35754-1,35755-8,35756-6,55619-1"
"AVO" 16131159 "Avoparcin" "Glycopeptides" "NA" "" "avoparcin,avoparcina,avoparcine,avoparcinum,avotan" "" "AVO" 16131159 "Avoparcin" "Glycopeptides" "NA" "" "avoparcin,avoparcina,avoparcine,avoparcinum,avotan" ""
"AZD" 15574941 "Azidocillin" "Beta-lactams/penicillins" "J01CE04" "Beta-lactam antibacterials, penicillins" "Beta-lactamase sensitive penicillins" "" "azidocilina,azidocillin,azidocillina,azidocilline,azidocillinum" 1.5 "g" "" "AZD" 15574941 "Azidocillin" "Beta-lactams/penicillins" "J01CE04" "Beta-lactam antibacterials, penicillins" "Beta-lactamase sensitive penicillins" "" "azidocilina,azidocillin,azidocillina,azidocilline,azidocillinum" 1.5 "g" ""
"AZM" 447043 "Azithromycin" "Macrolides/lincosamides" "J01FA10,S01AA26" "Macrolides, lincosamides and streptogramins" "Macrolides" "az,azi,azit,azm" "aritromicina,aruzilina,azasite,azenil,azifast,azigram,azimakrol,azithramycine,azithrocin,azithromycin,azithromycine,azithromycinum,azitrocin,azitromax,azitromicina,azitromicine,azitromin,aziwin,aziwok,aztrin,azyter,azythromycin,durasite,hemomycin,macrozit,misultina,mixoterin,setron,sumamed,toraseptol,tromix,trozocina,trulimax,xithrone,zentavion,zithrax,zithromac,zithromax,zithromax iv,zithromycin,zitrim,zitromax,zitrotek,zmax sr,zythromax" 0.3 "g" 0.5 "g" "100043-9,16420-2,16421-0,18866-4,23612-5,25233-8,35-6,36-4,37-2,38-0,6981-5,89480-8" "AZM" 447043 "Azithromycin" "Macrolides/lincosamides" "J01FA10,S01AA26" "Macrolides, lincosamides and streptogramins" "Macrolides" "az,azi,azit,azm" "aritromicina,aruzilina,azasite,azenil,azifast,azigram,azimakrol,azithramycine,azithrocin,azithromycin,azithromycine,azithromycinum,azitrocin,azitromax,azitromicina,azitromicine,azitromin,aziwin,aziwok,aztrin,azyter,azythromycin,durasite,hemomycin,macrozit,misultina,mixoterin,setron,sumamed,toraseptol,tromix,trozocina,trulimax,xithrone,zentavion,zithrax,zithromac,zithromax,zithromax iv,zithromycin,zitrim,zitromax,zitrotek,zmax sr,zythromax" 0.3 "g" 0.5 "g" "100043-9,16420-2,16421-0,18866-4,23612-5,25233-8,35-6,36-4,37-2,38-0,6981-5,89480-8"
@ -30,7 +30,7 @@
"AZA" "Aztreonam/avibactam" "Beta-lactams/penicillins" "NA" "" "" "" "AZA" "Aztreonam/avibactam" "Beta-lactams/penicillins" "NA" "" "" ""
"ANC" "Aztreonam/nacubactam" "Beta-lactams/penicillins" "NA" "" "" "" "ANC" "Aztreonam/nacubactam" "Beta-lactams/penicillins" "NA" "" "" ""
"BAM" 441397 "Bacampicillin" "Beta-lactams/penicillins" "J01CA06" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "bacampicilina,bacampicillin,bacampicilline,bacampicillinum,penglobe" 1.2 "g" "18869-8,47-1,48-9,49-7,50-5,55620-9" "BAM" 441397 "Bacampicillin" "Beta-lactams/penicillins" "J01CA06" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "bacampicilina,bacampicillin,bacampicilline,bacampicillinum,penglobe" 1.2 "g" "18869-8,47-1,48-9,49-7,50-5,55620-9"
"BAC" 78358334 "Bacitracin" "Other antibacterials" "R02AB04,J01XX10" "baci" "fortracin,md bacitracin" "10868-8,16428-5,18870-6,6827-0,6983-1,87603-7" "BAC" 78358334 "Bacitracin" "Other antibacterials" "D06AX05,J01XX10,R02AB04,S01AA32" "baci" "fortracin,md bacitracin" "10868-8,16428-5,18870-6,6827-0,6983-1,87603-7"
"BDQ" 5388906 "Bedaquiline" "Other antibacterials" "J04AK05" "" "bedaquiline,sirturo" 86 "mg" "80637-2,88703-4,88704-2,94274-8,96107-8" "BDQ" 5388906 "Bedaquiline" "Other antibacterials" "J04AK05" "" "bedaquiline,sirturo" 86 "mg" "80637-2,88703-4,88704-2,94274-8,96107-8"
"BEK" 439318 "Bekanamycin" "Aminoglycosides" "J01GB13" "" "aminodeoxykanamycin,becanamicina,bekanamycin,bekanamycine,bekanamycinum,kanamycin b,klebcil,nebramycin v" 0.6 "g" "" "BEK" 439318 "Bekanamycin" "Aminoglycosides" "J01GB13" "" "aminodeoxykanamycin,becanamicina,bekanamycin,bekanamycine,bekanamycinum,kanamycin b,klebcil,nebramycin v" 0.6 "g" ""
"BNB" "Benzathine benzylpenicillin" "Beta-lactams/penicillins" "J01CE08" "Beta-lactam antibacterials, penicillins" "Beta-lactamase sensitive penicillins" "" "beacillin,cepacilina,extencilline,lentopenil,penidural,tardocillin" 3.6 "g" "" "BNB" "Benzathine benzylpenicillin" "Beta-lactams/penicillins" "J01CE08" "Beta-lactam antibacterials, penicillins" "Beta-lactamase sensitive penicillins" "" "beacillin,cepacilina,extencilline,lentopenil,penidural,tardocillin" 3.6 "g" ""
@ -75,10 +75,10 @@
"CPI" 5486182 "Cefetamet pivoxil" "Cephalosporins (3rd gen.)" "NA" "" "cefetamet pivoxyl,globocef" "" "CPI" 5486182 "Cefetamet pivoxil" "Cephalosporins (3rd gen.)" "NA" "" "cefetamet pivoxyl,globocef" ""
"CCL" 71719688 "Cefetecol" "Cephalosporins (4th gen.)" "NA" "cefcatacol" "cefetecol,cefetecol anhydrous" "" "CCL" 71719688 "Cefetecol" "Cephalosporins (4th gen.)" "NA" "cefcatacol" "cefetecol,cefetecol anhydrous" ""
"CZL" 193956 "Cefetrizole" "Cephalosporins (unclassified gen.)" "NA" "" "cefetrizole,cefetrizolum" "" "CZL" 193956 "Cefetrizole" "Cephalosporins (unclassified gen.)" "NA" "" "cefetrizole,cefetrizolum" ""
"FDC" 77843966 "Cefiderocol" "Other antibacterials" "J01DI04" "" "cefiderocol" "95767-0,99280-0,99503-5" "FDC" 77843966 "Cefiderocol" "Other antibacterials" "J01DI04" "" "cefiderocol" 6 "g" "95767-0,99280-0,99503-5"
"CFM" 5362065 "Cefixime" "Cephalosporins (3rd gen.)" "J01DD08" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cfe,cfix,cfxm,dcfm,fix,ix" "anhydrous cefixime,cefixim,cefixima,cefixime,cefixime anhydrous,cefixime hydrate,cefiximum,cefixoral,cefspan,cephoral,citropen,denvar,necopen,oroken,suprax,tricef,unixime" 0.4 "g" "16567-0,18880-5,25236-1,35766-5,79-4,80-2,81-0,82-8" "CFM" 5362065 "Cefixime" "Cephalosporins (3rd gen.)" "J01DD08" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cfe,cfix,cfxm,dcfm,fix,ix" "anhydrous cefixime,cefixim,cefixima,cefixime,cefixime anhydrous,cefixime hydrate,cefiximum,cefixoral,cefspan,cephoral,citropen,denvar,necopen,oroken,suprax,tricef,unixime" 0.4 "g" "16567-0,18880-5,25236-1,35766-5,79-4,80-2,81-0,82-8"
"CEO" "Cefixime/ornidazole" "Other antibacterials" "J01RA15" "Combinations of antibacterials" "Combinations of antibacterials" "" "" "" "CEO" "Cefixime/ornidazole" "Other antibacterials" "J01RA15" "Combinations of antibacterials" "Combinations of antibacterials" "" "" ""
"CMX" 9570757 "Cefmenoxime" "Cephalosporins (3rd gen.)" "J01DD05" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "" "bestron,cefmax,cefmenoxima,cefmenoxime,cefmenoximum" 2 "g" "32375-8,54174-8,54203-5,55641-5" "CMX" 9570757 "Cefmenoxime" "Cephalosporins (3rd gen.)" "J01DD05,S01AA31,S02AA18" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "" "bestron,cefmax,cefmenoxima,cefmenoxime,cefmenoximum" 2 "g" "32375-8,54174-8,54203-5,55641-5"
"CMZ" 42008 "Cefmetazole" "Cephalosporins (2nd gen.)" "J01DC09" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "" "cefmetazole,cefmetazolesodium,cefmetazolo,cefmetazolum" 4 "g" "11575-8,18881-3,25222-1,87-7,88-5,89-3,90-1" "CMZ" 42008 "Cefmetazole" "Cephalosporins (2nd gen.)" "J01DC09" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "" "cefmetazole,cefmetazolesodium,cefmetazolo,cefmetazolum" 4 "g" "11575-8,18881-3,25222-1,87-7,88-5,89-3,90-1"
"CNX" 71141 "Cefminox" "Other antibacterials" "J01DC12" "" "cefminox,cefminoxum" 4 "g" "54908-9" "CNX" 71141 "Cefminox" "Other antibacterials" "J01DC12" "" "cefminox,cefminoxum" 4 "g" "54908-9"
"DIZ" 5361871 "Cefodizime" "Cephalosporins (3rd gen.)" "J01DD09" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "" "cefodizima,cefodizime,cefodizime acid,cefodizime disodium,cefodizimum,cefodizme,diezime,modivid,neucef,timecef" 2 "g" "18882-1,6988-0,91-9,92-7,93-5,94-3" "DIZ" 5361871 "Cefodizime" "Cephalosporins (3rd gen.)" "J01DD09" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "" "cefodizima,cefodizime,cefodizime acid,cefodizime disodium,cefodizimum,cefodizme,diezime,modivid,neucef,timecef" 2 "g" "18882-1,6988-0,91-9,92-7,93-5,94-3"
@ -93,7 +93,7 @@
"CTT" 53025 "Cefotetan" "Cephalosporins (2nd gen.)" "J01DC05" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cftt,cn,cte,ctn,ctt,tans" "apacef,cefotan,cefotetan,cefotetan acid,cefotetan free acid,cefotetanum" 4 "g" "111-5,112-3,113-1,114-9,18887-0,25239-5,3447-0,41672-7,41673-5,41674-3,41729-5,6990-6" "CTT" 53025 "Cefotetan" "Cephalosporins (2nd gen.)" "J01DC05" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cftt,cn,cte,ctn,ctt,tans" "apacef,cefotan,cefotetan,cefotetan acid,cefotetan free acid,cefotetanum" 4 "g" "111-5,112-3,113-1,114-9,18887-0,25239-5,3447-0,41672-7,41673-5,41674-3,41729-5,6990-6"
"CTF" 43708 "Cefotiam" "Cephalosporins (2nd gen.)" "J01DC07" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "" "cefotiam,cefotiam?,cefotiamum,ceradolan,ceradon,haloapor" 1.2 "g" 4 "g" "32374-1,35772-3,35773-1,55645-6,55737-1,55738-9,55739-7,55740-5" "CTF" 43708 "Cefotiam" "Cephalosporins (2nd gen.)" "J01DC07" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "" "cefotiam,cefotiam?,cefotiamum,ceradolan,ceradon,haloapor" 1.2 "g" 4 "g" "32374-1,35772-3,35773-1,55645-6,55737-1,55738-9,55739-7,55740-5"
"CHE" 125846 "Cefotiam hexetil" "Cephalosporins (3rd gen.)" "NA" "" "cefotiam cilexetil,pansporin t" "55737-1,55738-9,55739-7,55740-5" "CHE" 125846 "Cefotiam hexetil" "Cephalosporins (3rd gen.)" "NA" "" "cefotiam cilexetil,pansporin t" "55737-1,55738-9,55739-7,55740-5"
"FOV" 9578573 "Cefovecin" "Cephalosporins (3rd gen.)" "NA" "" "cefovecin" "76147-8,87792-8" "FOV" 9578573 "Cefovecin" "Cephalosporins (3rd gen.)" "QJ01DD91" "" "cefovecin" "76147-8,87792-8"
"FOX" 441199 "Cefoxitin" "Cephalosporins (2nd gen.)" "J01DC01" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cfox,cfx,cfxt,cx,fox,fx" "cefoxitin,cefoxitina,cefoxitine,cefoxitinum,cefoxotin,cenomycin,cephoxitin,mefoxin,mefoxitin,rephoxitin" 6 "g" "101492-7,115-6,116-4,117-2,118-0,18888-8,25220-5,25240-3,25366-6,3448-8,41675-0,41676-8,41677-6,41730-3,6991-4" "FOX" 441199 "Cefoxitin" "Cephalosporins (2nd gen.)" "J01DC01" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cfox,cfx,cfxt,cx,fox,fx" "cefoxitin,cefoxitina,cefoxitine,cefoxitinum,cefoxotin,cenomycin,cephoxitin,mefoxin,mefoxitin,rephoxitin" 6 "g" "101492-7,115-6,116-4,117-2,118-0,18888-8,25220-5,25240-3,25366-6,3448-8,41675-0,41676-8,41677-6,41730-3,6991-4"
"FOX1" "Cefoxitin screening" "Cephalosporins (2nd gen.)" "NA" "cfsc" "" "" "FOX1" "Cefoxitin screening" "Cephalosporins (2nd gen.)" "NA" "cfsc" "" ""
"ZOP" 9571080 "Cefozopran" "Cephalosporins (4th gen.)" "J01DE03" "" "cefozopran" 4 "g" "100045-4,53820-7" "ZOP" 9571080 "Cefozopran" "Cephalosporins (4th gen.)" "J01DE03" "" "cefozopran" 4 "g" "100045-4,53820-7"
@ -104,7 +104,7 @@
"CPX" 6526396 "Cefpodoxime proxetil" "Cephalosporins (3rd gen.)" "NA" "" "cefodox,cefoprox,cefpodoxime proxetil,cepodem,orelox,orelox paed,otreon,podomexef,simplicef,vantin" "" "CPX" 6526396 "Cefpodoxime proxetil" "Cephalosporins (3rd gen.)" "NA" "" "cefodox,cefoprox,cefpodoxime proxetil,cepodem,orelox,orelox paed,otreon,podomexef,simplicef,vantin" ""
"CDC" "Cefpodoxime/clavulanic acid" "Cephalosporins (3rd gen.)" "NA" "cecl" "" "" "CDC" "Cefpodoxime/clavulanic acid" "Cephalosporins (3rd gen.)" "NA" "cecl" "" ""
"CPR" 5281006 "Cefprozil" "Cephalosporins (2nd gen.)" "J01DC10" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cpr,cpz,fp" "arzimol,brisoral,cefprozil,cefprozil anhydrous,cefprozil hydrate,cefprozilo,cefprozilum,cefzil,cronocef,procef,serozil" 1 "g" "123-0,124-8,125-5,126-3,18891-2,6994-8" "CPR" 5281006 "Cefprozil" "Cephalosporins (2nd gen.)" "J01DC10" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cpr,cpz,fp" "arzimol,brisoral,cefprozil,cefprozil anhydrous,cefprozil hydrate,cefprozilo,cefprozilum,cefzil,cronocef,procef,serozil" 1 "g" "123-0,124-8,125-5,126-3,18891-2,6994-8"
"CEQ" 5464355 "Cefquinome" "Cephalosporins (4th gen.)" "NA" "" "cefquinoma,cefquinome,cefquinomum,cobactan" "100046-2,76150-2" "CEQ" 5464355 "Cefquinome" "Cephalosporins (4th gen.)" "QG51AA07,QJ01DE90,QJ51DE90" "" "cefquinoma,cefquinome,cefquinomum,cobactan" "100046-2,76150-2"
"CRD" 5284529 "Cefroxadine" "Cephalosporins (1st gen.)" "J01DB11" "Other beta-lactam antibacterials" "First-generation cephalosporins" "" "cefroxadin,cefroxadine,cefroxadino,cefroxadinum,oraspor" 2.1 "g" "" "CRD" 5284529 "Cefroxadine" "Cephalosporins (1st gen.)" "J01DB11" "Other beta-lactam antibacterials" "First-generation cephalosporins" "" "cefroxadin,cefroxadine,cefroxadino,cefroxadinum,oraspor" 2.1 "g" ""
"CFS" 656575 "Cefsulodin" "Cephalosporins (3rd gen.)" "J01DD03" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cfsl,cfsu" "cefonomil,cefsulodin,cefsulodine,cefsulodino,cefsulodinum" 4 "g" "127-1,128-9,129-7,130-5,131-3,18892-0,25242-9,55647-2" "CFS" 656575 "Cefsulodin" "Cephalosporins (3rd gen.)" "J01DD03" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cfsl,cfsu" "cefonomil,cefsulodin,cefsulodine,cefsulodino,cefsulodinum" 4 "g" "127-1,128-9,129-7,130-5,131-3,18892-0,25242-9,55647-2"
"CSU" 68718 "Cefsumide" "Cephalosporins (unclassified gen.)" "NA" "" "cefsulmid,cefsumide,cefsumido,cefsumidum" "" "CSU" 68718 "Cefsumide" "Cephalosporins (unclassified gen.)" "NA" "" "cefsulmid,cefsumide,cefsumido,cefsumidum" ""
@ -117,12 +117,12 @@
"CPL" 5362114 "Cefteram pivoxil" "Cephalosporins (3rd gen.)" "NA" "" "cefteram pivoxil,cefterampivoxil,tomiron" "" "CPL" 5362114 "Cefteram pivoxil" "Cephalosporins (3rd gen.)" "NA" "" "cefteram pivoxil,cefterampivoxil,tomiron" ""
"CTL" 65755 "Ceftezole" "Cephalosporins (1st gen.)" "J01DB12" "Other beta-lactam antibacterials" "First-generation cephalosporins" "" "ceftezol,ceftezole,ceftezolo,ceftezolum,demethylcefazolin" 3 "g" "" "CTL" 65755 "Ceftezole" "Cephalosporins (1st gen.)" "J01DB12" "Other beta-lactam antibacterials" "First-generation cephalosporins" "" "ceftezol,ceftezole,ceftezolo,ceftezolum,demethylcefazolin" 3 "g" ""
"CTB" 5282242 "Ceftibuten" "Cephalosporins (3rd gen.)" "J01DD14" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cb,cfbu,ctb,tib" "ceftem,ceftibuten,ceftibuten dihydrate,ceftibuten hydrate,ceftibutene,ceftibuteno,ceftibutenum,ceftibutin,cephem,ceprifran,isocef,keimax" 0.4 "g" "35777-2,35778-0,35779-8,6996-3" "CTB" 5282242 "Ceftibuten" "Cephalosporins (3rd gen.)" "J01DD14" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cb,cfbu,ctb,tib" "ceftem,ceftibuten,ceftibuten dihydrate,ceftibuten hydrate,ceftibutene,ceftibuteno,ceftibutenum,ceftibutin,cephem,ceprifran,isocef,keimax" 0.4 "g" "35777-2,35778-0,35779-8,6996-3"
"TIO" 6328657 "Ceftiofur" "Cephalosporins (3rd gen.)" "NA" "" "ceftiofur,ceftiofurum,excede,excenel,naxcel" "23709-9,35780-6,35781-4,55652-2" "TIO" 6328657 "Ceftiofur" "Cephalosporins (3rd gen.)" "QJ01DD90,QJ51DD90" "" "ceftiofur,ceftiofurum,excede,excenel,naxcel" "23709-9,35780-6,35781-4,55652-2"
"CZX" 6533629 "Ceftizoxime" "Cephalosporins (3rd gen.)" "J01DD07" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cfzx,ctz,cz,czx,tiz,zox" "cefizox,ceftisomin,ceftix,ceftizoxima,ceftizoxime,ceftizoximum,epocelin,eposerin" 4 "g" "136-2,137-0,138-8,139-6,18894-6,20378-6,23622-4,25243-7,3450-4,6997-1" "CZX" 6533629 "Ceftizoxime" "Cephalosporins (3rd gen.)" "J01DD07" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "cfzx,ctz,cz,czx,tiz,zox" "cefizox,ceftisomin,ceftix,ceftizoxima,ceftizoxime,ceftizoximum,epocelin,eposerin" 4 "g" "136-2,137-0,138-8,139-6,18894-6,20378-6,23622-4,25243-7,3450-4,6997-1"
"CZP" 9578661 "Ceftizoxime alapivoxil" "Cephalosporins (3rd gen.)" "NA" "" "" "" "CZP" 9578661 "Ceftizoxime alapivoxil" "Cephalosporins (3rd gen.)" "NA" "" "" ""
"BPR" 135413542 "Ceftobiprole" "Cephalosporins (5th gen.)" "NA" "" "ceftobiprole" "43269-0,43270-8,43271-6,43272-4,85052-9" "BPR" 135413542 "Ceftobiprole" "Cephalosporins (5th gen.)" "NA" "" "ceftobiprole" "43269-0,43270-8,43271-6,43272-4,85052-9"
"CFM1" 135413544 "Ceftobiprole medocaril" "Cephalosporins (5th gen.)" "J01DI01" "Other beta-lactam antibacterials" "Other cephalosporins and penems" "" "" 1.5 "g" "" "CFM1" 135413544 "Ceftobiprole medocaril" "Cephalosporins (5th gen.)" "J01DI01" "Other beta-lactam antibacterials" "Other cephalosporins and penems" "" "" 1.5 "g" ""
"CZT" 86291594 "Ceftolozane/tazobactam" "Cephalosporins (5th gen.)" "J01DI54" "Other beta-lactam antibacterials" "Other cephalosporins and penems" "CEI" "zerbaxa" 3 "g" "101484-4,73602-5,73624-9,73647-0,87735-7" "CZT" 86291594 "Ceftolozane/tazobactam" "Cephalosporins (5th gen.)" "J01DI54" "Other beta-lactam antibacterials" "Other cephalosporins and penems" "cei" "zerbaxa" 3 "g" "101484-4,73602-5,73624-9,73647-0,87735-7"
"CRO" 5479530 "Ceftriaxone" "Cephalosporins (3rd gen.)" "J01DD04" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "axo,cax,cftr,cro,ctr,frx,tx" "biotrakson,cefatriaxone,cefatriaxone hydrate,ceftriaxon,ceftriaxona,ceftriaxone,ceftriaxone sodium,ceftriaxonum,ceftriazone,cephtriaxone,longacef,rocefin,rocephalin,rocephin,rocephine,rophex" 2 "g" "101485-1,140-4,141-2,142-0,143-8,18895-3,25244-5,25367-4,31140-7,31141-5,3451-2,41681-8,41682-6,41683-4,41732-9,50633-7,55190-3,6998-9,80957-4" "CRO" 5479530 "Ceftriaxone" "Cephalosporins (3rd gen.)" "J01DD04" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "axo,cax,cftr,cro,ctr,frx,tx" "biotrakson,cefatriaxone,cefatriaxone hydrate,ceftriaxon,ceftriaxona,ceftriaxone,ceftriaxone sodium,ceftriaxonum,ceftriazone,cephtriaxone,longacef,rocefin,rocephalin,rocephin,rocephine,rophex" 2 "g" "101485-1,140-4,141-2,142-0,143-8,18895-3,25244-5,25367-4,31140-7,31141-5,3451-2,41681-8,41682-6,41683-4,41732-9,50633-7,55190-3,6998-9,80957-4"
"CEB" "Ceftriaxone/beta-lactamase inhibitor" "Cephalosporins (3rd gen.)" "J01DD63" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "" "" 2 "g" "" "CEB" "Ceftriaxone/beta-lactamase inhibitor" "Cephalosporins (3rd gen.)" "J01DD63" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "" "" 2 "g" ""
"CXM" 5479529 "Cefuroxime" "Cephalosporins (2nd gen.)" "J01DC02,S01AA27" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cfrx,cfur,cfx,crm,cxm,fur,rox,xm" "biofuroksym,cefuril,cefuroxim,cefuroxima,cefuroxime,cefuroxime acid,cefuroximine,cefuroximo,cefuroximum,cephuroxime,kefurox,sharox,zinacef,zinacef danmark" 0.5 "g" 3 "g" "101503-1,144-6,145-3,146-1,147-9,18896-1,20460-2,25245-2,3452-0,35782-2,35783-0,51724-3,51774-8,55653-0,55654-8,6999-7,74699-0,80608-3,80617-4" "CXM" 5479529 "Cefuroxime" "Cephalosporins (2nd gen.)" "J01DC02,S01AA27" "Other beta-lactam antibacterials" "Second-generation cephalosporins" "cfrx,cfur,cfx,crm,cxm,fur,rox,xm" "biofuroksym,cefuril,cefuroxim,cefuroxima,cefuroxime,cefuroxime acid,cefuroximine,cefuroximo,cefuroximum,cephuroxime,kefurox,sharox,zinacef,zinacef danmark" 0.5 "g" 3 "g" "101503-1,144-6,145-3,146-1,147-9,18896-1,20460-2,25245-2,3452-0,35782-2,35783-0,51724-3,51774-8,55653-0,55654-8,6999-7,74699-0,80608-3,80617-4"
@ -154,32 +154,32 @@
"COP" "Colistin/polysorbate" "Other antibacterials" "NA" "" "" "" "COP" "Colistin/polysorbate" "Other antibacterials" "NA" "" "" ""
"CYC" 6234 "Cycloserine" "Oxazolidinones" "J04AB01" "Drugs for treatment of tuberculosis" "Antibiotics" "cycl" "cicloserina,closerin,closina,cyclorin,cycloserin,cycloserine,cycloserinum,farmiserina,micoserina,miroserina,miroseryn,novoserin,oxamicina,oxamycin,seromycin,tebemicina,tisomycin,wasserina" 0.75 "g" "16702-3,18914-2,212-1,213-9,214-7,215-4,23608-3,25207-2,25208-0,25209-8,25251-0,3519-6,55667-0" "CYC" 6234 "Cycloserine" "Oxazolidinones" "J04AB01" "Drugs for treatment of tuberculosis" "Antibiotics" "cycl" "cicloserina,closerin,closina,cyclorin,cycloserin,cycloserine,cycloserinum,farmiserina,micoserina,miroserina,miroseryn,novoserin,oxamicina,oxamycin,seromycin,tebemicina,tisomycin,wasserina" 0.75 "g" "16702-3,18914-2,212-1,213-9,214-7,215-4,23608-3,25207-2,25208-0,25209-8,25251-0,3519-6,55667-0"
"DAL" 23724878 "Dalbavancin" "Glycopeptides" "J01XA04" "Other antibacterials" "Glycopeptide antibacterials" "dalb" "dalbavancin,dalvance" 1.5 "g" "41688-3,41689-1,41690-9,41734-5" "DAL" 23724878 "Dalbavancin" "Glycopeptides" "J01XA04" "Other antibacterials" "Glycopeptide antibacterials" "dalb" "dalbavancin,dalvance" 1.5 "g" "41688-3,41689-1,41690-9,41734-5"
"DAN" 71335 "Danofloxacin" "Quinolones" "NA" "" "advocin,danofloxacin,danofloxacine,danofloxacino,danofloxacinum" "73601-7,73623-1,73646-2" "DAN" 71335 "Danofloxacin" "Quinolones" "QJ01MA92" "" "advocin,danofloxacin,danofloxacine,danofloxacino,danofloxacinum" "73601-7,73623-1,73646-2"
"DPS" 2955 "Dapsone" "Other antibacterials" "D10AX05,J04BA02" "Drugs for treatment of lepra" "Drugs for treatment of lepra" "" "aczone,araldite ht,atrisone,avlosulfon,avlosulfone,avlosulphone,avsulfor,bis sulfone,bissulfone,bissulphone,croysulfone,croysulphone,dapson,dapsona,dapsone,dapsonum,di sulfone,diaphenyl sulfone,diaphenylsulfon,diaphenylsulfone,diaphenylsulphon,diaphenylsulphone,dimitone,diphenasone,diphone,disulfone,disulone,disulphone,dubronax,dubronaz,dumitone,eporal,metabolite c,novophone,protogen,servidapson,slphadione,sulfadione,sulfona,sulfone ucb,sulfonyldianiline,sulphadione,sulphonyldianiline,sumicure s,tarimyl,udolac" 50 "mg" "51698-9,9747-7" "DPS" 2955 "Dapsone" "Other antibacterials" "D10AX05,J04BA02" "Drugs for treatment of lepra" "Drugs for treatment of lepra" "" "aczone,araldite ht,atrisone,avlosulfon,avlosulfone,avlosulphone,avsulfor,bis sulfone,bissulfone,bissulphone,croysulfone,croysulphone,dapson,dapsona,dapsone,dapsonum,di sulfone,diaphenyl sulfone,diaphenylsulfon,diaphenylsulfone,diaphenylsulphon,diaphenylsulphone,dimitone,diphenasone,diphone,disulfone,disulone,disulphone,dubronax,dubronaz,dumitone,eporal,metabolite c,novophone,protogen,servidapson,slphadione,sulfadione,sulfona,sulfone ucb,sulfonyldianiline,sulphadione,sulphonyldianiline,sumicure s,tarimyl,udolac" 50 "mg" "51698-9,9747-7"
"DAP" 16134395 "Daptomycin" "Other antibacterials" "J01XX09" "Other antibacterials" "Other antibacterials" "dap,dapt" "cidecin,cubicin,dapcin,daptomicina,daptomycine,daptomycinum" 0.28 "g" "35787-1,35788-9,35789-7,41691-7" "DAP" 16134395 "Daptomycin" "Other antibacterials" "J01XX09" "Other antibacterials" "Other antibacterials" "dap,dapt" "cidecin,cubicin,dapcin,daptomicina,daptomycine,daptomycinum" 0.28 "g" "35787-1,35788-9,35789-7,41691-7"
"DFX" 487101 "Delafloxacin" "Quinolones" "J01MA23" "" "baxdela,delafloxacin,delafloxacinum,quofenix" 0.9 "g" 0.6 "g" "88885-9,90447-4,93790-4" "DFX" 487101 "Delafloxacin" "Quinolones" "J01MA23" "" "baxdela,delafloxacin,delafloxacinum,quofenix" 0.9 "g" 0.6 "g" "88885-9,90447-4,93790-4"
"DLM" 6480466 "Delamanid" "Antimycobacterials" "J04AK06" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "dela" "delamanid,deltyba" 0.2 "g" "93851-4,96109-4" "DLM" 6480466 "Delamanid" "Antimycobacterials" "J04AK06" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "dela" "delamanid,deltyba" 0.2 "g" "93851-4,96109-4"
"DEM" 54680690 "Demeclocycline" "Tetracyclines" "D06AA01,J01AA01" "Tetracyclines" "Tetracyclines" "" "bioterciclin,clortetrin,declomycin,deganol,demeclociclina,demeclocycline,demeclocyclinum,demeclor,demetraclin,diuciclin,elkamicina,ledermycin,mexocine,novotriclina,perciclina,sumaclina" 0.6 "g" "10982-7,18915-9,216-2,217-0,218-8,219-6,29494-2,7006-0" "DEM" 54680690 "Demeclocycline" "Tetracyclines" "D06AA01,J01AA01" "Tetracyclines" "Tetracyclines" "" "bioterciclin,clortetrin,declomycin,deganol,demeclociclina,demeclocycline,demeclocyclinum,demeclor,demetraclin,diuciclin,elkamicina,ledermycin,mexocine,novotriclina,perciclina,sumaclina" 0.6 "g" "10982-7,18915-9,216-2,217-0,218-8,219-6,29494-2,7006-0"
"DKB" 470999 "Dibekacin" "Aminoglycosides" "J01GB09" "Aminoglycoside antibacterials" "Other aminoglycosides" "" "debecacin,dibekacin,dibekacin sulfate,dibekacina,dibekacine,dibekacinum,dideoxykanamycin b,kappati,orbicin,panamicin" 0.14 "g" "55669-6,55670-4,55671-2,55672-0" "DKB" 470999 "Dibekacin" "Aminoglycosides" "J01GB09,S01AA29" "Aminoglycoside antibacterials" "Other aminoglycosides" "" "debecacin,dibekacin,dibekacin sulfate,dibekacina,dibekacine,dibekacinum,dideoxykanamycin b,kappati,orbicin,panamicin" 0.14 "g" "55669-6,55670-4,55671-2,55672-0"
"DIC" 18381 "Dicloxacillin" "Beta-lactams/penicillins" "J01CF01" "Beta-lactam antibacterials, penicillins" "Beta-lactamase resistant penicillins" "dicl" "dichloroxacillin,diclossacillina,dicloxaciclin,dicloxacilin,dicloxacilina,dicloxacillin,dicloxacillin sodium,dicloxacillina,dicloxacilline,dicloxacillinum,dicloxacycline,dycill,dynapen,maclicine,nm|| dicloxacillin,pathocil" 2 "g" 2 "g" "10984-3,16769-2,18916-7,220-4,221-2,222-0,223-8,25252-8,32380-8,55668-8" "DIC" 18381 "Dicloxacillin" "Beta-lactams/penicillins" "J01CF01" "Beta-lactam antibacterials, penicillins" "Beta-lactamase resistant penicillins" "dicl" "dichloroxacillin,diclossacillina,dicloxaciclin,dicloxacilin,dicloxacilina,dicloxacillin,dicloxacillin sodium,dicloxacillina,dicloxacilline,dicloxacillinum,dicloxacycline,dycill,dynapen,maclicine,nm|| dicloxacillin,pathocil" 2 "g" 2 "g" "10984-3,16769-2,18916-7,220-4,221-2,222-0,223-8,25252-8,32380-8,55668-8"
"DIF" 56206 "Difloxacin" "Quinolones" "NA" "" "dicural,difloxacin,pulsaflox" "35790-5,35791-3,35792-1" "DIF" 56206 "Difloxacin" "Quinolones" "QJ01MA94" "" "dicural,difloxacin,pulsaflox" "35790-5,35791-3,35792-1"
"DIR" 6473883 "Dirithromycin" "Macrolides/lincosamides" "J01FA13" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "dirithromycin,dirithromycine,dirithromycinum,diritromicina,divitross,dynabac,noriclan,valodin" 0.5 "g" "35793-9,35794-7,35795-4,7007-8" "DIR" 6473883 "Dirithromycin" "Macrolides/lincosamides" "J01FA13" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "dirithromycin,dirithromycine,dirithromycinum,diritromicina,divitross,dynabac,noriclan,valodin" 0.5 "g" "35793-9,35794-7,35795-4,7007-8"
"DOR" 73303 "Doripenem" "Carbapenems" "J01DH04" "Other beta-lactam antibacterials" "Carbapenems" "dori" "doribax,doripenem,doripenem hydrate,finibax" 1.5 "g" "56031-8,58711-3,60535-2,72893-1" "DOR" 73303 "Doripenem" "Carbapenems" "J01DH04" "Other beta-lactam antibacterials" "Carbapenems" "dori" "doribax,doripenem,doripenem hydrate,finibax" 1.5 "g" "56031-8,58711-3,60535-2,72893-1"
"DOX" 54671203 "Doxycycline" "Tetracyclines" "A01AB22,J01AA02" "Tetracyclines" "Tetracyclines" "dox,doxy" "atridox,azudoxat,deoxymykoin,dossiciclina,doxcycline anhydrous,doxiciclina,doxirobe,doxitard,doxivetin,doxycen,doxychel,doxycin,doxycyclin,doxycycline,doxycycline calcium,doxycycline hyclate,doxycyclinum,doxylin,doxysol,doxytec,doxytetracycline,hydramycin,investin,jenacyclin,liviatin,monodox,oracea,periostat,ronaxan,spanor,supracyclin,vibramycin,vibramycin novum,vibramycine,vibravenos,zenavod" 0.1 "g" 0.1 "g" "10986-8,18917-5,20379-4,21250-6,224-6,225-3,226-1,227-9,23623-2,25223-9,26902-7,7008-6" "DOX" 54671203 "Doxycycline" "Tetracyclines" "A01AB22,J01AA02" "Tetracyclines" "Tetracyclines" "dox,doxy" "atridox,azudoxat,deoxymykoin,dossiciclina,doxcycline anhydrous,doxiciclina,doxirobe,doxitard,doxivetin,doxycen,doxychel,doxycin,doxycyclin,doxycycline,doxycycline calcium,doxycycline hyclate,doxycyclinum,doxylin,doxysol,doxytec,doxytetracycline,hydramycin,investin,jenacyclin,liviatin,monodox,oracea,periostat,ronaxan,spanor,supracyclin,vibramycin,vibramycin novum,vibramycine,vibravenos,zenavod" 0.1 "g" 0.1 "g" "10986-8,18917-5,20379-4,21250-6,224-6,225-3,226-1,227-9,23623-2,25223-9,26902-7,7008-6"
"ECO" 3198 "Econazole" "Antifungals/antimycotics" "D01AC03,G01AF05" "Antifungals for topical use" "Imidazole and triazole derivatives" "econ" "econazol,econazole,econazolum,ecostatin,ecostatin cream,palavale,pevaryl,spectazole,spectazole cream" "25595-0,25637-0,54178-9,55673-8" "ECO" 3198 "Econazole" "Antifungals/antimycotics" "D01AC03,G01AF05" "Antifungals for topical use" "Imidazole and triazole derivatives" "econ" "econazol,econazole,econazolum,ecostatin,ecostatin cream,palavale,pevaryl,spectazole,spectazole cream" "25595-0,25637-0,54178-9,55673-8"
"ENX" 3229 "Enoxacin" "Quinolones" "J01MA04" "Quinolone antibacterials" "Fluoroquinolones" "enox" "almitil,bactidan,bactidron,comprecin,enofloxacine,enoksetin,enoram,enoxacin,enoxacina,enoxacine,enoxacino,enoxacinum,enoxen,enoxin,enoxor,flumark,penetrex" 0.8 "g" "16816-1,18918-3,228-7,229-5,230-3,231-1,3590-7,41692-5" "ENX" 3229 "Enoxacin" "Quinolones" "J01MA04" "Quinolone antibacterials" "Fluoroquinolones" "enox" "almitil,bactidan,bactidron,comprecin,enofloxacine,enoksetin,enoram,enoxacin,enoxacina,enoxacine,enoxacino,enoxacinum,enoxen,enoxin,enoxor,flumark,penetrex" 0.8 "g" "16816-1,18918-3,228-7,229-5,230-3,231-1,3590-7,41692-5"
"ENR" 71188 "Enrofloxacin" "Quinolones" "NA" "" "baytril,enrofloxacin,enrofloxacine,enrofloxacino,enrofloxacinum,enroxil" "23712-3,35796-2,35797-0,35798-8" "ENR" 71188 "Enrofloxacin" "Quinolones" "QJ01MA90" "" "baytril,enrofloxacin,enrofloxacine,enrofloxacino,enrofloxacinum,enroxil" "23712-3,35796-2,35797-0,35798-8"
"ENV" 135565326 "Enviomycin" "Antimycobacterials" "J04AB06" "tuberactinomycin" "enviomicina,enviomycin,enviomycina,enviomycinum,tuberactin" "" "ENV" 135565326 "Enviomycin" "Antimycobacterials" "J04AB06" "tuberactinomycin" "enviomicina,enviomycin,enviomycina,enviomycinum,tuberactin" 1 "g" ""
"EPE" "Eperozolid" "Other antibacterials" "NA" "" "" "" "EPE" "Eperozolid" "Other antibacterials" "NA" "" "" ""
"EPC" 71392 "Epicillin" "Beta-lactams/penicillins" "J01CA07" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "dexacillin,dihydroampicillin,epicilina,epicillin,epicilline,epicillinum" 2 "g" 2 "g" "" "EPC" 71392 "Epicillin" "Beta-lactams/penicillins" "J01CA07" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "dexacillin,dihydroampicillin,epicilina,epicillin,epicilline,epicillinum" 2 "g" 2 "g" ""
"EPP" 68916 "Epiroprim" "Other antibacterials" "NA" "" "epiroprim,epiroprima,epiroprime,epiroprimum" "" "EPP" 68916 "Epiroprim" "Other antibacterials" "NA" "" "epiroprim,epiroprima,epiroprime,epiroprimum" ""
"ERV" 54726192 "Eravacycline" "Tetracyclines" "J01AA13" "Tetracyclines" "Tetracyclines" "erav" "eravacycline,xerava" "100049-6,85423-2,93767-2" "ERV" 54726192 "Eravacycline" "Tetracyclines" "J01AA13" "Tetracyclines" "Tetracyclines" "erav" "eravacycline,xerava" 0.14 "g" "100049-6,85423-2,93767-2"
"ETP" 150610 "Ertapenem" "Carbapenems" "J01DH03" "Other beta-lactam antibacterials" "Carbapenems" "erta,etp" "ertapenem,invanz" 1 "g" "101486-9,35799-6,35800-2,35801-0,35802-8" "ETP" 150610 "Ertapenem" "Carbapenems" "J01DH03" "Other beta-lactam antibacterials" "Carbapenems" "erta,etp" "ertapenem,invanz" 1 "g" "101486-9,35799-6,35800-2,35801-0,35802-8"
"ERY" 12560 "Erythromycin" "Macrolides/lincosamides" "D10AF02,J01FA01,S01AA17" "Macrolides, lincosamides and streptogramins" "Macrolides" "e,em,ery,eryt" "abboticin,abomacetin,acneryne,acnesol,akne cordes losung,aknederm ery gel,aknemycin,austrias,benzamycin,bristamycin,derimer,deripil,dotycin,dumotrycin,emuvin,emycin,endoeritrin,erecin,erisone,eritomicina,eritrocina,eritromicina,ermycin,eryacne,eryacnen,eryc sprinkles,erycen,erycette,erycin,erycinum,eryderm,erydermer,erygel,eryhexal,erymax,erymed,erypar,erysafe,erytab,erythrocin,erythrocin stearate,erythroderm,erythrogran,erythroguent,erythromid,erythromycin,erythromycin a,erythromycin base,erythromycin lactate,erythromycine,erythromycines,erythromycinum,erytop,erytrociclin,ilocaps,ilosone,iloticina,ilotycin,ilotycin gluceptate,ilotycin t.s.,inderm,inderm gel,indermretcin,latotryd,lederpax,mephamycin,mercina,oftamolets,paediathrocin,pantoderm,pantodrin,pantomicina,pce dispertab,pharyngocin,primacine,propiocine,proterytrin,retcin,robimycin,romycin,sansac,skid gel e,staticin,stiemicyn,stiemycin,theramycin z,tiloryth,tiprocin,torlamicina,udima ery gel,wyamycin s" 2 "g" 1 "g" "100050-4,11576-6,12298-6,16829-4,16830-2,18919-1,18920-9,20380-2,232-9,233-7,234-5,235-2,236-0,23633-1,237-8,238-6,239-4,25224-7,25275-9,3597-2,7009-4" "ERY" 12560 "Erythromycin" "Macrolides/lincosamides" "D10AF02,J01FA01,S01AA17" "Macrolides, lincosamides and streptogramins" "Macrolides" "e,em,ery,eryt" "abboticin,abomacetin,acneryne,acnesol,akne cordes losung,aknederm ery gel,aknemycin,austrias,benzamycin,bristamycin,derimer,deripil,dotycin,dumotrycin,emuvin,emycin,endoeritrin,erecin,erisone,eritomicina,eritrocina,eritromicina,ermycin,eryacne,eryacnen,eryc sprinkles,erycen,erycette,erycin,erycinum,eryderm,erydermer,erygel,eryhexal,erymax,erymed,erypar,erysafe,erytab,erythrocin,erythrocin stearate,erythroderm,erythrogran,erythroguent,erythromid,erythromycin,erythromycin a,erythromycin base,erythromycin lactate,erythromycine,erythromycines,erythromycinum,erytop,erytrociclin,ilocaps,ilosone,iloticina,ilotycin,ilotycin gluceptate,ilotycin t.s.,inderm,inderm gel,indermretcin,latotryd,lederpax,mephamycin,mercina,oftamolets,paediathrocin,pantoderm,pantodrin,pantomicina,pce dispertab,pharyngocin,primacine,propiocine,proterytrin,retcin,robimycin,romycin,sansac,skid gel e,staticin,stiemicyn,stiemycin,theramycin z,tiloryth,tiprocin,torlamicina,udima ery gel,wyamycin s" 2 "g" 1 "g" "100050-4,11576-6,12298-6,16829-4,16830-2,18919-1,18920-9,20380-2,232-9,233-7,234-5,235-2,236-0,23633-1,237-8,238-6,239-4,25224-7,25275-9,3597-2,7009-4"
"ETH" 14052 "Ethambutol" "Antimycobacterials" "J04AK02" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "etha" "aethambutolum,diambutol,ebutol,etambutol,etambutolo,etapiam,ethambutol,ethambutolum,myambutol,mycobutol,purderal,servambutol,tibutol" 1.2 "g" 1.2 "g" "100051-2,16841-9,18921-7,20381-0,23625-7,240-2,241-0,242-8,243-6,25187-6,25194-2,25195-9,25230-4,25404-5,3607-9,42645-2,42646-0,55154-9,55674-6,56025-0,7010-2,89491-5" "ETH" 14052 "Ethambutol" "Antimycobacterials" "J04AK02" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "etha" "aethambutolum,diambutol,ebutol,etambutol,etambutolo,etapiam,ethambutol,ethambutolum,myambutol,mycobutol,purderal,servambutol,tibutol" 1.2 "g" 1.2 "g" "100051-2,16841-9,18921-7,20381-0,23625-7,240-2,241-0,242-8,243-6,25187-6,25194-2,25195-9,25230-4,25404-5,3607-9,42645-2,42646-0,55154-9,55674-6,56025-0,7010-2,89491-5"
"ETI" 456476 "Ethambutol/isoniazid" "Antimycobacterials" "J04AM03" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" "" "ETI" 456476 "Ethambutol/isoniazid" "Antimycobacterials" "J04AM03" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" ""
"ETI1" 2761171 "Ethionamide" "Antimycobacterials" "J04AD03" "Drugs for treatment of tuberculosis" "Thiocarbamide derivatives" "ethi" "aethionamidum,aetina,aetiva,amidazin,amidazine,ethatyl,ethimide,ethina,ethinamide,ethionamide,ethionamidum,ethioniamide,ethylisothiamide,ethyonomide,etimid,etiocidan,etionamid,etionamida,etionamide,etioniamid,etionid,etionizin,etionizina,etionizine,fatoliamid,iridocin,iridocin bayer,iridozin,isothin,isotiamida,itiocide,nicotion,nisotin,nizotin,rigenicid,sertinon,teberus,thianid,thianide,thioamide,thiodine,thiomid,thioniden,tianid,tiomid,trecator,trecator sc,trekator,trescatyl,trescazide,tubenamide,tubermin,tuberoid,tuberoson" 0.75 "g" "16099-4,16845-0,18922-5,20382-8,23617-4,25183-5,25196-7,25198-3,25231-2,41693-3,42647-8,42648-6,7011-0,96110-2" "ETI1" 2761171 "Ethionamide" "Antimycobacterials" "J04AD03" "Drugs for treatment of tuberculosis" "Thiocarbamide derivatives" "ethi" "aethionamidum,aetina,aetiva,amidazin,amidazine,ethatyl,ethimide,ethina,ethinamide,ethionamide,ethionamidum,ethioniamide,ethylisothiamide,ethyonomide,etimid,etiocidan,etionamid,etionamida,etionamide,etioniamid,etionid,etionizin,etionizina,etionizine,fatoliamid,iridocin,iridocin bayer,iridozin,isothin,isotiamida,itiocide,nicotion,nisotin,nizotin,rigenicid,sertinon,teberus,thianid,thianide,thioamide,thiodine,thiomid,thioniden,tianid,tiomid,trecator,trecator sc,trekator,trescatyl,trescazide,tubenamide,tubermin,tuberoid,tuberoson" 0.75 "g" "16099-4,16845-0,18922-5,20382-8,23617-4,25183-5,25196-7,25198-3,25231-2,41693-3,42647-8,42648-6,7011-0,96110-2"
"ETO" 6034 "Ethopabate" "Other antibacterials" "NA" "" "amprol plus,ethopabat,ethopabate,ethyl pabate" "" "ETO" 6034 "Ethopabate" "Other antibacterials" "QP51AX17" "" "amprol plus,ethopabat,ethopabate,ethyl pabate" ""
"EXE" "Exebacase" "NA" "" "" "" "EXE" "Exebacase" "NA" "" "" ""
"FAR" 65894 "Faropenem" "Other antibacterials" "J01DI03" "Other beta-lactam antibacterials" "Other cephalosporins and penems" "" "faropenem,faropenem sodium,fropenem,fropenum sodium" 0.75 "g" "73600-9,73622-3,73645-4" "FAR" 65894 "Faropenem" "Other antibacterials" "J01DI03" "Other beta-lactam antibacterials" "Other cephalosporins and penems" "" "faropenem,faropenem sodium,fropenem,fropenum sodium" 0.75 "g" "73600-9,73622-3,73645-4"
"FDX" 10034073 "Fidaxomicin" "Other antibacterials" "A07AA12" "" "dificid,dificlir,difimicin,fidaxomicin,lipiarmicin,lipiarmycin,lipiarrmycin,tiacumicin b" 0.4 "g" "73599-3,73621-5,73644-7" "FDX" 10034073 "Fidaxomicin" "Other antibacterials" "A07AA12" "" "dificid,dificlir,difimicin,fidaxomicin,lipiarmicin,lipiarmycin,lipiarrmycin,tiacumicin b" 0.4 "g" "73599-3,73621-5,73644-7"
@ -187,23 +187,23 @@
"FLA" 46783781 "Flavomycin" "Other antibacterials" "NA" "" "flavophospholipol,moenomycin complex" "" "FLA" 46783781 "Flavomycin" "Other antibacterials" "NA" "" "flavophospholipol,moenomycin complex" ""
"FLE" 3357 "Fleroxacin" "Quinolones" "J01MA08" "Quinolone antibacterials" "Fluoroquinolones" "fler" "fleroxacin,fleroxacine,fleroxacino,fleroxacinum,fleroxicin,megalocin,megalone,megalosin,quinodis" 0.4 "g" 0.4 "g" "25411-0,32372-5,35806-9,7012-8" "FLE" 3357 "Fleroxacin" "Quinolones" "J01MA08" "Quinolone antibacterials" "Fluoroquinolones" "fler" "fleroxacin,fleroxacine,fleroxacino,fleroxacinum,fleroxicin,megalocin,megalone,megalosin,quinodis" 0.4 "g" 0.4 "g" "25411-0,32372-5,35806-9,7012-8"
"FLO" 65864 "Flomoxef" "Other antibacterials" "J01DC14" "" "flomoxef,flomoxefo,flomoxefum" 2 "g" "100052-0,53822-3" "FLO" 65864 "Flomoxef" "Other antibacterials" "J01DC14" "" "flomoxef,flomoxefo,flomoxefum" 2 "g" "100052-0,53822-3"
"FLR" 114811 "Florfenicol" "Other antibacterials" "NA" "" "aquafen,florfenicol,nuflor,nuflor gold" "23740-4,35807-7,35808-5,87599-7" "FLR" 114811 "Florfenicol" "Other antibacterials" "QJ01BA90,QJ51BA90" "" "aquafen,florfenicol,nuflor,nuflor gold" "23740-4,35807-7,35808-5,87599-7"
"FLC" 21319 "Flucloxacillin" "Beta-lactams/penicillins" "J01CF05" "Beta-lactam antibacterials, penicillins" "Beta-lactamase resistant penicillins" "clox,flux" "culpen,floxacillin,floxacillin sodium,floxapen,floxapen sodium salt,fluclox,flucloxacilina,flucloxacillin,flucloxacilline,flucloxacillinum,fluorochloroxacillin,staphylex" 2 "g" 2 "g" "" "FLC" 21319 "Flucloxacillin" "Beta-lactams/penicillins" "J01CF05" "Beta-lactam antibacterials, penicillins" "Beta-lactamase resistant penicillins" "clox,flux" "culpen,floxacillin,floxacillin sodium,floxapen,floxapen sodium salt,fluclox,flucloxacilina,flucloxacillin,flucloxacilline,flucloxacillinum,fluorochloroxacillin,staphylex" 2 "g" 2 "g" ""
"FLU" 3365 "Fluconazole" "Antifungals/antimycotics" "D01AC15,J02AC01" "Antimycotics for systemic use" "Triazole derivatives" "fluc,fluz,flz" "alflucoz,alfumet,alkanazole,biocanol,biozole,biozolene,canzol,cryptal,diflazon,diflucan,dimycon,elazor,flucazol,fluconazol,fluconazole,fluconazole capsules,fluconazoli,fluconazolum,flucoral,flucostat,flukezol,flunazol,flunizol,flusol,fluzon,fluzone,forcan,fuconal,fungata,loitin,oxifugol,pritenzol,syscan,trican,triconal,triflucan,zoltec" 0.2 "g" 0.2 "g" "10987-6,16870-8,18924-1,248-5,249-3,250-1,251-9,25255-1,7013-6,80530-9" "FLU" 3365 "Fluconazole" "Antifungals/antimycotics" "D01AC15,J02AC01" "Antimycotics for systemic use" "Triazole derivatives" "fluc,fluz,flz" "alflucoz,alfumet,alkanazole,biocanol,biozole,biozolene,canzol,cryptal,diflazon,diflucan,dimycon,elazor,flucazol,fluconazol,fluconazole,fluconazole capsules,fluconazoli,fluconazolum,flucoral,flucostat,flukezol,flunazol,flunizol,flusol,fluzon,fluzone,forcan,fuconal,fungata,loitin,oxifugol,pritenzol,syscan,trican,triconal,triflucan,zoltec" 0.2 "g" 0.2 "g" "10987-6,16870-8,18924-1,248-5,249-3,250-1,251-9,25255-1,7013-6,80530-9"
"FCT" 3366 "Flucytosine" "Antifungals/antimycotics" "D01AE21,J02AX01" "Antifungals for topical use" "Other antifungals for topical use" "5flc,fcu,fluo,fluy" "alcobon,ancoban,ancobon,ancotil,ancotyl,flourocytosine,flucitosina,flucystine,flucytosin,flucytosine,flucytosinum,flucytosone,fluocytosine,fluorcytosine,fluorocytosine" "" "FCT" 3366 "Flucytosine" "Antifungals/antimycotics" "D01AE21,J02AX01" "Antifungals for topical use" "Other antifungals for topical use" "5flc,fcu,fluo,fluy" "alcobon,ancoban,ancobon,ancotil,ancotyl,flourocytosine,flucitosina,flucystine,flucytosin,flucytosine,flucytosinum,flucytosone,fluocytosine,fluorcytosine,fluorocytosine" 10 "g" 10 "g" ""
"FLM" 3374 "Flumequine" "Quinolones" "J01MB07" "Quinolone antibacterials" "Other quinolones" "" "apurone,fantacin,flumequine,flumequino,flumequinum,flumigal,flumiquil,flumisol,flumix,imequyl" 1.2 "g" "55675-3,55676-1,55677-9,55678-7" "FLM" 3374 "Flumequine" "Quinolones" "J01MB07" "Quinolone antibacterials" "Other quinolones" "" "apurone,fantacin,flumequine,flumequino,flumequinum,flumigal,flumiquil,flumisol,flumix,imequyl" 1.2 "g" "55675-3,55676-1,55677-9,55678-7"
"FLR1" 71260 "Flurithromycin" "Macrolides/lincosamides" "J01FA14" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "flurithromicina,flurithromycime,flurithromycin,flurithromycine,flurithromycinum,fluritromicina,fluritromycinum,flurizic" 0.75 "g" "" "FLR1" 71260 "Flurithromycin" "Macrolides/lincosamides" "J01FA14" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "flurithromicina,flurithromycime,flurithromycin,flurithromycine,flurithromycinum,fluritromicina,fluritromycinum,flurizic" 0.75 "g" ""
"FFL" 214356 "Fosfluconazole" "Antifungals/antimycotics" "NA" "" "fosfluconazole,phosfluconazole,procif,prodif" "" "FFL" 214356 "Fosfluconazole" "Antifungals/antimycotics" "NA" "" "fosfluconazole,phosfluconazole,procif,prodif" ""
"FOS" 446987 "Fosfomycin" "Other antibacterials" "J01XX01" "Other antibacterials" "Other antibacterials" "ff,fm,fo,fof,fos,fosf" "calcium fosfomycin,fosfocina,fosfomicin,fosfomicina,fosfomycin,fosfomycin sodium,fosfomycine,fosfomycinum,fosfonomycin,infectophos,monuril,monurol,phosphonemycin,phosphonomycin,veramina" 3 "g" 8 "g" "25596-8,25653-7,35809-3,35810-1" "FOS" 446987 "Fosfomycin" "Other antibacterials" "J01XX01,S02AA17" "Other antibacterials" "Other antibacterials" "ff,fm,fo,fof,fos,fosf" "calcium fosfomycin,fosfocina,fosfomicin,fosfomicina,fosfomycin,fosfomycin sodium,fosfomycine,fosfomycinum,fosfonomycin,infectophos,monuril,monurol,phosphonemycin,phosphonomycin,veramina" 3 "g" 8 "g" "25596-8,25653-7,35809-3,35810-1"
"FMD" 572 "Fosmidomycin" "Other antibacterials" "NA" "" "fosmidomycin,fosmidomycina,fosmidomycine,fosmidomycinum" "" "FMD" 572 "Fosmidomycin" "Other antibacterials" "NA" "" "fosmidomycin,fosmidomycina,fosmidomycine,fosmidomycinum" ""
"FRM" 8378 "Framycetin" "Aminoglycosides" "D09AA01,R01AX08,S01AA07" "fram" "actilin,actiline,antibiotique,bycomycin,dekamycin iii,endomixin,enterfram,fradiomycin,fradiomycin b,fradiomycinum,framicetina,framidal,framycetin,framycetin sulfate,framycetine,framycetinum,framycin,framygen,francetin,fraquinol,jernadex,myacine,myacyne,mycerin,mycifradin,neobrettin,neolate,neomas,neomcin,neomicina,neomin,neomycin,neomycin b,neomycin b sulfate,neomycin solution,neomycin sulfate,neomycin sulphate,neomycinb,neomycine,neomycinum,nivemycin,pimavecort,soframycin,soframycine,tuttomycin,vonamycin,vonamycin powder v" "18926-6,257-6,258-4,259-2,260-0,55679-5" "FRM" 8378 "Framycetin" "Aminoglycosides" "D09AA01,R01AX08,S01AA07" "fram" "actilin,actiline,antibiotique,bycomycin,dekamycin iii,endomixin,enterfram,fradiomycin,fradiomycin b,fradiomycinum,framicetina,framidal,framycetin,framycetin sulfate,framycetine,framycetinum,framycin,framygen,francetin,fraquinol,jernadex,myacine,myacyne,mycerin,mycifradin,neobrettin,neolate,neomas,neomcin,neomicina,neomin,neomycin,neomycin b,neomycin b sulfate,neomycin solution,neomycin sulfate,neomycin sulphate,neomycinb,neomycine,neomycinum,nivemycin,pimavecort,soframycin,soframycine,tuttomycin,vonamycin,vonamycin powder v" "18926-6,257-6,258-4,259-2,260-0,55679-5"
"FUR" 6870646 "Furazidin" "Other antibacterials" "J01XE03" "Other antibacterials" "Nitrofuran derivatives" "" "akritoin,furagin,furaginum,furamag,furazidin,furazidine" 0.3 "g" "" "FUR" 6870646 "Furazidin" "Other antibacterials" "J01XE03" "Other antibacterials" "Nitrofuran derivatives" "" "akritoin,furagin,furaginum,furamag,furazidin,furazidine" 0.3 "g" ""
"FRZ" 5323714 "Furazolidone" "Other antibacterials" "G01AX06" "" "bifuron,corizium,coryzium,diafuron,enterotoxon,furall,furaxon,furaxone,furazol,furazolidine,furazolidon,furazolidona,furazolidone,furazolidonum,furazolum,furazon,furidon,furovag,furox aerosol powder,furoxal,furoxane,furoxon,furoxone,furoxone liquid,furoxone swine mix,furozolidine,giardil,giarlam,medaron,neftin,nicolen,nifulidone,nifuran,nifurazolidone,nifurazolidonum,nitrofurazolidone,nitrofurazolidonum,nitrofuroxon,optazol,ortazol,puradin,roptazol,sclaventerol,tikofuran,topazone,trichofuron,tricofuron,tricoron,trifurox,viofuragyn" "69574-2,87794-4" "FRZ" 5323714 "Furazolidone" "Other antibacterials" "G01AX06" "" "bifuron,corizium,coryzium,diafuron,enterotoxon,furall,furaxon,furaxone,furazol,furazolidine,furazolidon,furazolidona,furazolidone,furazolidonum,furazolum,furazon,furidon,furovag,furox aerosol powder,furoxal,furoxane,furoxon,furoxone,furoxone liquid,furoxone swine mix,furozolidine,giardil,giarlam,medaron,neftin,nicolen,nifulidone,nifuran,nifurazolidone,nifurazolidonum,nitrofurazolidone,nitrofurazolidonum,nitrofuroxon,optazol,ortazol,puradin,roptazol,sclaventerol,tikofuran,topazone,trichofuron,tricofuron,tricoron,trifurox,viofuragyn" "69574-2,87794-4"
"FUS" 3000226 "Fusidic acid" "Other antibacterials" "D06AX01,D09AA02,J01XC01,S01AA13" "Other antibacterials" "Steroid antibacterials" "fa,fusi" "acide fusidique,acido fusidico,acidum fusidicum,flucidin,fucidate,fucidate sodium,fucidic acid,fucidin,fucidin acid,fucithalmic,fusidate,fusidate acid,fusidic acid,fusidicacid,fusidine,fusidinic acid,ramycin,taksta" 1.5 "g" 1.5 "g" "" "FUS" 3000226 "Fusidic acid" "Other antibacterials" "D06AX01,D09AA02,J01XC01,S01AA13" "Other antibacterials" "Steroid antibacterials" "fa,fusi" "acide fusidique,acido fusidico,acidum fusidicum,flucidin,fucidate,fucidate sodium,fucidic acid,fucidin,fucidin acid,fucithalmic,fusidate,fusidate acid,fusidic acid,fusidicacid,fusidine,fusidinic acid,ramycin,taksta" 1.5 "g" 1.5 "g" ""
"GAM" 59364992 "Gamithromycin" "Macrolides/lincosamides" "NA" "" "gamithromycin" "100054-6,88376-9,88378-5" "GAM" 59364992 "Gamithromycin" "Macrolides/lincosamides" "QJ01FA95" "" "gamithromycin" "100054-6,88376-9,88378-5"
"GRN" 124093 "Garenoxacin" "Quinolones" "J01MA19" "" "ganefloxacin,garenfloxacin,garenoxacin" 0.4 "g" "35811-9,35812-7,35813-5" "GRN" 124093 "Garenoxacin" "Quinolones" "J01MA19" "" "ganefloxacin,garenfloxacin,garenoxacin" 0.4 "g" "35811-9,35812-7,35813-5"
"GAT" 5379 "Gatifloxacin" "Quinolones" "J01MA16,S01AE06" "Quinolone antibacterials" "Fluoroquinolones" "gati" "gatiflo,gatifloxacin,gatifloxacin hydrate,gatifloxacine,gatifloxcin,gatilox,gatiquin,gatispan,tequin,tequin and zymar,zymaxid" 0.4 "g" 0.4 "g" "31036-7,31038-3,31040-9,31042-5,41494-6" "GAT" 5379 "Gatifloxacin" "Quinolones" "J01MA16,S01AE06" "Quinolone antibacterials" "Fluoroquinolones" "gati" "gatiflo,gatifloxacin,gatifloxacin hydrate,gatifloxacine,gatifloxcin,gatilox,gatiquin,gatispan,tequin,tequin and zymar,zymaxid" 0.4 "g" 0.4 "g" "31036-7,31038-3,31040-9,31042-5,41494-6"
"GEM" 9571107 "Gemifloxacin" "Quinolones" "J01MA15" "Quinolone antibacterials" "Fluoroquinolones" "" "factiv,factive,gemifioxacin,gemifloxacin,gemifloxacine,gemifloxacino,gemifloxacinum" 0.32 "g" "35814-3,35815-0,35816-8,41697-4" "GEM" 9571107 "Gemifloxacin" "Quinolones" "J01MA15" "Quinolone antibacterials" "Fluoroquinolones" "" "factiv,factive,gemifioxacin,gemifloxacin,gemifloxacine,gemifloxacino,gemifloxacinum" 0.32 "g" 0.2 "g" "35814-3,35815-0,35816-8,41697-4"
"GEN" 3467 "Gentamicin" "Aminoglycosides" "D06AX07,J01GB03,S01AA11,S02AA14,S03AA06" "Aminoglycoside antibacterials" "Other aminoglycosides" "cn,gen,gent,gm" "apogen,centicin,cidomycin,garamycin,garasol,genoptic liquifilm,genoptic s.o.p.,gentacycol,gentafair,gentak,gentamar,gentamcin sulfate,gentamicin,gentamicina,gentamicine,gentamicins,gentamicinum,gentamycin,gentamycins,gentamycinum,gentavet,gentocin,jenamicin,lyramycin,oksitselanim,refobacin,refobacin tm,septigen,uromycine" 0.24 "g" "101494-3,13561-6,13562-4,15106-8,18928-2,18929-0,22746-2,22747-0,266-7,267-5,268-3,269-1,31091-2,31092-0,31093-8,35668-3,35817-6,3663-2,3664-0,3665-7,39082-3,47109-4,50630-3,59379-8,7016-9,7017-7,7018-5,80971-5,88111-0,89481-6" "GEN" 3467 "Gentamicin" "Aminoglycosides" "D06AX07,J01GB03,S01AA11,S02AA14,S03AA06" "Aminoglycoside antibacterials" "Other aminoglycosides" "cn,gen,gent,gm" "apogen,centicin,cidomycin,garamycin,garasol,genoptic liquifilm,genoptic s.o.p.,gentacycol,gentafair,gentak,gentamar,gentamcin sulfate,gentamicin,gentamicina,gentamicine,gentamicins,gentamicinum,gentamycin,gentamycins,gentamycinum,gentavet,gentocin,jenamicin,lyramycin,oksitselanim,refobacin,refobacin tm,septigen,uromycine" 0.24 "g" "101494-3,13561-6,13562-4,15106-8,18928-2,18929-0,22746-2,22747-0,266-7,267-5,268-3,269-1,31091-2,31092-0,31093-8,35668-3,35817-6,3663-2,3664-0,3665-7,39082-3,47109-4,50630-3,59379-8,7016-9,7017-7,7018-5,80971-5,88111-0,89481-6"
"GEH" "Gentamicin-high" "Aminoglycosides" "NA" "gehi,gehl,genta high,gentamicin high" "" "18929-0,35817-6,7017-7,7018-5" "GEH" "Gentamicin-high" "Aminoglycosides" "NA" "gehi,gehl,genta high,gentamicin high" "" "18929-0,35817-6,7017-7,7018-5"
"GEP" 25101874 "Gepotidacin" "Other antibacterials" "NA" "" "gepotidacin" "" "GEP" 25101874 "Gepotidacin" "Other antibacterials" "NA" "" "gepotidacin" ""
@ -213,11 +213,11 @@
"HCH" 11979956 "Hachimycin" "Antifungals/antimycotics" "D01AA03,G01AA06,J02AA02" "Antimycotics for systemic use" "Antibiotics" "" "cabimicina,hachimicina,hachimycin,hachimycine,hachimycinum,trichomycinum,trichonat" "" "HCH" 11979956 "Hachimycin" "Antifungals/antimycotics" "D01AA03,G01AA06,J02AA02" "Antimycotics for systemic use" "Antibiotics" "" "cabimicina,hachimicina,hachimycin,hachimycine,hachimycinum,trichomycinum,trichonat" ""
"HET" 443387 "Hetacillin" "Beta-lactams/penicillins" "J01CA18" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "etacillina,hetacilina,hetacillin,hetacillin acid,hetacilline,hetacillinum,phenazacillin,versapen" 2 "g" "18931-6,274-1,275-8,276-6,277-4" "HET" 443387 "Hetacillin" "Beta-lactams/penicillins" "J01CA18" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "etacillina,hetacilina,hetacillin,hetacillin acid,hetacilline,hetacillinum,phenazacillin,versapen" 2 "g" "18931-6,274-1,275-8,276-6,277-4"
"HYG" 56928061 "Hygromycin" "Aminoglycosides" "NA" "" "antihelmycin,hydromycin b,hygrovetine" "" "HYG" 56928061 "Hygromycin" "Aminoglycosides" "NA" "" "antihelmycin,hydromycin b,hygrovetine" ""
"IBX" "Ibrexafungerp" "Antifungals" "NA" "" "ibrexafungerp" "" "IBX" "Ibrexafungerp" "Antifungals" "J02AX07" "" "ibrexafungerp" ""
"ICL" 213043 "Iclaprim" "Other antibacterials" "J01EA03" "" "iclaprim,mersarex" "73597-7,73619-9,73642-1" "ICL" 213043 "Iclaprim" "Other antibacterials" "J01EA03" "" "iclaprim,mersarex" "73597-7,73619-9,73642-1"
"IPM" 104838 "Imipenem" "Carbapenems" "J01DH51" "Other beta-lactam antibacterials" "Carbapenems" "imci,imi,imip,imp" "imipemide,imipenem,imipenem anhydrous,imipenem hydrate,imipenem/cilastatin,imipenemum,imipenen,primaxin,recarbrio .,tienamycin" 2 "g" "101487-7,17010-0,18932-4,18933-2,23613-3,25221-3,25257-7,27331-8,278-2,279-0,280-8,281-6,282-4,283-2,284-0,285-7,35819-2,3688-9,54170-6,54171-4,54172-2,7019-3,85424-0,93232-7,96372-8" "IPM" 104838 "Imipenem" "Carbapenems" "J01DH51" "Other beta-lactam antibacterials" "Carbapenems" "imci,imi,imip,imp" "imipemide,imipenem,imipenem anhydrous,imipenem hydrate,imipenem/cilastatin,imipenemum,imipenen,primaxin,recarbrio .,tienamycin" 2 "g" "101487-7,17010-0,18932-4,18933-2,23613-3,25221-3,25257-7,27331-8,278-2,279-0,280-8,281-6,282-4,283-2,284-0,285-7,35819-2,3688-9,54170-6,54171-4,54172-2,7019-3,85424-0,93232-7,96372-8"
"IPE" "Imipenem/EDTA" "Carbapenems" "NA" "" "" "35819-2,54170-6,54171-4,54172-2" "IPE" "Imipenem/EDTA" "Carbapenems" "NA" "" "" "35819-2,54170-6,54171-4,54172-2"
"IMR" "Imipenem/relebactam" "Carbapenems" "NA,J01DH56" "" "" "85424-0,93232-7,96372-8" "IMR" "Imipenem/relebactam" "Carbapenems" "NA,J01DH56" "" "" 2 "g" "85424-0,93232-7,96372-8"
"ISV" 6918485 "Isavuconazole" "Antifungals/antimycotics" "J02AC05" "isav" "isavuconazole" 0.2 "g" 0.2 "g" "85381-2,88887-5" "ISV" 6918485 "Isavuconazole" "Antifungals/antimycotics" "J02AC05" "isav" "isavuconazole" 0.2 "g" 0.2 "g" "85381-2,88887-5"
"ISE" 3037209 "Isepamicin" "Aminoglycosides" "J01GB11" "Aminoglycoside antibacterials" "Other aminoglycosides" "" "isepacin,isepalline,isepamicin,isepamicina,isepamicine,isepamicinsulphate,isepamicinum" 0.4 "g" "32381-6,35820-0,35821-8,55680-3" "ISE" 3037209 "Isepamicin" "Aminoglycosides" "J01GB11" "Aminoglycoside antibacterials" "Other aminoglycosides" "" "isepacin,isepalline,isepamicin,isepamicina,isepamicine,isepamicinsulphate,isepamicinum" 0.4 "g" "32381-6,35820-0,35821-8,55680-3"
"ISO" 3760 "Isoconazole" "Antifungals/antimycotics" "D01AC05,G01AF07" "Antimycotics for topic use" "Triazole derivatives" "" "isoconazol,isoconazole,isoconazolum,travogen" "55681-1,55682-9,55683-7,55684-5" "ISO" 3760 "Isoconazole" "Antifungals/antimycotics" "D01AC05,G01AF07" "Antimycotics for topic use" "Triazole derivatives" "" "isoconazol,isoconazole,isoconazolum,travogen" "55681-1,55682-9,55683-7,55684-5"
@ -229,8 +229,8 @@
"KAH" "Kanamycin-high" "Aminoglycosides" "NA" "k_h,kahl" "" "18936-5,7023-5,7024-3" "KAH" "Kanamycin-high" "Aminoglycosides" "NA" "k_h,kahl" "" "18936-5,7023-5,7024-3"
"KAC" "Kanamycin/cephalexin" "Aminoglycosides" "NA" "" "" "" "KAC" "Kanamycin/cephalexin" "Aminoglycosides" "NA" "" "" ""
"KET" 456201 "Ketoconazole" "Antifungals/antimycotics" "D01AC08,G01AF11,H02CA03,J02AB02" "Antimycotics for systemic use" "Imidazole derivatives" "keto,ktc" "extina,fungarest,fungoral,ketocanazole,ketoconazol,ketoconazole,ketoconazolum,ketoderm,nizoral,xolegel" 0.6 "g" "10990-0,12393-5,18937-3,25259-3,294-9,295-6,296-4,297-2,60091-6,60092-4,7025-0" "KET" 456201 "Ketoconazole" "Antifungals/antimycotics" "D01AC08,G01AF11,H02CA03,J02AB02" "Antimycotics for systemic use" "Imidazole derivatives" "keto,ktc" "extina,fungarest,fungoral,ketocanazole,ketoconazol,ketoconazole,ketoconazolum,ketoderm,nizoral,xolegel" 0.6 "g" "10990-0,12393-5,18937-3,25259-3,294-9,295-6,296-4,297-2,60091-6,60092-4,7025-0"
"KIT" "Kitasamycin" "Macrolides/lincosamides" "NA" "leucomycin" "jomybel,josacine,josamicina,josamycin,josamycine,josamycinum" "" "KIT" "Kitasamycin" "Macrolides/lincosamides" "QJ01FA93" "leucomycin" "jomybel,josacine,josamicina,josamycin,josamycine,josamycinum" ""
"LAS" 5360807 "Lasalocid" "Other antibacterials" "NA" "" "avatec,lasalocid,lasalocid a,lasalocide,lasalocide a,lasalocido,lasalocidum" "87598-9" "LAS" 5360807 "Lasalocid" "Other antibacterials" "QP51BB02" "" "avatec,lasalocid,lasalocid a,lasalocide,lasalocide a,lasalocido,lasalocidum" "87598-9"
"LSC" 71528768 "Lascufloxacin" "Quinolones" "J01MA25" "Quinolone antibacterials" "Fluoroquinolones" "" "lascufloxacin" 75 "mg" "" "LSC" 71528768 "Lascufloxacin" "Quinolones" "J01MA25" "Quinolone antibacterials" "Fluoroquinolones" "" "lascufloxacin" 75 "mg" ""
"LTM" 47499 "Latamoxef" "Cephalosporins (3rd gen.)" "J01DD06" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "mox,moxa,moxalactam" "disodium moxalactam,festamoxin,lamoxactam,latamoxef,latamoxefum,moxalactamsupplement,shiomarin" 4 "g" "" "LTM" 47499 "Latamoxef" "Cephalosporins (3rd gen.)" "J01DD06" "Other beta-lactam antibacterials" "Third-generation cephalosporins" "mox,moxa,moxalactam" "disodium moxalactam,festamoxin,lamoxactam,latamoxef,latamoxefum,moxalactamsupplement,shiomarin" 4 "g" ""
"LMU" 25185057 "Lefamulin" "Other antibacterials" "J01XX12" "" "lefamulin,xenleta" "85425-7,99281-8" "LMU" 25185057 "Lefamulin" "Other antibacterials" "J01XX12" "" "lefamulin,xenleta" "85425-7,99281-8"
@ -247,7 +247,7 @@
"LYM" 54707177 "Lymecycline" "Tetracyclines" "J01AA04" "Tetracyclines" "Tetracyclines" "" "biovetin,chlortetracyclin,ciclisin,ciclolysal,ciclolysine,infaciclina,limeciclina,lisinbiotic,lymecyclin,lymecycline,lymecyclinum,mucomycin,ntetracycline,tetralisal,tetralysal,vebicyclysal" 0.6 "g" 0.6 "g" "18941-5,310-3,311-1,312-9,313-7" "LYM" 54707177 "Lymecycline" "Tetracyclines" "J01AA04" "Tetracyclines" "Tetracyclines" "" "biovetin,chlortetracyclin,ciclisin,ciclolysal,ciclolysine,infaciclina,limeciclina,lisinbiotic,lymecyclin,lymecycline,lymecyclinum,mucomycin,ntetracycline,tetralisal,tetralysal,vebicyclysal" 0.6 "g" 0.6 "g" "18941-5,310-3,311-1,312-9,313-7"
"MNA" 1292 "Mandelic acid" "Other antibacterials" "B05CA06,J01XX06" "Other antibacterials" "Other antibacterials" "" "acido mandelico,almond acid,ammonium mandelate,amygdalic acid,benzoglycolic acid,hydroxyacetic acid,kyselina mandlova,mandelic acid,paramandelic acid,phenylglycolic acid,uromaline" 12 "g" "" "MNA" 1292 "Mandelic acid" "Other antibacterials" "B05CA06,J01XX06" "Other antibacterials" "Other antibacterials" "" "acido mandelico,almond acid,ammonium mandelate,amygdalic acid,benzoglycolic acid,hydroxyacetic acid,kyselina mandlova,mandelic acid,paramandelic acid,phenylglycolic acid,uromaline" 12 "g" ""
"MGX" "Manogepix" "Antifungals" "NA" "" "manogepix" "" "MGX" "Manogepix" "Antifungals" "NA" "" "manogepix" ""
"MAR" 60651 "Marbofloxacin" "Quinolones" "NA" "" "marbocyl,marbofloxacin,marbofloxacine,marbofloxacino,marbofloxacinum,zeniquin" "73596-9,73618-1,73641-3" "MAR" 60651 "Marbofloxacin" "Quinolones" "QJ01MA93" "" "marbocyl,marbofloxacin,marbofloxacine,marbofloxacino,marbofloxacinum,zeniquin" "73596-9,73618-1,73641-3"
"MEC" 36273 "Mecillinam" "Beta-lactams/penicillins" "J01CA11" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "amdinocillin" "amdinocillin,coactin,hexacillin,mecilinamo,mecillinam,mecillinamum,micillinam,penicillin hx,selexidin" 1.2 "g" "" "MEC" 36273 "Mecillinam" "Beta-lactams/penicillins" "J01CA11" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "amdinocillin" "amdinocillin,coactin,hexacillin,mecilinamo,mecillinam,mecillinamum,micillinam,penicillin hx,selexidin" 1.2 "g" ""
"MEL" 71306732 "Meleumycin" "Macrolides/lincosamides" "NA" "" "" "" "MEL" 71306732 "Meleumycin" "Macrolides/lincosamides" "NA" "" "" ""
"MEM" 441130 "Meropenem" "Carbapenems" "J01DH02" "Other beta-lactam antibacterials" "Carbapenems" "mem,mer,mero,mp,mrp" "meronem,meropen,meropenem,meropenem anhydrous,meropenem hydrate,meropenem trihydrate,meropenemum,merrem,merrem i.v.,merrem iv" 3 "g" "101222-8,101488-5,101489-3,18943-1,41406-0,6651-4,6652-2,6653-0,6654-8,7029-2,85426-5,85427-3,88892-5,90980-4" "MEM" 441130 "Meropenem" "Carbapenems" "J01DH02" "Other beta-lactam antibacterials" "Carbapenems" "mem,mer,mero,mp,mrp" "meronem,meropen,meropenem,meropenem anhydrous,meropenem hydrate,meropenem trihydrate,meropenemum,merrem,merrem i.v.,merrem iv" 3 "g" "101222-8,101488-5,101489-3,18943-1,41406-0,6651-4,6652-2,6653-0,6654-8,7029-2,85426-5,85427-3,88892-5,90980-4"
@ -279,9 +279,9 @@
"NAF" 8982 "Nafcillin" "Beta-lactams/penicillins" "J01CF06" "" "nafcilina,nafcillin,nafcillin sodium,nafcilline,nafcillinum,nallpen,naphcillin,unipen" 3 "g" "10993-4,18951-4,25232-0,346-7,347-5,348-3,349-1,41704-8" "NAF" 8982 "Nafcillin" "Beta-lactams/penicillins" "J01CF06" "" "nafcilina,nafcillin,nafcillin sodium,nafcilline,nafcillinum,nallpen,naphcillin,unipen" 3 "g" "10993-4,18951-4,25232-0,346-7,347-5,348-3,349-1,41704-8"
"ZWK" 117587595 "Nafithromycin" "Macrolides/lincosamides" "NA" "" "nafithromycin" "" "ZWK" 117587595 "Nafithromycin" "Macrolides/lincosamides" "NA" "" "nafithromycin" ""
"NAL" 4421 "Nalidixic acid" "Quinolones" "J01MB02" "Quinolone antibacterials" "Other quinolones" "na,nal,nali" "acide nalidixico,acide nalidixique,acido nalidissico,acido nalidixico,acidum nalidixicum,betaxina,dixiben,dixinal,eucisten,eucistin,innoxalomn,innoxalon,jicsron,kusnarin,naldixic acid,nalidic acid,nalidicron,nalidixan,nalidixane,nalidixate,nalidixate sodium,nalidixic,nalidixic acid,nalidixicacid,nalidixin,nalidixinic acid,nalidixinsaure,nalitucsan,nalurin,narigix,naxuril,neggram,negram,nevigramon,nicelate,nogram,poleon,sicmylon,specifen,specifin,unaserus,uralgin,uriben,uriclar,urisal,urodixin,uroman,uroneg,uronidix,uropan,wintomylon,wintron" 4 "g" "" "NAL" 4421 "Nalidixic acid" "Quinolones" "J01MB02" "Quinolone antibacterials" "Other quinolones" "na,nal,nali" "acide nalidixico,acide nalidixique,acido nalidissico,acido nalidixico,acidum nalidixicum,betaxina,dixiben,dixinal,eucisten,eucistin,innoxalomn,innoxalon,jicsron,kusnarin,naldixic acid,nalidic acid,nalidicron,nalidixan,nalidixane,nalidixate,nalidixate sodium,nalidixic,nalidixic acid,nalidixicacid,nalidixin,nalidixinic acid,nalidixinsaure,nalitucsan,nalurin,narigix,naxuril,neggram,negram,nevigramon,nicelate,nogram,poleon,sicmylon,specifen,specifin,unaserus,uralgin,uriben,uriclar,urisal,urodixin,uroman,uroneg,uronidix,uropan,wintomylon,wintron" 4 "g" ""
"NAR" 65452 "Narasin" "Other antibacterials" "NA" "" "monteban,narasin,narasin a,narasine,narasino,narasinum,narasul" "87570-8" "NAR" 65452 "Narasin" "Other antibacterials" "QP51BB04" "" "monteban,narasin,narasin a,narasine,narasino,narasinum,narasul" "87570-8"
"NEM" 11993740 "Nemonoxacin" "Quinolones" "J01MB08" "Quinolone antibacterials" "Other quinolones" "" "nemonoxacin" "" "NEM" 11993740 "Nemonoxacin" "Quinolones" "J01MB08" "Quinolone antibacterials" "Other quinolones" "" "nemonoxacin" ""
"NEO" 8378 "Neomycin" "Aminoglycosides" "A01AB08,A07AA01,B05CA09,D06AX04,J01GB05,R02AB01,S01AA03,S02AA07,S03AA01" "Aminoglycoside antibacterials" "Other aminoglycosides" "neom" "actilin,actiline,antibiotique,bycomycin,dekamycin iii,endomixin,enterfram,fradiomycin,fradiomycin b,fradiomycinum,framicetina,framidal,framycetin,framycetin sulfate,framycetine,framycetinum,framycin,framygen,francetin,fraquinol,jernadex,myacine,myacyne,mycerin,mycifradin,neobrettin,neolate,neomas,neomcin,neomicina,neomin,neomycin,neomycin b,neomycin b sulfate,neomycin solution,neomycin sulfate,neomycin sulphate,neomycinb,neomycine,neomycinum,nivemycin,pimavecort,soframycin,soframycine,tuttomycin,vonamycin,vonamycin powder v" 5 "g" "10995-9,18953-0,25262-7,354-1,355-8,356-6,357-4,41705-5" "NEO" 8378 "Neomycin" "Aminoglycosides" "A01AB08,A07AA01,B05CA09,D06AX04,J01GB05,R02AB01,S01AA03,S02AA07,S03AA01" "Aminoglycoside antibacterials" "Other aminoglycosides" "neom" "actilin,actiline,antibiotique,bycomycin,dekamycin iii,endomixin,enterfram,fradiomycin,fradiomycin b,fradiomycinum,framicetina,framidal,framycetin,framycetin sulfate,framycetine,framycetinum,framycin,framygen,francetin,fraquinol,jernadex,myacine,myacyne,mycerin,mycifradin,neobrettin,neolate,neomas,neomcin,neomicina,neomin,neomycin,neomycin b,neomycin b sulfate,neomycin solution,neomycin sulfate,neomycin sulphate,neomycinb,neomycine,neomycinum,nivemycin,pimavecort,soframycin,soframycine,tuttomycin,vonamycin,vonamycin powder v" 5 "g" 1 "g" "10995-9,18953-0,25262-7,354-1,355-8,356-6,357-4,41705-5"
"NET" 441306 "Netilmicin" "Aminoglycosides" "J01GB07,S01AA23" "Aminoglycoside antibacterials" "Other aminoglycosides" "neti" "netillin,netilmicin,netilmicin sulfate,netilmicina,netilmicine,netilmicinum,netilyn,netira,nettacin,vectacin" 0.35 "g" 0.35 "g" "18954-8,25263-5,358-2,359-0,360-8,361-6,3848-9,3849-7,3850-5,47385-0,59565-2,59566-0,59567-8,7035-9" "NET" 441306 "Netilmicin" "Aminoglycosides" "J01GB07,S01AA23" "Aminoglycoside antibacterials" "Other aminoglycosides" "neti" "netillin,netilmicin,netilmicin sulfate,netilmicina,netilmicine,netilmicinum,netilyn,netira,nettacin,vectacin" 0.35 "g" 0.35 "g" "18954-8,25263-5,358-2,359-0,360-8,361-6,3848-9,3849-7,3850-5,47385-0,59565-2,59566-0,59567-8,7035-9"
"NIC" 9507 "Nicarbazin" "Other antibacterials" "NA" "" "nicarb,nicarbasin,nicarbazin,nicarbazine,nicoxin,nicrazin,nicrazine,nirazin" "" "NIC" 9507 "Nicarbazin" "Other antibacterials" "NA" "" "nicarb,nicarbasin,nicarbazin,nicarbazine,nicoxin,nicrazin,nicrazine,nirazin" ""
"NIF" 71946 "Nifuroquine" "Quinolones" "NA" "" "abimasten,nifuroquina,nifuroquine,nifuroquinum,quinaldofur" "" "NIF" 71946 "Nifuroquine" "Quinolones" "NA" "" "abimasten,nifuroquina,nifuroquine,nifuroquinum,quinaldofur" ""
@ -294,24 +294,24 @@
"NME" "Norfloxacin/metronidazole" "Other antibacterials" "J01RA14" "Combinations of antibacterials" "Combinations of antibacterials" "" "" "" "NME" "Norfloxacin/metronidazole" "Other antibacterials" "J01RA14" "Combinations of antibacterials" "Combinations of antibacterials" "" "" ""
"NTI" "Norfloxacin/tinidazole" "Other antibacterials" "J01RA13" "Combinations of antibacterials" "Combinations of antibacterials" "" "" "" "NTI" "Norfloxacin/tinidazole" "Other antibacterials" "J01RA13" "Combinations of antibacterials" "Combinations of antibacterials" "" "" ""
"NVA" 10419027 "Norvancomycin" "Glycopeptides" "NA" "" "norvancomycin" "" "NVA" 10419027 "Norvancomycin" "Glycopeptides" "NA" "" "norvancomycin" ""
"NOV" 54675769 "Novobiocin" "Other antibacterials" "NA" "novo" "albamix,albamycin,cardelmycin,cathocin,cathomycin,crystallinic acid,inamycin,novobiocin,novobiocina,novobiocine,novobiocinum,robiocina,sirbiocina,spheromycin,stilbiocina,streptonivicin" "17378-1,18957-1,370-7,371-5,372-3,373-1,41706-3" "NOV" 54675769 "Novobiocin" "Other antibacterials" "QJ01XX95" "novo" "albamix,albamycin,cardelmycin,cathocin,cathomycin,crystallinic acid,inamycin,novobiocin,novobiocina,novobiocine,novobiocinum,robiocina,sirbiocina,spheromycin,stilbiocina,streptonivicin" "17378-1,18957-1,370-7,371-5,372-3,373-1,41706-3"
"NYS" 6433272 "Nystatin" "Antifungals/antimycotics" "A07AA02,D01AA01,G01AA01" "nyst" "biofanal,candex lotion,comycin,diastatin,herniocid,moronal,myconystatin,mycostatin,mycostatin pastilles,mykinac,mykostatyna,nilstat,nistatin,nistatina,nyamyc,nyotran,nyotrantrade mark,nystaform,nystan,nystatin,nystatin a,nystatin g,nystatin hydrate,nystatin lf,nystatine,nystatinum,nystatyna,nystavescent,nystex,nystop,stamycin,terrastatin,zydin e" 1.5 "MU" "10697-1,10698-9,18958-9,35824-2,55689-4" "NYS" 6433272 "Nystatin" "Antifungals/antimycotics" "A07AA02,D01AA01,G01AA01" "nyst" "biofanal,candex lotion,comycin,diastatin,herniocid,moronal,myconystatin,mycostatin,mycostatin pastilles,mykinac,mykostatyna,nilstat,nistatin,nistatina,nyamyc,nyotran,nyotrantrade mark,nystaform,nystan,nystatin,nystatin a,nystatin g,nystatin hydrate,nystatin lf,nystatine,nystatinum,nystatyna,nystavescent,nystex,nystop,stamycin,terrastatin,zydin e" 1.5 "MU" "10697-1,10698-9,18958-9,35824-2,55689-4"
"OFX" 4583 "Ofloxacin" "Quinolones" "J01MA01,S01AE01,S02AA16" "Quinolone antibacterials" "Fluoroquinolones" "of,ofl,oflo,ofx" "bactocin,danoflox,dextrofloxacin,effexin,exocin,exocine,flobacin,flodemex,flotavid,flovid,floxal,floxil,floxin,floxin otic,floxstat,fugacin,inoflox,kinflocin,kinoxacin,levofloxacin hcl,liflox,loxinter,marfloxacin,medofloxine,mergexin,monoflocet,novecin,nufafloqo,occidal,ocuflox,oflocee,oflocet,oflocin,oflodal,oflodex,oflodura,ofloxacin,ofloxacin otic,ofloxacina,ofloxacine,ofloxacino,ofloxacinum,ofloxin,onexacin,operan,orocin,otonil,oxaldin,pharflox,praxin,puiritol,qinolon,quinolon,quotavil,sinflo,tabrin,taravid,tariflox,tarivid,telbit,tructum,uro tarivid,viotisone,visiren,zanocin" 0.4 "g" 0.4 "g" "18959-7,20384-4,23948-3,25264-3,374-9,375-6,376-4,377-2,3877-8,41408-6,41409-4,41410-2,42653-6,7038-3,72168-8" "OFX" 4583 "Ofloxacin" "Quinolones" "J01MA01,S01AE01,S02AA16" "Quinolone antibacterials" "Fluoroquinolones" "of,ofl,oflo,ofx" "bactocin,danoflox,dextrofloxacin,effexin,exocin,exocine,flobacin,flodemex,flotavid,flovid,floxal,floxil,floxin,floxin otic,floxstat,fugacin,inoflox,kinflocin,kinoxacin,levofloxacin hcl,liflox,loxinter,marfloxacin,medofloxine,mergexin,monoflocet,novecin,nufafloqo,occidal,ocuflox,oflocee,oflocet,oflocin,oflodal,oflodex,oflodura,ofloxacin,ofloxacin otic,ofloxacina,ofloxacine,ofloxacino,ofloxacinum,ofloxin,onexacin,operan,orocin,otonil,oxaldin,pharflox,praxin,puiritol,qinolon,quinolon,quotavil,sinflo,tabrin,taravid,tariflox,tarivid,telbit,tructum,uro tarivid,viotisone,visiren,zanocin" 0.4 "g" 0.4 "g" "18959-7,20384-4,23948-3,25264-3,374-9,375-6,376-4,377-2,3877-8,41408-6,41409-4,41410-2,42653-6,7038-3,72168-8"
"OOR" "Ofloxacin/ornidazole" "Other antibacterials" "J01RA09" "Combinations of antibacterials" "Combinations of antibacterials" "" "" "" "OOR" "Ofloxacin/ornidazole" "Other antibacterials" "J01RA09" "Combinations of antibacterials" "Combinations of antibacterials" "" "" ""
"OLE" 72493 "Oleandomycin" "Macrolides/lincosamides" "J01FA05" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "amimycin,landomycin,matromycin,oleandomicina,oleandomycin,oleandomycin a,oleandomycine,oleandomycinum,romicil" 1 "g" "18960-5,378-0,379-8,380-6,381-4,55690-2" "OLE" 72493 "Oleandomycin" "Macrolides/lincosamides" "J01FA05" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "amimycin,landomycin,matromycin,oleandomicina,oleandomycin,oleandomycin a,oleandomycine,oleandomycinum,romicil" 1 "g" "18960-5,378-0,379-8,380-6,381-4,55690-2"
"OMC" 54697325 "Omadacycline" "Tetracyclines" "J01AA15" "" "amadacycline,omadacycline" 0.3 "g" 0.1 "g" "73594-4,73616-5,73639-7" "OMC" 54697325 "Omadacycline" "Tetracyclines" "J01AA15" "" "amadacycline,omadacycline" 0.3 "g" 0.1 "g" "73594-4,73616-5,73639-7"
"OPT" 87880 "Optochin" "Other antibacterials" "NA" "" "numoquin,optochin,optoquine" "100055-3,73665-2" "OPT" 87880 "Optochin" "Other antibacterials" "NA" "" "numoquin,optochin,optoquine" "100055-3,73665-2"
"ORB" 60605 "Orbifloxacin" "Quinolones" "NA" "" "orbifloxacin" "35825-9,35826-7,35827-5" "ORB" 60605 "Orbifloxacin" "Quinolones" "QJ01MA95" "" "orbifloxacin" "35825-9,35826-7,35827-5"
"ORI" 16136912 "Oritavancin" "Glycopeptides" "J01XA05" "Other antibacterials" "Glycopeptide antibacterials" "orit" "kimyrsa,oritavancin" "41707-1,41708-9,41709-7,41736-0" "ORI" 16136912 "Oritavancin" "Glycopeptides" "J01XA05" "Other antibacterials" "Glycopeptide antibacterials" "orit" "kimyrsa,oritavancin" "41707-1,41708-9,41709-7,41736-0"
"ORS" "Ormetroprim/sulfamethoxazole" "Other antibacterials" "NA" "" "" "73593-6,73615-7,73638-9" "ORS" "Ormetroprim/sulfamethoxazole" "Other antibacterials" "NA" "" "" "73593-6,73615-7,73638-9"
"ORN" 28061 "Ornidazole" "Other antibacterials" "G01AF06,J01XD03,P01AB03" "Other antibacterials" "Imidazole derivatives" "" "madelen,ornidal,ornidazol,ornidazole,ornidazolum,tiberal" 1.5 "g" 1 "g" "55691-0,55692-8,55693-6,55694-4" "ORN" 28061 "Ornidazole" "Other antibacterials" "G01AF06,J01XD03,P01AB03" "Other antibacterials" "Imidazole derivatives" "" "madelen,ornidal,ornidazol,ornidazole,ornidazolum,tiberal" 1.5 "g" 1 "g" "55691-0,55692-8,55693-6,55694-4"
"OTE" 77050711 "Oteseconazole" "Antifungals/antimycotics" "J02AC06" "Antimycotics for systemic use" "Triazole derivatives" "" "oteseconazole" "" "OTE" 77050711 "Oteseconazole" "Antifungals/antimycotics" "J02AC06" "Antimycotics for systemic use" "Triazole derivatives" "" "oteseconazole" 21 "mg" ""
"OXA" 6196 "Oxacillin" "Beta-lactams/penicillins" "J01CF04" "Beta-lactam antibacterials, penicillins" "Beta-lactamase resistant penicillins" "ox,oxa,oxac,oxal,oxs" "bactocill,ossacillina,oxacilina,oxacillin,oxacillin sodium,oxacilline,oxacillinum,oxazocillin,oxazocilline,prostaphlin,prostaphlyn,sodium oxacillin" 2 "g" 2 "g" "18961-3,25265-0,382-2,383-0,384-8,385-5,3882-8,7039-1" "OXA" 6196 "Oxacillin" "Beta-lactams/penicillins" "J01CF04" "Beta-lactam antibacterials, penicillins" "Beta-lactamase resistant penicillins" "ox,oxa,oxac,oxal,oxs" "bactocill,ossacillina,oxacilina,oxacillin,oxacillin sodium,oxacilline,oxacillinum,oxazocillin,oxazocilline,prostaphlin,prostaphlyn,sodium oxacillin" 2 "g" 2 "g" "18961-3,25265-0,382-2,383-0,384-8,385-5,3882-8,7039-1"
"OXO" 4628 "Oxolinic acid" "Quinolones" "J01MB05" "Quinolone antibacterials" "Other quinolones" "" "acide oxolinique,acido ossolico,acido oxolinico,acidum oxolinicum,aqualinic,cistopax,dioxacin,emyrenil,gramurin,inoxyl,nidantin,oksaren,orthurine,ossian,oxoboi,oxolinic,oxolinic acid,pietil,prodoxal,prodoxol,starner,tiurasin,ultibid,urinox,uritrate,urotrate,uroxol,utibid" 1 "g" "" "OXO" 4628 "Oxolinic acid" "Quinolones" "J01MB05" "Quinolone antibacterials" "Other quinolones" "" "acide oxolinique,acido ossolico,acido oxolinico,acidum oxolinicum,aqualinic,cistopax,dioxacin,emyrenil,gramurin,inoxyl,nidantin,oksaren,orthurine,ossian,oxoboi,oxolinic,oxolinic acid,pietil,prodoxal,prodoxol,starner,tiurasin,ultibid,urinox,uritrate,urotrate,uroxol,utibid" 1 "g" ""
"OXY" 54675779 "Oxytetracycline" "Tetracyclines" "D06AA03,G01AA07,J01AA06,S01AA04" "Tetracyclines" "Tetracyclines" "" "adamycin,berkmycen,biostat,biostat pa,bisolvomycin,dabicycline,dalimycin,embryostat,fanterrin,galsenomycin,geomycin,geotilin,hydroxytetracyclinum,imperacin,lenocycline,macocyn,medamycin,mepatar,oksisyklin,ossitetraciclina,oxacycline,oxitetraciclina,oxitetracyclin,oxitetracycline,oxitetracyclinum,oxydon,oxymycin,oxymykoin,oxypam,oxysteclin,oxyterracin,oxyterracine,oxyterracyne,oxytetracid,oxytetracyclin,oxytetracycline,oxytetracycline base,oxytetracyclinum,proteroxyna,riomitsin,ryomycin,solkaciclina,stecsolin,stevacin,tarocyn,tarosin,teravit,terrafungine,terramitsin,terramycin,terramycin im,terramycine,tetran,unimycin,ursocyclin,ursocycline,vendarcin" 1 "g" 1 "g" "17396-3,18962-1,25266-8,386-3,387-1,388-9,389-7,55699-3,87595-5" "OXY" 54675779 "Oxytetracycline" "Tetracyclines" "A01AB25,D06AA03,G01AA07,J01AA06,S01AA04" "Tetracyclines" "Tetracyclines" "" "adamycin,berkmycen,biostat,biostat pa,bisolvomycin,dabicycline,dalimycin,embryostat,fanterrin,galsenomycin,geomycin,geotilin,hydroxytetracyclinum,imperacin,lenocycline,macocyn,medamycin,mepatar,oksisyklin,ossitetraciclina,oxacycline,oxitetraciclina,oxitetracyclin,oxitetracycline,oxitetracyclinum,oxydon,oxymycin,oxymykoin,oxypam,oxysteclin,oxyterracin,oxyterracine,oxyterracyne,oxytetracid,oxytetracyclin,oxytetracycline,oxytetracycline base,oxytetracyclinum,proteroxyna,riomitsin,ryomycin,solkaciclina,stecsolin,stevacin,tarocyn,tarosin,teravit,terrafungine,terramitsin,terramycin,terramycin im,terramycine,tetran,unimycin,ursocyclin,ursocycline,vendarcin" 1 "g" 1 "g" "17396-3,18962-1,25266-8,386-3,387-1,388-9,389-7,55699-3,87595-5"
"OZN" "Ozenoxacin" "D06AX14" "" "ozadub,ozenoxacin,ozenoxacin cream" "" "OZN" "Ozenoxacin" "D06AX14" "" "ozadub,ozenoxacin,ozenoxacin cream" ""
"PAS" 4649 "P-aminosalicylic acid" "Antimycobacterials" "NA" "" "aminopar,aminosalicylic,aminosalicylic acid,aminosalyl,aminox,apacil,deapasil,entepas,ferrosan,gabbropas,granupas,helipidyl,hellipidyl,neopasalate,osacyl,pamacyl,pamisyl,paramycin,parasal,parasalicil,parasalindon,pasalon,pasara,pascorbic,pasdium,paser granules,paskalium,pasmed,pasnodia,pasolac,propasa,rezipas,teebacin" "" "PAS" 4649 "P-aminosalicylic acid" "Antimycobacterials" "NA" "" "aminopar,aminosalicylic,aminosalicylic acid,aminosalyl,aminox,apacil,deapasil,entepas,ferrosan,gabbropas,granupas,helipidyl,hellipidyl,neopasalate,osacyl,pamacyl,pamisyl,paramycin,parasal,parasalicil,parasalindon,pasalon,pasara,pascorbic,pasdium,paser granules,paskalium,pasmed,pasnodia,pasolac,propasa,rezipas,teebacin" ""
"PAN" 72015 "Panipenem" "Carbapenems" "NA,J01DH55" "" "panipenem,panipenem/betamipron,panipenemum,penipanem" "100056-1,53823-1" "PAN" 72015 "Panipenem" "Carbapenems" "NA,J01DH55" "" "panipenem,panipenem/betamipron,panipenemum,penipanem" 2 "g" "100056-1,53823-1"
"PAR" 165580 "Paromomycin" "Other antibacterials" "A07AA06" "" "aminosidin,aminosidine,aminosidine i,aminosidine sulfate,amminosidin,crestomycin,estomycin,gabbromicina,gabbromycin,gabromycin,humatin,humycin,hydroxymycin,hydroxymycin sulfate,monomycin,monomycin a,neomycin e,paramomycin,paramomycin sulfate,paromomicina,paromomycin,paromomycin i,paromomycine,paromomycinum,paucimycin,paucimycinum,quintomycin c" 3 "g" "51719-3,53824-9,55700-9,55701-7,55702-5" "PAR" 165580 "Paromomycin" "Other antibacterials" "A07AA06" "" "aminosidin,aminosidine,aminosidine i,aminosidine sulfate,amminosidin,crestomycin,estomycin,gabbromicina,gabbromycin,gabromycin,humatin,humycin,hydroxymycin,hydroxymycin sulfate,monomycin,monomycin a,neomycin e,paramomycin,paramomycin sulfate,paromomicina,paromomycin,paromomycin i,paromomycine,paromomycinum,paucimycin,paucimycinum,quintomycin c" 3 "g" "51719-3,53824-9,55700-9,55701-7,55702-5"
"PAZ" 65957 "Pazufloxacin" "Quinolones" "J01MA18" "Quinolone antibacterials" "Fluoroquinolones" "" "pazufloxacin,pazufloxacine,pazufloxacino,pazufloxacinum" 1 "g" "" "PAZ" 65957 "Pazufloxacin" "Quinolones" "J01MA18" "Quinolone antibacterials" "Fluoroquinolones" "" "pazufloxacin,pazufloxacine,pazufloxacino,pazufloxacinum" 1 "g" ""
"PEF" 51081 "Pefloxacin" "Quinolones" "J01MA03" "Quinolone antibacterials" "Fluoroquinolones" "pefl" "abactal,labocton,pefloxacin,pefloxacine,pefloxacinium,pefloxacino,pefloxacinum,perfloxacin,silver pefloxacin" 0.8 "g" 0.8 "g" "18963-9,35828-3,390-5,3906-5,7040-9" "PEF" 51081 "Pefloxacin" "Quinolones" "J01MA03" "Quinolone antibacterials" "Fluoroquinolones" "pefl" "abactal,labocton,pefloxacin,pefloxacine,pefloxacinium,pefloxacino,pefloxacinum,perfloxacin,silver pefloxacin" 0.8 "g" 0.8 "g" "18963-9,35828-3,390-5,3906-5,7040-9"
@ -330,7 +330,7 @@
"PIS" "Piperacillin/sulbactam" "Beta-lactams/penicillins" "NA" "" "" "54197-9,54198-7,54199-5,55704-1" "PIS" "Piperacillin/sulbactam" "Beta-lactams/penicillins" "NA" "" "" "54197-9,54198-7,54199-5,55704-1"
"TZP" 461573 "Piperacillin/tazobactam" "Beta-lactams/penicillins" "J01CR05" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "p/t,piptaz,piptazo,pit,pita,pt,ptc,ptz,tzp" "tazocel,tazocillin,tazocin,zosyn" 14 "g" "101491-9,18970-4,411-9,412-7,413-5,414-3,7044-1" "TZP" 461573 "Piperacillin/tazobactam" "Beta-lactams/penicillins" "J01CR05" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "p/t,piptaz,piptazo,pit,pita,pt,ptc,ptz,tzp" "tazocel,tazocillin,tazocin,zosyn" 14 "g" "101491-9,18970-4,411-9,412-7,413-5,414-3,7044-1"
"PRC" 71978 "Piridicillin" "Beta-lactams/penicillins" "NA" "" "piridicillin" "" "PRC" 71978 "Piridicillin" "Beta-lactams/penicillins" "NA" "" "piridicillin" ""
"PRL" 157385 "Pirlimycin" "Macrolides/lincosamides" "NA" "" "pirlimycin,pirlimycina,pirlimycine,pirlimycinum,pirsue" "35829-1,35830-9,35831-7" "PRL" 157385 "Pirlimycin" "Macrolides/lincosamides" "QJ51FF90" "" "pirlimycin,pirlimycina,pirlimycine,pirlimycinum,pirsue" "35829-1,35830-9,35831-7"
"PIR" 4855 "Piromidic acid" "Quinolones" "J01MB03" "Quinolone antibacterials" "Other quinolones" "" "acide piromidique,acido piromidico,acidum piromidicum,actrun c,bactramyl,enterol,gastrurol,panacid,pirodal,piromidate,piromidic acid,piromidicacid,pyrido,reelon,septural,urisept,uropir,zaomeal" 2 "g" "" "PIR" 4855 "Piromidic acid" "Quinolones" "J01MB03" "Quinolone antibacterials" "Other quinolones" "" "acide piromidique,acido piromidico,acidum piromidicum,actrun c,bactramyl,enterol,gastrurol,panacid,pirodal,piromidate,piromidic acid,piromidicacid,pyrido,reelon,septural,urisept,uropir,zaomeal" 2 "g" ""
"PVM" 33478 "Pivampicillin" "Beta-lactams/penicillins" "J01CA02" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "berocillin,pivaloylampicillin,pivampicilina,pivampicillin,pivampicilline,pivampicillinum,pondocillin" 1.05 "g" "18971-2,415-0,416-8,417-6,418-4" "PVM" 33478 "Pivampicillin" "Beta-lactams/penicillins" "J01CA02" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "berocillin,pivaloylampicillin,pivampicilina,pivampicillin,pivampicilline,pivampicillinum,pondocillin" 1.05 "g" "18971-2,415-0,416-8,417-6,418-4"
"PME" 115163 "Pivmecillinam" "Beta-lactams/penicillins" "J01CA08" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "amdinocillin pivoxil,coactabs,hydroxymethyl,pivmecilinamo,pivmecillinam,pivmecillinam hcl,pivmecillinamum" 0.6 "g" "" "PME" 115163 "Pivmecillinam" "Beta-lactams/penicillins" "J01CA08" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "amdinocillin pivoxil,coactabs,hydroxymethyl,pivmecilinamo,pivmecillinam,pivmecillinam hcl,pivmecillinamum" 0.6 "g" ""
@ -338,9 +338,9 @@
"PLB" 49800004 "Polymyxin B" "Polymyxins" "A07AA05,J01XB02,S01AA18,S02AA11,S03AA03" "Other antibacterials" "Polymyxins" "pb,pol,polb,poly,poly b,polymixin,polymixin b" "polimixina b,polumyxin b,polymixin b,polymyxine b" 3 "MU" 0.15 "g" "17473-0,18972-0,25269-2,35832-5,419-2,420-0,421-8,422-6" "PLB" 49800004 "Polymyxin B" "Polymyxins" "A07AA05,J01XB02,S01AA18,S02AA11,S03AA03" "Other antibacterials" "Polymyxins" "pb,pol,polb,poly,poly b,polymixin,polymixin b" "polimixina b,polumyxin b,polymixin b,polymyxine b" 3 "MU" 0.15 "g" "17473-0,18972-0,25269-2,35832-5,419-2,420-0,421-8,422-6"
"POP" "Polymyxin B/polysorbate 80" "Polymyxins" "NA" "" "" "" "POP" "Polymyxin B/polysorbate 80" "Polymyxins" "NA" "" "" ""
"POS" 468595 "Posaconazole" "Antifungals/antimycotics" "J02AC04" "Antimycotics for systemic use" "Triazole derivatives" "posa" "noxafil,posaconazole,posaconazole sp,posconazole" 0.3 "g" 0.3 "g" "53731-6,54186-2,54187-0,54188-8,54189-6,80545-7" "POS" 468595 "Posaconazole" "Antifungals/antimycotics" "J02AC04" "Antimycotics for systemic use" "Triazole derivatives" "posa" "noxafil,posaconazole,posaconazole sp,posconazole" 0.3 "g" 0.3 "g" "53731-6,54186-2,54187-0,54188-8,54189-6,80545-7"
"PRA" 9802884 "Pradofloxacin" "Quinolones" "NA" "" "pradofloxacin,pudofloxacin,veraflox" "76148-6,87800-9" "PRA" 9802884 "Pradofloxacin" "Quinolones" "QJ01MA97" "" "pradofloxacin,pudofloxacin,veraflox" "76148-6,87800-9"
"PRX" 71455 "Premafloxacin" "Quinolones" "NA" "" "premafloxacin,remafloxacin" "73591-0,73613-2,73636-3" "PRX" 71455 "Premafloxacin" "Quinolones" "NA" "" "premafloxacin,remafloxacin" "73591-0,73613-2,73636-3"
"PMD" 456199 "Pretomanid" "Antimycobacterials" "J04AK08" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "" "oxazine,pretomanid" "93850-6" "PMD" 456199 "Pretomanid" "Antimycobacterials" "J04AK08" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "" "oxazine,pretomanid" 0.2 "g" "93850-6"
"PRM" 6446787 "Primycin" "Macrolides/lincosamides" "NA" "" "primycin" "" "PRM" 6446787 "Primycin" "Macrolides/lincosamides" "NA" "" "primycin" ""
"PRI" 11979535 "Pristinamycin" "Macrolides/lincosamides" "J01FG01" "Macrolides, lincosamides and streptogramins" "Streptogramins" "pris" "eskalin v,mikamycin,mikamycine,mikamycinum,ostreogrycinum,pristinamycine,pristinamycinum,stafac,stafytracine,staphylomycin,starfac,streptogramin,vernamycin,virgimycin,virgimycine,virginiamycin,virginiamycina,virginiamycine,virginiamycinum" 2 "g" "32383-2,35833-3,35834-1,55709-0" "PRI" 11979535 "Pristinamycin" "Macrolides/lincosamides" "J01FG01" "Macrolides, lincosamides and streptogramins" "Streptogramins" "pris" "eskalin v,mikamycin,mikamycine,mikamycinum,ostreogrycinum,pristinamycine,pristinamycinum,stafac,stafytracine,staphylomycin,starfac,streptogramin,vernamycin,virgimycin,virgimycine,virginiamycin,virginiamycina,virginiamycine,virginiamycinum" 2 "g" "32383-2,35833-3,35834-1,55709-0"
"PRB" 5903 "Procaine benzylpenicillin" "Beta-lactams/penicillins" "J01CE09" "Beta-lactam antibacterials, penicillins" "Beta-lactamase sensitive penicillins" "" "depocillin,duphapen,hostacillin,hydracillin,jenacillin o,nopcaine,penicillin procaine,retardillin,vetspen,vitablend" 0.6 "g" "" "PRB" 5903 "Procaine benzylpenicillin" "Beta-lactams/penicillins" "J01CE09" "Beta-lactam antibacterials, penicillins" "Beta-lactamase sensitive penicillins" "" "depocillin,duphapen,hostacillin,hydracillin,jenacillin o,nopcaine,penicillin procaine,retardillin,vetspen,vitablend" 0.6 "g" ""
@ -349,13 +349,13 @@
"PTH" 666418 "Protionamide" "Antimycobacterials" "J04AD01" "Drugs for treatment of tuberculosis" "Thiocarbamide derivatives" "prot" "ektebin,peteha,prothionamide,prothionamidum,protion,protionamid,protionamida,protionamide,protionamidum,protionizina,tebeform,trevintix,tuberex" 0.75 "g" "" "PTH" 666418 "Protionamide" "Antimycobacterials" "J04AD01" "Drugs for treatment of tuberculosis" "Thiocarbamide derivatives" "prot" "ektebin,peteha,prothionamide,prothionamidum,protion,protionamid,protionamida,protionamide,protionamidum,protionizina,tebeform,trevintix,tuberex" 0.75 "g" ""
"PRU" 65947 "Prulifloxacin" "Quinolones" "J01MA17" "Quinolone antibacterials" "Fluoroquinolones" "" "prulifloxacin,pruvel,pufloxacin dioxolil,quisnon" 0.6 "g" "100058-7,76145-2" "PRU" 65947 "Prulifloxacin" "Quinolones" "J01MA17" "Quinolone antibacterials" "Fluoroquinolones" "" "prulifloxacin,pruvel,pufloxacin dioxolil,quisnon" 0.6 "g" "100058-7,76145-2"
"PZA" 1046 "Pyrazinamide" "Antimycobacterials" "J04AK01" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "pyra" "aldinamid,aldinamide,braccopiral,corsazinmid,dipimide,eprazin,farmizina,isopas,lynamide,novamid,p ezetamid,pezetamid,pharozinamide,piraldina,pirazimida,pirazinamid,pirazinamida,pirazinamide,prazina,pyrafat,pyramide,pyrazide,pyrazinamdie,pyrazinamid,pyrazinamide,pyrazinamidum,pyrazine carboxamide,pyrazineamide,pyrizinamide,rifafour,rozide,tebrazid,tebrazio,tisamid,unipyranamide,zinamide,zinastat" 1.5 "g" "11001-5,18973-8,20461-0,23632-3,25186-8,25229-6,25270-0,423-4,424-2,425-9,426-7,42935-7,55710-8,55711-6,56026-8,92242-7" "PZA" 1046 "Pyrazinamide" "Antimycobacterials" "J04AK01" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "pyra" "aldinamid,aldinamide,braccopiral,corsazinmid,dipimide,eprazin,farmizina,isopas,lynamide,novamid,p ezetamid,pezetamid,pharozinamide,piraldina,pirazimida,pirazinamid,pirazinamida,pirazinamide,prazina,pyrafat,pyramide,pyrazide,pyrazinamdie,pyrazinamid,pyrazinamide,pyrazinamidum,pyrazine carboxamide,pyrazineamide,pyrizinamide,rifafour,rozide,tebrazid,tebrazio,tisamid,unipyranamide,zinamide,zinastat" 1.5 "g" "11001-5,18973-8,20461-0,23632-3,25186-8,25229-6,25270-0,423-4,424-2,425-9,426-7,42935-7,55710-8,55711-6,56026-8,92242-7"
"QDA" 11979418 "Quinupristin/dalfopristin" "Macrolides/lincosamides" "J01FG02" "Macrolides, lincosamides and streptogramins" "Streptogramins" "q/d,qda,qida,quda,rp,syn" "" 1.5 "g" "23640-6,23641-4,33334-4,35835-8,58712-1" "QDA" 11979418 "Quinupristin/dalfopristin" "Macrolides/lincosamides" "QJ01FG02" "Macrolides, lincosamides and streptogramins" "Streptogramins" "q/d,qda,qida,quda,rp,syn" "" "23640-6,23641-4,33334-4,35835-8,58712-1"
"RAC" 56052 "Ractopamine" "Other antibacterials" "NA" "" "optaflexx,paylean,ractopamina,ractopamine,ractopaminum" "" "RAC" 56052 "Ractopamine" "Other antibacterials" "NA" "" "optaflexx,paylean,ractopamina,ractopamine,ractopaminum" ""
"RAM" 16132338 "Ramoplanin" "Glycopeptides" "NA" "" "ramoplanin" "41710-5,41711-3,41712-1,41737-8" "RAM" 16132338 "Ramoplanin" "Glycopeptides" "NA" "" "ramoplanin" "41710-5,41711-3,41712-1,41737-8"
"RZM" 10993211 "Razupenem" "Carbapenems" "NA" "" "razupenem" "73590-2,73612-4,73635-5" "RZM" 10993211 "Razupenem" "Carbapenems" "NA" "" "razupenem" "73590-2,73612-4,73635-5"
"RTP" 6918462 "Retapamulin" "Other antibacterials" "D06AX13" "Antibiotics for topical use" "Other antibiotics for topical use" "ret" "altabax,altargo,retapamulin" "" "RTP" 6918462 "Retapamulin" "Other antibacterials" "D06AX13" "Antibiotics for topical use" "Other antibiotics for topical use" "ret" "altabax,altargo,retapamulin" ""
"RZF" "Rezafungin" "Antifungals" "NA" "" "biafungin,rezafungin cation,rezafungin ion" "" "RZF" "Rezafungin" "Antifungals" "NA" "" "biafungin,rezafungin cation,rezafungin ion" ""
"RBC" 44631912 "Ribociclib" "Antifungals/antimycotics" "L01EF02" "Antimycotics for systemic use" "Triazole derivatives" "ribo" "kisqali,ribociclib" 0.45 "" "RBC" 44631912 "Ribociclib" "Antifungals/antimycotics" "L01EF02" "Antimycotics for systemic use" "Triazole derivatives" "ribo" "kisqali,ribociclib" 0.45 "g" ""
"RST" 33042 "Ribostamycin" "Aminoglycosides" "J01GB10" "Aminoglycoside antibacterials" "Other aminoglycosides" "" "dekamycin iv,hetangmycin,ribastamin,ribostamicina,ribostamycin,ribostamycine,ribostamycinum,vistamycin,xylostatin" 1 "g" "" "RST" 33042 "Ribostamycin" "Aminoglycosides" "J01GB10" "Aminoglycoside antibacterials" "Other aminoglycosides" "" "dekamycin iv,hetangmycin,ribastamin,ribostamicina,ribostamycin,ribostamycine,ribostamycinum,vistamycin,xylostatin" 1 "g" ""
"RID1" 16659285 "Ridinilazole" "Other antibacterials" "NA" "" "ridinilazole" "" "RID1" 16659285 "Ridinilazole" "Other antibacterials" "NA" "" "ridinilazole" ""
"RIB" 135398743 "Rifabutin" "Antimycobacterials" "J04AB04" "Drugs for treatment of tuberculosis" "Antibiotics" "rifb" "alfacid,ansamicin,ansamycin,ansatipin,ansatipine,assatipin,mycobutin,rifabutin,rifabutina,rifabutine,rifabutinum" 0.15 "g" "100699-8,16100-0,16386-5,16387-3,19149-4,20386-9,23630-7,24032-5,25199-1,25200-7,25201-5,42655-1,42656-9,54183-9,96113-6" "RIB" 135398743 "Rifabutin" "Antimycobacterials" "J04AB04" "Drugs for treatment of tuberculosis" "Antibiotics" "rifb" "alfacid,ansamicin,ansamycin,ansatipin,ansatipine,assatipin,mycobutin,rifabutin,rifabutina,rifabutine,rifabutinum" 0.15 "g" "100699-8,16100-0,16386-5,16387-3,19149-4,20386-9,23630-7,24032-5,25199-1,25200-7,25201-5,42655-1,42656-9,54183-9,96113-6"
@ -364,7 +364,7 @@
"RFI" "Rifampicin/isoniazid" "Antimycobacterials" "J04AM02" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "rifinah,rimactazid" "" "RFI" "Rifampicin/isoniazid" "Antimycobacterials" "J04AM02" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "rifinah,rimactazid" ""
"RPEI" "Rifampicin/pyrazinamide/ethambutol/isoniazid" "Antimycobacterials" "J04AM06" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" "" "RPEI" "Rifampicin/pyrazinamide/ethambutol/isoniazid" "Antimycobacterials" "J04AM06" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" ""
"RPI" "Rifampicin/pyrazinamide/isoniazid" "Antimycobacterials" "J04AM05" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" "" "RPI" "Rifampicin/pyrazinamide/isoniazid" "Antimycobacterials" "J04AM05" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" ""
"RFM" 6324616 "Rifamycin" "Antimycobacterials" "A07AA13,D06AX15,J04AB03,S01AA16,S02AA12" "Drugs for treatment of tuberculosis" "Antibiotics" "" "aemcolo,rifacin,rifamicina,rifamicine sv,rifamycin,rifamycine,rifamycinum,rifocin,rifocyn,rifomycin,rifomycin sv,tuborin" 0.6 "g" "" "RFM" 6324616 "Rifamycin" "Antimycobacterials" "A07AA13,D06AX15,J04AB03,S01AA16,S02AA12" "Drugs for treatment of tuberculosis" "Antibiotics" "" "aemcolo,rifacin,rifamicina,rifamicine sv,rifamycin,rifamycine,rifamycinum,rifocin,rifocyn,rifomycin,rifomycin sv,tuborin" 0.8 "g" 0.6 "g" ""
"RFP" 135403821 "Rifapentine" "Antimycobacterials" "J04AB05" "Drugs for treatment of tuberculosis" "Antibiotics" "rifp,rpt" "cyclopentyl rifampin,prifitin,priftin,rifapentin,rifapentina,rifapentine,rifapentinum" 0.11 "g" "100059-5,76627-9" "RFP" 135403821 "Rifapentine" "Antimycobacterials" "J04AB05" "Drugs for treatment of tuberculosis" "Antibiotics" "rifp,rpt" "cyclopentyl rifampin,prifitin,priftin,rifapentin,rifapentina,rifapentine,rifapentinum" 0.11 "g" "100059-5,76627-9"
"RFX" 6436173 "Rifaximin" "Other antibacterials" "A07AA11,D06AX11" "Intestinal antiinfectives" "Antibiotics" "" "fatroximin,flonorm,lormyx,lumenax,normix,redactiv,rifacol,rifamixin,rifaxidin,rifaximin,rifaximina,rifaximine,rifaximinum,rifaxin,ritacol,spiraxin,xifaxan,xifaxsan" 0.6 "g" "73589-4,73611-6,73634-8" "RFX" 6436173 "Rifaximin" "Other antibacterials" "A07AA11,D06AX11" "Intestinal antiinfectives" "Antibiotics" "" "fatroximin,flonorm,lormyx,lumenax,normix,redactiv,rifacol,rifamixin,rifaxidin,rifaximin,rifaximina,rifaximine,rifaximinum,rifaxin,ritacol,spiraxin,xifaxan,xifaxsan" 0.6 "g" "73589-4,73611-6,73634-8"
"RIT" 65633 "Ritipenem" "Carbapenems" "NA" "" "ritipenem" "" "RIT" 65633 "Ritipenem" "Carbapenems" "NA" "" "ritipenem" ""
@ -374,8 +374,8 @@
"ROS" 287180 "Rosoxacin" "Quinolones" "J01MB01" "Quinolone antibacterials" "Other quinolones" "" "acrosoxacin,eracine,eradacil,eradacin,eradicin,rosoxacin,rosoxacine,rosoxacino,rosoxacinum,roxadyl,winoxacin,winuron" 0.3 "g" "18977-9,439-0,440-8,441-6,442-4,55713-2" "ROS" 287180 "Rosoxacin" "Quinolones" "J01MB01" "Quinolone antibacterials" "Other quinolones" "" "acrosoxacin,eracine,eradacil,eradacin,eradicin,rosoxacin,rosoxacine,rosoxacino,rosoxacinum,roxadyl,winoxacin,winuron" 0.3 "g" "18977-9,439-0,440-8,441-6,442-4,55713-2"
"RXT" "Roxithromycin" "Macrolides/lincosamides" "J01FA06" "Macrolides, lincosamides and streptogramins" "Macrolides" "roxi" "roxithromycin,roxithromycine,roxithromycinum,roxitromicina,rulide" 0.3 "g" "18978-7,443-2,444-0,445-7,446-5,7046-6" "RXT" "Roxithromycin" "Macrolides/lincosamides" "J01FA06" "Macrolides, lincosamides and streptogramins" "Macrolides" "roxi" "roxithromycin,roxithromycine,roxithromycinum,roxitromicina,rulide" 0.3 "g" "18978-7,443-2,444-0,445-7,446-5,7046-6"
"RFL" 58258 "Rufloxacin" "Quinolones" "J01MA10" "Quinolone antibacterials" "Fluoroquinolones" "" "rufloxacin,rufloxacin hcl,rufloxacine,rufloxacino,rufloxacinum" 0.2 "g" "" "RFL" 58258 "Rufloxacin" "Quinolones" "J01MA10" "Quinolone antibacterials" "Fluoroquinolones" "" "rufloxacin,rufloxacin hcl,rufloxacine,rufloxacino,rufloxacinum" 0.2 "g" ""
"SAL" 3085092 "Salinomycin" "Other antibacterials" "NA" "" "coxistac,procoxacin,salinomicina,salinomycin,salinomycine,salinomycinum" "35836-6,35837-4,35838-2,87593-0" "SAL" 3085092 "Salinomycin" "Other antibacterials" "QP51BB01" "" "coxistac,procoxacin,salinomicina,salinomycin,salinomycine,salinomycinum" "35836-6,35837-4,35838-2,87593-0"
"SAR" 56208 "Sarafloxacin" "Quinolones" "NA" "" "difloxacine,difloxacino,difloxacinum,quinolone der.,saraflox,sarafloxacin,sarafloxacine,sarafloxacino,sarafloxacinum" "73588-6,73610-8,73633-0" "SAR" 56208 "Sarafloxacin" "Quinolones" "QJ01MA98" "" "difloxacine,difloxacino,difloxacinum,quinolone der.,saraflox,sarafloxacin,sarafloxacine,sarafloxacino,sarafloxacinum" "73588-6,73610-8,73633-0"
"SRC" 54681908 "Sarecycline" "Tetracyclines" "J01AA14" "Tetracyclines" "Tetracyclines" "" "sarecycline,seysara" 0.1 "g" "" "SRC" 54681908 "Sarecycline" "Tetracyclines" "J01AA14" "Tetracyclines" "Tetracyclines" "" "sarecycline,seysara" 0.1 "g" ""
"SRX" 9933415 "Sarmoxicillin" "Beta-lactams/penicillins" "NA" "" "sarmoxicillin" "" "SRX" 9933415 "Sarmoxicillin" "Beta-lactams/penicillins" "NA" "" "sarmoxicillin" ""
"SEC" 71815 "Secnidazole" "Other antibacterials" "P01AB07" "" "flagentyl,secnidal,secnidazol,secnidazole,secnidazolum,secnil,sindose,solosec" 2 "g" "" "SEC" 71815 "Secnidazole" "Other antibacterials" "P01AB07" "" "flagentyl,secnidal,secnidazol,secnidazole,secnidazolum,secnil,sindose,solosec" 2 "g" ""
@ -395,7 +395,7 @@
"SUL" 130313 "Sulbactam" "Beta-lactams/penicillins" "J01CG01" "Beta-lactam antibacterials, penicillins" "Beta-lactamase inhibitors" "" "betamaze,sulbactam,sulbactam acid,sulbactam free acid,sulbactamum" 1 "g" "41716-2,41717-0,41718-8,41739-4" "SUL" 130313 "Sulbactam" "Beta-lactams/penicillins" "J01CG01" "Beta-lactam antibacterials, penicillins" "Beta-lactamase inhibitors" "" "betamaze,sulbactam,sulbactam acid,sulbactam free acid,sulbactamum" 1 "g" "41716-2,41717-0,41718-8,41739-4"
"SBC" 20055036 "Sulbenicillin" "Beta-lactams/penicillins" "J01CA16" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "kedacillina,sulbenicilina,sulbenicillin,sulbenicilline,sulbenicillinum" 15 "g" "" "SBC" 20055036 "Sulbenicillin" "Beta-lactams/penicillins" "J01CA16" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "kedacillina,sulbenicilina,sulbenicillin,sulbenicilline,sulbenicillinum" 15 "g" ""
"SUC" 5318 "Sulconazole" "Antifungals/antimycotics" "D01AC09" "" "sulconazol,sulconazole,sulconazolum" "" "SUC" 5318 "Sulconazole" "Antifungals/antimycotics" "D01AC09" "" "sulconazol,sulconazole,sulconazolum" ""
"SUP" 6634 "Sulfachlorpyridazine" "Other antibacterials" "NA" "" "cluricol,cosulid,cosumix,durasulf,nefrosul,nsulfanilamide,prinzone vet,prinzone vet.,solfaclorpiridazina,sonilyn,sulfachlorpyridazine,sulfacloropiridazina,vetisulid" "" "SUP" 6634 "Sulfachlorpyridazine" "Other antibacterials" "QJ01EQ12" "" "cluricol,cosulid,cosumix,durasulf,nefrosul,nsulfanilamide,prinzone vet,prinzone vet.,solfaclorpiridazina,sonilyn,sulfachlorpyridazine,sulfacloropiridazina,vetisulid" ""
"SDI" 5215 "Sulfadiazine" "Trimethoprims" "J01EC02" "Sulfonamides and trimethoprim" "Intermediate-acting sulfonamides" "" "adiazin,adiazine,cocodiazine,codiazine,cremodiazine,cremotres,debenal,deltazina,diazin,diazolone,diazovit,diazyl,eskadiazine,honey diazine,liquadiazine,microsulfon,neazine,neotrizine,nsulfanilamide,palatrize,piridisir,pirimal,pyrimal,quadetts,quadramoid,sanodiazine,sildaflo,silvadene,solfadiazina,spofadrizine,sterazine,sulfacombin,sulfadiazene,sulfadiazin,sulfadiazina,sulfadiazine,sulfadiazinum,sulfapirimidin,sulfapyrimidin,sulfapyrimidine,sulfatryl,sulfazine,sulfolex,sulfonamides duplex,sulfonsol,sulfose,sulphadiazine,sulphadiazine e,terfonyl,theradiazine,thermazene,trifonamide,triple sulfa,triple sulfas,trisem,truozine,zinc sulfadiazine" 0.6 "g" "18984-5,27216-1,463-0,464-8,465-5,466-3,59742-7,6907-0,7050-8" "SDI" 5215 "Sulfadiazine" "Trimethoprims" "J01EC02" "Sulfonamides and trimethoprim" "Intermediate-acting sulfonamides" "" "adiazin,adiazine,cocodiazine,codiazine,cremodiazine,cremotres,debenal,deltazina,diazin,diazolone,diazovit,diazyl,eskadiazine,honey diazine,liquadiazine,microsulfon,neazine,neotrizine,nsulfanilamide,palatrize,piridisir,pirimal,pyrimal,quadetts,quadramoid,sanodiazine,sildaflo,silvadene,solfadiazina,spofadrizine,sterazine,sulfacombin,sulfadiazene,sulfadiazin,sulfadiazina,sulfadiazine,sulfadiazinum,sulfapirimidin,sulfapyrimidin,sulfapyrimidine,sulfatryl,sulfazine,sulfolex,sulfonamides duplex,sulfonsol,sulfose,sulphadiazine,sulphadiazine e,terfonyl,theradiazine,thermazene,trifonamide,triple sulfa,triple sulfas,trisem,truozine,zinc sulfadiazine" 0.6 "g" "18984-5,27216-1,463-0,464-8,465-5,466-3,59742-7,6907-0,7050-8"
"SLT" 122284 "Sulfadiazine/tetroxoprim" "Trimethoprims" "J01EE06" "Sulfonamides and trimethoprim" "Combinations of sulfonamides and trimethoprim, incl. derivatives" "" "cotetroxazine" "" "SLT" 122284 "Sulfadiazine/tetroxoprim" "Trimethoprims" "J01EE06" "Sulfonamides and trimethoprim" "Combinations of sulfonamides and trimethoprim, incl. derivatives" "" "cotetroxazine" ""
"SLT1" 64932 "Sulfadiazine/trimethoprim" "Trimethoprims" "J01EE02" "Sulfonamides and trimethoprim" "Combinations of sulfonamides and trimethoprim, incl. derivatives" "" "antastmon,cotrimazine,diaziprim forte,ditrim,ditrivet,sultrisan,triglobe,trimin,tucoprim,uniprim" "" "SLT1" 64932 "Sulfadiazine/trimethoprim" "Trimethoprims" "J01EE02" "Sulfonamides and trimethoprim" "Combinations of sulfonamides and trimethoprim, incl. derivatives" "" "antastmon,cotrimazine,diaziprim forte,ditrim,ditrivet,sultrisan,triglobe,trimin,tucoprim,uniprim" ""
@ -432,7 +432,7 @@
"TAL" 71447 "Talampicillin" "Beta-lactams/penicillins" "J01CA15" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "talampicilina,talampicillin,talampicilline,talampicillinum" 2 "g" "18988-6,479-6,480-4,481-2,482-0" "TAL" 71447 "Talampicillin" "Beta-lactams/penicillins" "J01CA15" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "" "talampicilina,talampicillin,talampicilline,talampicillinum" 2 "g" "18988-6,479-6,480-4,481-2,482-0"
"TLP" 163307 "Talmetoprim" "Other antibacterials" "NA" "" "talmetoprim" "" "TLP" 163307 "Talmetoprim" "Other antibacterials" "NA" "" "talmetoprim" ""
"TAZ" 123630 "Tazobactam" "Beta-lactams/penicillins" "J01CG02" "Beta-lactam antibacterials, penicillins" "Beta-lactamase inhibitors" "tazo" "tazobactam,tazobactam acid,tazobactamum,tazobactum" "41719-6,41720-4,41721-2,41740-2" "TAZ" 123630 "Tazobactam" "Beta-lactams/penicillins" "J01CG02" "Beta-lactam antibacterials, penicillins" "Beta-lactamase inhibitors" "tazo" "tazobactam,tazobactam acid,tazobactamum,tazobactum" "41719-6,41720-4,41721-2,41740-2"
"TBP" 9800194 "Tebipenem" "Carbapenems" "NA,J01DH06" "" "tebipenem pivoxil" "" "TBP" 9800194 "Tebipenem" "Carbapenems" "NA,J01DH06" "" "tebipenem pivoxil" 0.56 "g" ""
"TZD" 11234049 "Tedizolid" "Oxazolidinones" "J01XX11" "Other antibacterials" "Other antibacterials" "tedi" "sivextro,tedizolid,torezolid" 0.2 "g" 0.2 "g" "73586-0,73608-2,73631-4" "TZD" 11234049 "Tedizolid" "Oxazolidinones" "J01XX11" "Other antibacterials" "Other antibacterials" "tedi" "sivextro,tedizolid,torezolid" 0.2 "g" 0.2 "g" "73586-0,73608-2,73631-4"
"TEC" 16131923 "Teicoplanin" "Glycopeptides" "J01XA02" "Other antibacterials" "Glycopeptide antibacterials" "tec,tei,teic,tp,tpl,tpn" "targocid,tecoplanina,tecoplanine,tecoplaninum,teichomycin,teicoplanin,teicoplanina,teicoplanine,teicoplaninum" 0.4 "g" "18989-4,25534-9,25535-6,34378-0,34379-8,4043-6,483-8,484-6,485-3,486-1,7051-6,80968-1" "TEC" 16131923 "Teicoplanin" "Glycopeptides" "J01XA02" "Other antibacterials" "Glycopeptide antibacterials" "tec,tei,teic,tp,tpl,tpn" "targocid,tecoplanina,tecoplanine,tecoplaninum,teichomycin,teicoplanin,teicoplanina,teicoplanine,teicoplaninum" 0.4 "g" "18989-4,25534-9,25535-6,34378-0,34379-8,4043-6,483-8,484-6,485-3,486-1,7051-6,80968-1"
"TCM" "Teicoplanin-macromethod" "Glycopeptides" "NA" "" "" "" "TCM" "Teicoplanin-macromethod" "Glycopeptides" "NA" "" "" ""
@ -450,29 +450,29 @@
"THI" 27200 "Thiamphenicol" "Amphenicols" "J01BA02" "Amphenicols" "Amphenicols" "" "descocin,dexawin,dextrosulfenidol,dextrosulphenidol,efnicol,hyrazin,igralin,macphenicol,masatirin,neomyson,racefenicol,racefenicolo,racefenicolum,raceophenidol,racephenicol,rincrol,thiamcol,thiamphenicol,thiamphenicolum,thiocymetin,thiomycetin,thiophenicol,tiamfenicol,tiamfenicolo,urfamicina,urfamycine,vicemycetin" 1.5 "g" 1.5 "g" "41723-8,41724-6,41725-3,54169-8" "THI" 27200 "Thiamphenicol" "Amphenicols" "J01BA02" "Amphenicols" "Amphenicols" "" "descocin,dexawin,dextrosulfenidol,dextrosulphenidol,efnicol,hyrazin,igralin,macphenicol,masatirin,neomyson,racefenicol,racefenicolo,racefenicolum,raceophenidol,racephenicol,rincrol,thiamcol,thiamphenicol,thiamphenicolum,thiocymetin,thiomycetin,thiophenicol,tiamfenicol,tiamfenicolo,urfamicina,urfamycine,vicemycetin" 1.5 "g" 1.5 "g" "41723-8,41724-6,41725-3,54169-8"
"TAT" 9568512 "Thioacetazone" "Antimycobacterials" "J04AK07" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "" "aktivan,ambathizon,amithiozone,amitiozon,benthiozone,benzothiozane,benzothiozon,berculon a,berkazon,citazone,conteben,diasan,domakol,ilbion,livazone,mirizone neustab,mivizon,myvizone,neotibil,neustab,novakol,nuclon argentinian,panrone,parazone,seroden,siocarbazone,tebalon,tebecure,tebemar,tebesone i,tebethion,tebethione,tebezon,thiacetone,thiacetozone,thibon,thibone,thioacetazon,thioacetazone,thioacetazonum,thioazetazone,thiocarbazil,thiomicid,thionicid,thioparamizon,thioparamizone,thiosemicarbarzone,thiosemicarbazone,thiotebesin,thiotebezin,thiotebicina,thizone,tiacetazon,tibicur,tibion,tibione,tibizan,tibone,tioacetazon,tioacetazona,tioatsetazon,tiobicina,tiocarone,tiosecolo,tubercazon,tubigal" "" "TAT" 9568512 "Thioacetazone" "Antimycobacterials" "J04AK07" "Drugs for treatment of tuberculosis" "Other drugs for treatment of tuberculosis" "" "aktivan,ambathizon,amithiozone,amitiozon,benthiozone,benzothiozane,benzothiozon,berculon a,berkazon,citazone,conteben,diasan,domakol,ilbion,livazone,mirizone neustab,mivizon,myvizone,neotibil,neustab,novakol,nuclon argentinian,panrone,parazone,seroden,siocarbazone,tebalon,tebecure,tebemar,tebesone i,tebethion,tebethione,tebezon,thiacetone,thiacetozone,thibon,thibone,thioacetazon,thioacetazone,thioacetazonum,thioazetazone,thiocarbazil,thiomicid,thionicid,thioparamizon,thioparamizone,thiosemicarbarzone,thiosemicarbazone,thiotebesin,thiotebezin,thiotebicina,thizone,tiacetazon,tibicur,tibion,tibione,tibizan,tibone,tioacetazon,tioacetazona,tioatsetazon,tiobicina,tiocarone,tiosecolo,tubercazon,tubigal" ""
"THI1" "Thioacetazone/isoniazid" "Antimycobacterials" "J04AM04" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" "" "THI1" "Thioacetazone/isoniazid" "Antimycobacterials" "J04AM04" "Drugs for treatment of tuberculosis" "Combinations of drugs for treatment of tuberculosis" "" "" ""
"TIA" 656958 "Tiamulin" "Other antibacterials" "NA" "" "denagard,thiamutilin,tiamulin,tiamulin pamoate,tiamulina,tiamuline,tiamulinum,tiavet p" "35846-5,35847-3,35848-1,87589-8" "TIA" 656958 "Tiamulin" "Other antibacterials" "QJ01XQ01" "" "denagard,thiamutilin,tiamulin,tiamulin pamoate,tiamulina,tiamuline,tiamulinum,tiavet p" "35846-5,35847-3,35848-1,87589-8"
"TIC" 36921 "Ticarcillin" "Beta-lactams/penicillins" "J01CA13" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "tc,ti,tic,tica" "ticarcilina,ticarcillin,ticarcilline,ticarcillinum,ticillin,timentin" 15 "g" "18994-4,18995-1,25254-4,4054-3,4055-0,499-4,500-9,501-7,502-5,503-3,504-1,505-8,506-6,55716-5,55717-3,55718-1,55719-9,7053-2,7054-0" "TIC" 36921 "Ticarcillin" "Beta-lactams/penicillins" "J01CA13" "Beta-lactam antibacterials, penicillins" "Penicillins with extended spectrum" "tc,ti,tic,tica" "ticarcilina,ticarcillin,ticarcilline,ticarcillinum,ticillin,timentin" 15 "g" "18994-4,18995-1,25254-4,4054-3,4055-0,499-4,500-9,501-7,502-5,503-3,504-1,505-8,506-6,55716-5,55717-3,55718-1,55719-9,7053-2,7054-0"
"TCC" 6437075 "Ticarcillin/clavulanic acid" "Beta-lactams/penicillins" "J01CR03" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "t/c,tcc,ticl,tim,tlc" "timentin" 15 "g" "" "TCC" 6437075 "Ticarcillin/clavulanic acid" "Beta-lactams/penicillins" "J01CR03" "Beta-lactam antibacterials, penicillins" "Combinations of penicillins, incl. beta-lactamase inhibitors" "t/c,tcc,ticl,tim,tlc" "timentin" 15 "g" ""
"TGC" 54686904 "Tigecycline" "Tetracyclines" "J01AA12" "Tetracyclines" "Tetracyclines" "tgc,tig,tige" "haizheng li xing,tigeciclina,tigecyclin,tigecycline,tigecycline hydrate,tigecyclinum,tigilcycline,tygacil" 0.1 "g" "101499-2,42354-1,42355-8,42356-6,42357-4,55158-0" "TGC" 54686904 "Tigecycline" "Tetracyclines" "J01AA12" "Tetracyclines" "Tetracyclines" "tgc,tig,tige" "haizheng li xing,tigeciclina,tigecyclin,tigecycline,tigecycline hydrate,tigecyclinum,tigilcycline,tygacil" 0.1 "g" "101499-2,42354-1,42355-8,42356-6,42357-4,55158-0"
"TBQ" 65592 "Tilbroquinol" "Quinolones" "P01AA05" "" "tilbroquinol,tilbroquinolum" "" "TBQ" 65592 "Tilbroquinol" "Quinolones" "P01AA05" "" "tilbroquinol,tilbroquinolum" ""
"TIP" 24860548 "Tildipirosin" "Macrolides/lincosamides" "NA" "" "tildipirosin,zuprevo" "100060-3,88375-1,88377-7" "TIP" 24860548 "Tildipirosin" "Macrolides/lincosamides" "QJ01FA96" "" "tildipirosin,zuprevo" "100060-3,88375-1,88377-7"
"TIL" 5282521 "Tilmicosin" "Macrolides/lincosamides" "NA" "" "micotil,pulmotil,tilmicosin,tilmicosina,tilmicosine,tilmicosinum" "35849-9,35850-7,35851-5,87588-0" "TIL" 5282521 "Tilmicosin" "Macrolides/lincosamides" "QJ01FA91" "" "micotil,pulmotil,tilmicosin,tilmicosina,tilmicosine,tilmicosinum" "35849-9,35850-7,35851-5,87588-0"
"TIN" 5479 "Tinidazole" "Other antibacterials" "J01XD02,P01AB02" "Other antibacterials" "Imidazole derivatives" "tini" "amtiba,bioshik,ethyl sulfone,fasigin,fasigyn,fasigyntrade mark,fasygin,glongyn,haisigyn,pletil,simplotan,simplotantrade mark,sorquetan,symplotan,tindamax,tindamaxtrade mark,tinidazol,tinidazole,tinidazolum,tricolam,trimonase" 2 "g" 1.5 "g" "54928-7,55720-7,55721-5,55722-3" "TIN" 5479 "Tinidazole" "Other antibacterials" "G01AF21,J01XD02,P01AB02" "Other antibacterials" "Imidazole derivatives" "tini" "amtiba,bioshik,ethyl sulfone,fasigin,fasigyn,fasigyntrade mark,fasygin,glongyn,haisigyn,pletil,simplotan,simplotantrade mark,sorquetan,symplotan,tindamax,tindamaxtrade mark,tinidazol,tinidazole,tinidazolum,tricolam,trimonase" 2 "g" 1.5 "g" "54928-7,55720-7,55721-5,55722-3"
"TCR" 3001386 "Tiocarlide" "Antimycobacterials" "J04AD02" "Drugs for treatment of tuberculosis" "Thiocarbamide derivatives" "" "amixyl,datanil,disocarban,disoxyl,isoxyl,thiocarlide,tiocarlid,tiocarlida,tiocarlide,tiocarlidum" 7 "g" "" "TCR" 3001386 "Tiocarlide" "Antimycobacterials" "J04AD02" "Drugs for treatment of tuberculosis" "Thiocarbamide derivatives" "" "amixyl,datanil,disocarban,disoxyl,isoxyl,thiocarlide,tiocarlid,tiocarlida,tiocarlide,tiocarlidum" 7 "g" ""
"TDC" 10247721 "Tiodonium chloride" "Other antibacterials" "NA" "" "cloruro de tiodonio,tiodonii chloridum,tiodonium chloride" "" "TDC" 10247721 "Tiodonium chloride" "Other antibacterials" "NA" "" "cloruro de tiodonio,tiodonii chloridum,tiodonium chloride" ""
"TXC" 65788 "Tioxacin" "Quinolones" "NA" "" "tioxacin,tioxacine,tioxacino,tioxacinum,tioxic acid" "" "TXC" 65788 "Tioxacin" "Quinolones" "NA" "" "tioxacin,tioxacine,tioxacino,tioxacinum,tioxic acid" ""
"TIZ" 394397 "Tizoxanide" "Other antibacterials" "NA" "" "ntzdes" "73585-2,73607-4,73629-8" "TIZ" 394397 "Tizoxanide" "Other antibacterials" "NA" "" "ntzdes" "73585-2,73607-4,73629-8"
"TOB" 36294 "Tobramycin" "Aminoglycosides" "J01GB01,S01AA12" "Aminoglycoside antibacterials" "Other aminoglycosides" "nn,tm,to,tob,tobr" "bethkis,brulamycin,deoxykanamycin b,distobram,gernebcin,gotabiotic,kitabis,kitabis pak,nebcin,nebicin,nebramycin,nebramycin vi,obramycin,sybryx,tenebrimycin,tenemycin,tobacin,tobi podhaler,tobracin,tobradex,tobradistin,tobralex,tobramaxin,tobramicin,tobramicina,tobramitsetin,tobramycetin,tobramycin,tobramycin base,tobramycin sulfate,tobramycine,tobramycinum,tobrased,tobrasone,tobrex" 0.24 "g" "101496-8,13584-8,17808-7,18996-9,22750-4,22751-2,22752-0,25227-0,25800-4,31094-6,31095-3,31096-1,35239-3,35670-9,4057-6,4058-4,4059-2,507-4,508-2,509-0,50927-3,510-8,52962-8,59380-6,7055-7,80966-5" "TOB" 36294 "Tobramycin" "Aminoglycosides" "J01GB01,S01AA12" "Aminoglycoside antibacterials" "Other aminoglycosides" "nn,tm,to,tob,tobr" "bethkis,brulamycin,deoxykanamycin b,distobram,gernebcin,gotabiotic,kitabis,kitabis pak,nebcin,nebicin,nebramycin,nebramycin vi,obramycin,sybryx,tenebrimycin,tenemycin,tobacin,tobi podhaler,tobracin,tobradex,tobradistin,tobralex,tobramaxin,tobramicin,tobramicina,tobramitsetin,tobramycetin,tobramycin,tobramycin base,tobramycin sulfate,tobramycine,tobramycinum,tobrased,tobrasone,tobrex" 0.24 "g" "101496-8,13584-8,17808-7,18996-9,22750-4,22751-2,22752-0,25227-0,25800-4,31094-6,31095-3,31096-1,35239-3,35670-9,4057-6,4058-4,4059-2,507-4,508-2,509-0,50927-3,510-8,52962-8,59380-6,7055-7,80966-5"
"TOH" "Tobramycin-high" "Aminoglycosides" "NA" "tobra high,tobramycin high,tohl" "" "" "TOH" "Tobramycin-high" "Aminoglycosides" "NA" "tobra high,tobramycin high,tohl" "" ""
"TFX" 5517 "Tosufloxacin" "Quinolones" "J01MA22" "" "tosufloxacin" 0.45 "g" "100061-1,76146-0" "TFX" 5517 "Tosufloxacin" "Quinolones" "J01MA22,S01AE09" "" "tosufloxacin" 0.45 "g" "100061-1,76146-0"
"TMP" 5578 "Trimethoprim" "Trimethoprims" "J01EA01" "Sulfonamides and trimethoprim" "Trimethoprim and derivatives" "t,tmp,tr,tri,trim,w" "abaprim,alprim,anitrim,antrima,antrimox,bacdan,bacidal,bacide,bacterial,bacticel,bactifor,bactin,bactoprim,bactramin,bactrim,bencole,bethaprim,biosulten,briscotrim,chemotrin,colizole,colizole ds,conprim,cotrimel,cotrimoxizole,deprim,dosulfin,duocide,esbesul,espectrin,euctrim,exbesul,fermagex,fortrim,idotrim,ikaprim,infectotrimet,instalac,kombinax,lagatrim,lagatrim forte,lastrim,lescot,methoprim,metoprim,monoprim,monotrim,monotrimin,novotrimel,omstat,oraprim,pancidim,polytrim,priloprim,primosept,primsol,proloprim,protrin,purbal,resprim,resprim forte,roubac,roubal,salvatrim,septrin ds,septrin forte,septrin s,setprin,sinotrim,stopan,streptoplus,sugaprim,sulfamar,sulfamethoprim,sulfoxaprim,sulthrim,sultrex,syraprim,tiempe,tmp smx,toprim,trimanyl,trimethioprim,trimethopim,trimethoprim,trimethoprime,trimethoprimum,trimethopriom,trimetoprim,trimetoprima,trimexazole,trimexol,trimezol,trimogal,trimono,trimopan,trimpex,triprim,trisul,trisulcom,trisulfam,trisural,uretrim,urobactrim,utetrin,velaten,wellcoprim,wellcoprin,xeroprim,zamboprim" 0.4 "g" 0.4 "g" "101495-0,11005-6,17747-7,18997-7,18998-5,20387-7,23614-1,23631-5,25273-4,32342-8,4079-0,4080-8,4081-6,511-6,512-4,513-2,514-0,515-7,516-5,517-3,518-1,55584-7,7056-5,7057-3,80552-3,80973-1" "TMP" 5578 "Trimethoprim" "Trimethoprims" "J01EA01" "Sulfonamides and trimethoprim" "Trimethoprim and derivatives" "t,tmp,tr,tri,trim,w" "abaprim,alprim,anitrim,antrima,antrimox,bacdan,bacidal,bacide,bacterial,bacticel,bactifor,bactin,bactoprim,bactramin,bactrim,bencole,bethaprim,biosulten,briscotrim,chemotrin,colizole,colizole ds,conprim,cotrimel,cotrimoxizole,deprim,dosulfin,duocide,esbesul,espectrin,euctrim,exbesul,fermagex,fortrim,idotrim,ikaprim,infectotrimet,instalac,kombinax,lagatrim,lagatrim forte,lastrim,lescot,methoprim,metoprim,monoprim,monotrim,monotrimin,novotrimel,omstat,oraprim,pancidim,polytrim,priloprim,primosept,primsol,proloprim,protrin,purbal,resprim,resprim forte,roubac,roubal,salvatrim,septrin ds,septrin forte,septrin s,setprin,sinotrim,stopan,streptoplus,sugaprim,sulfamar,sulfamethoprim,sulfoxaprim,sulthrim,sultrex,syraprim,tiempe,tmp smx,toprim,trimanyl,trimethioprim,trimethopim,trimethoprim,trimethoprime,trimethoprimum,trimethopriom,trimetoprim,trimetoprima,trimexazole,trimexol,trimezol,trimogal,trimono,trimopan,trimpex,triprim,trisul,trisulcom,trisulfam,trisural,uretrim,urobactrim,utetrin,velaten,wellcoprim,wellcoprin,xeroprim,zamboprim" 0.4 "g" 0.4 "g" "101495-0,11005-6,17747-7,18997-7,18998-5,20387-7,23614-1,23631-5,25273-4,32342-8,4079-0,4080-8,4081-6,511-6,512-4,513-2,514-0,515-7,516-5,517-3,518-1,55584-7,7056-5,7057-3,80552-3,80973-1"
"SXT" 358641 "Trimethoprim/sulfamethoxazole" "Trimethoprims" "J01EE01" "Sulfonamides and trimethoprim" "Combinations of sulfonamides and trimethoprim, incl. derivatives" "cot,cotrim,sxt,t/s,trsu,trsx,ts" "abacin,abactrim,agoprim,alfatrim,aposulfatrim,bacteral,bacterial forte,bactilen,bactiver,bacton,bactoreduct,bactrim,bactrim ds,bactrim forte,bactrim pediatric,bactrimel,bactrizol,bactromin,bactropin,baktar,belcomycine,berlocid,bibacrim,biseptol,chemitrim,chemotrim,ciplin,colimycin,colimycin sulphate,colisticin,colistimethate,colistimethate sodium,colistin sulfate,colistin sulphate,colomycin,coly-mycin,cotribene,cotrim d.s.,cotrim eu rho,cotrim holsen,cotrim.l.u.t.,cotrimaxazol,cotrimazole,cotrimhexal,cotrimoxazol,cotrimoxazol al,cotrimoxazole,cotrimstada,cotriver,dibaprim,drylin,duratrimet,eltrianyl,escoprim,esteprim,eusaprim,fectrim,gantaprim,gantaprin,gantrim,groprim,helveprim,imexim,jenamoxazol,kemoprim,kepinol,kepinol forte,laratrim,linaris,maxtrim,microtrim,microtrim forte,mikrosid,momentol,oecotrim,oriprim,oxaprim,pantoprim,polymyxin e,polymyxin e. sulfate,primazole,promixin,septra,septra ds,septra grape,septrim,septrin,servitrim,sigaprim,sigaprin,sulfatrim pediatric,sulfotrim,sulfotrimin,sulmeprim pediatric,sulprim,sumetrolim,supracombin,suprim,tacumil,teleprim,teleprin,thiocuran,totazina,tribakin,trifen,trigonyl,trimesulf,trimetho comp,trimethoprimsulfa,trimetoger,trimexazol,trimforte,trimosulfa,uroplus,uroplus ds,uroplus ss" "101495-0,18998-5,20387-7,23631-5,25273-4,32342-8,4081-6,515-7,516-5,517-3,518-1,7057-3" "SXT" 358641 "Trimethoprim/sulfamethoxazole" "Trimethoprims" "J01EE01" "Sulfonamides and trimethoprim" "Combinations of sulfonamides and trimethoprim, incl. derivatives" "cot,cotrim,sxt,t/s,trsu,trsx,ts" "abacin,abactrim,agoprim,alfatrim,aposulfatrim,bacteral,bacterial forte,bactilen,bactiver,bacton,bactoreduct,bactrim,bactrim ds,bactrim forte,bactrim pediatric,bactrimel,bactrizol,bactromin,bactropin,baktar,belcomycine,berlocid,bibacrim,biseptol,chemitrim,chemotrim,ciplin,colimycin,colimycin sulphate,colisticin,colistimethate,colistimethate sodium,colistin sulfate,colistin sulphate,colomycin,coly-mycin,cotribene,cotrim d.s.,cotrim eu rho,cotrim holsen,cotrim.l.u.t.,cotrimaxazol,cotrimazole,cotrimhexal,cotrimoxazol,cotrimoxazol al,cotrimoxazole,cotrimstada,cotriver,dibaprim,drylin,duratrimet,eltrianyl,escoprim,esteprim,eusaprim,fectrim,gantaprim,gantaprin,gantrim,groprim,helveprim,imexim,jenamoxazol,kemoprim,kepinol,kepinol forte,laratrim,linaris,maxtrim,microtrim,microtrim forte,mikrosid,momentol,oecotrim,oriprim,oxaprim,pantoprim,polymyxin e,polymyxin e. sulfate,primazole,promixin,septra,septra ds,septra grape,septrim,septrin,servitrim,sigaprim,sigaprin,sulfatrim pediatric,sulfotrim,sulfotrimin,sulmeprim pediatric,sulprim,sumetrolim,supracombin,suprim,tacumil,teleprim,teleprin,thiocuran,totazina,tribakin,trifen,trigonyl,trimesulf,trimetho comp,trimethoprimsulfa,trimetoger,trimexazol,trimforte,trimosulfa,uroplus,uroplus ds,uroplus ss" "101495-0,18998-5,20387-7,23631-5,25273-4,32342-8,4081-6,515-7,516-5,517-3,518-1,7057-3"
"TRL" 202225 "Troleandomycin" "Macrolides/lincosamides" "J01FA08" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "acetyloleandomycin,aovine,cyclamycin,evramicina,matromicina,matromycin t,micotil,oleandocetine,oleandomycin,t.a.o.,treolmicina,tribiocillina,triocetin,triolan,troleandomicina,troleandomycin,troleandomycine,troleandomycinum,viamicina,wytrion" 1 "g" "18999-3,519-9,520-7,521-5,522-3" "TRL" 202225 "Troleandomycin" "Macrolides/lincosamides" "J01FA08" "Macrolides, lincosamides and streptogramins" "Macrolides" "" "acetyloleandomycin,aovine,cyclamycin,evramicina,matromicina,matromycin t,micotil,oleandocetine,oleandomycin,t.a.o.,treolmicina,tribiocillina,triocetin,triolan,troleandomicina,troleandomycin,troleandomycine,troleandomycinum,viamicina,wytrion" 1 "g" "18999-3,519-9,520-7,521-5,522-3"
"TRO" 55886 "Trospectomycin" "Other antibacterials" "NA" "" "rubidiumnitrate,trospectinomycin,trospectomicina,trospectomycin,trospectomycine,trospectomycinum" "" "TRO" 55886 "Trospectomycin" "Other antibacterials" "NA" "" "rubidiumnitrate,trospectinomycin,trospectomicina,trospectomycin,trospectomycine,trospectomycinum" ""
"TVA" 62959 "Trovafloxacin" "Quinolones" "J01MA13" "Quinolone antibacterials" "Fluoroquinolones" "trov" "trovafloxacin,trovan" 0.2 "g" 0.2 "g" "23642-2,23643-0,35855-6,7058-1" "TVA" 62959 "Trovafloxacin" "Quinolones" "J01MA13" "Quinolone antibacterials" "Fluoroquinolones" "trov" "trovafloxacin,trovan" 0.2 "g" 0.2 "g" "23642-2,23643-0,35855-6,7058-1"
"TUL" 9832301 "Tulathromycin" "Macrolides/lincosamides" "NA" "" "draxxin,tulathrmycin a,tulathromycin,tulathromycin a" "76149-4,87798-5" "TUL" 9832301 "Tulathromycin" "Macrolides/lincosamides" "QJ01FA94" "" "draxxin,tulathrmycin a,tulathromycin,tulathromycin a" "76149-4,87798-5"
"TYL" 5280440 "Tylosin" "Macrolides/lincosamides" "NA" "" "fradizine,tilosina,tylocine,tylosin,tylosin a,tylosine,tylosinum" "35856-4,35857-2,35858-0,87587-2" "TYL" 5280440 "Tylosin" "Macrolides/lincosamides" "QJ01FA90,QJ51FA90" "" "fradizine,tilosina,tylocine,tylosin,tylosin a,tylosine,tylosinum" "35856-4,35857-2,35858-0,87587-2"
"TYL1" 6441094 "Tylvalosin" "Macrolides/lincosamides" "NA" "tvn" "tylvalosin" "101526-2,87586-4" "TYL1" 6441094 "Tylvalosin" "Macrolides/lincosamides" "QJ01FA92" "tvn" "tylvalosin" "101526-2,87586-4"
"PRU1" 124225 "Ulifloxacin (Prulifloxacin)" "Other antibacterials" "NA" "" "ulifloxacin" "" "PRU1" 124225 "Ulifloxacin (Prulifloxacin)" "Other antibacterials" "NA" "" "ulifloxacin" ""
"VAN" 14969 "Vancomycin" "Glycopeptides" "A07AA09,J01XA01,S01AA28" "Other antibacterials" "Glycopeptide antibacterials" "va,van,vanc" "vancocin,vancocin hcl,vancoled,vancomicina,vancomycin,vancomycin hcl,vancomycine,vancomycinum,vancor,viomycin derivative" 2 "g" 2 "g" "13586-3,13587-1,19000-9,20578-1,23615-8,25228-8,31012-8,39092-2,39796-8,39797-6,4089-9,4090-7,4091-5,4092-3,50938-0,523-1,524-9,525-6,526-4,59381-4,7059-9,92241-9,97657-1" "VAN" 14969 "Vancomycin" "Glycopeptides" "A07AA09,J01XA01,S01AA28" "Other antibacterials" "Glycopeptide antibacterials" "va,van,vanc" "vancocin,vancocin hcl,vancoled,vancomicina,vancomycin,vancomycin hcl,vancomycine,vancomycinum,vancor,viomycin derivative" 2 "g" 2 "g" "13586-3,13587-1,19000-9,20578-1,23615-8,25228-8,31012-8,39092-2,39796-8,39797-6,4089-9,4090-7,4091-5,4092-3,50938-0,523-1,524-9,525-6,526-4,59381-4,7059-9,92241-9,97657-1"
"VAM" "Vancomycin-macromethod" "Glycopeptides" "NA" "" "" "" "VAM" "Vancomycin-macromethod" "Glycopeptides" "NA" "" "" ""

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
c4a5519e0ecc74220fc768e944a372f7 25f9e2b995124710eb121cc4e62eba16

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@ -754,12 +754,20 @@ antibiotics <- antibiotics %>%
# update ATC codes from WHOCC website ------------------------------------- # update ATC codes from WHOCC website -------------------------------------
# last time checked: 2022-10-29 # last time checked: 2024-02-22
library(rvest) library(rvest)
updated_atc <- as.list(antibiotics$atc) updated_atc <- as.list(antibiotics$atc)
get_atcs <- function(ab_name, url = "https://www.whocc.no/atc_ddd_index/") { get_atcs <- function(ab_name, type = "human") {
if (type == "human") {
url <- "https://www.whocc.no/atc_ddd_index/"
} else if (type == "veterinary") {
url <- "https://www.whocc.no/atcvet/atcvet_index/"
} else {
stop("invalid type")
}
ab_name <- gsub("/", " and ", tolower(ab_name), fixed = TRUE) ab_name <- gsub("/", " and ", tolower(ab_name), fixed = TRUE)
# we will do a search on their website, which means: # we will do a search on their website, which means:
@ -780,6 +788,7 @@ get_atcs <- function(ab_name, url = "https://www.whocc.no/atc_ddd_index/") {
html_node("table") %>% html_node("table") %>%
# transform it to an R data set # transform it to an R data set
html_table(header = FALSE) html_table(header = FALSE)
# and get the ATCs (first column) of only exact hits # and get the ATCs (first column) of only exact hits
unique(as.character(atc_tbl[which(tolower(atc_tbl[, 2, drop = TRUE]) == ab_name), 1, drop = TRUE])) unique(as.character(atc_tbl[which(tolower(atc_tbl[, 2, drop = TRUE]) == ab_name), 1, drop = TRUE]))
} }
@ -790,7 +799,10 @@ for (i in seq_len(nrow(antibiotics))) {
" - Downloading ", antibiotics$name[i], " - Downloading ", antibiotics$name[i],
appendLF = FALSE appendLF = FALSE
) )
atcs <- get_atcs(antibiotics$name[i]) atcs <- get_atcs(antibiotics$name[i], type = "human")
if (all(is.na(atcs))) {
atcs <- get_atcs(antibiotics$name[i], type = "veterinary")
}
if (length(atcs) > 0) { if (length(atcs) > 0) {
updated_atc[[i]] <- atcs updated_atc[[i]] <- atcs
message(" (", length(atcs), " results)") message(" (", length(atcs), " results)")
@ -805,7 +817,7 @@ antibiotics$atc <- updated_atc
# update DDDs from WHOCC website ------------------------------------------ # update DDDs from WHOCC website ------------------------------------------
# last time checked: 2022-10-29 # last time checked: 2024-02-22
ddd_oral <- rep(NA_real_, nrow(antibiotics)) ddd_oral <- rep(NA_real_, nrow(antibiotics))
ddd_oral_units <- rep(NA_character_, nrow(antibiotics)) ddd_oral_units <- rep(NA_character_, nrow(antibiotics))
ddd_iv <- rep(NA_real_, nrow(antibiotics)) ddd_iv <- rep(NA_real_, nrow(antibiotics))

View File

@ -213,7 +213,10 @@ unknown <- breakpoints %>%
breakpoints %>% breakpoints %>%
filter(code %in% unknown) %>% filter(code %in% unknown) %>%
count(GUIDELINES, YEAR, ORGANISM_CODE, BREAKPOINT_TYPE, sort = TRUE) count(GUIDELINES, YEAR, ORGANISM_CODE, BREAKPOINT_TYPE, sort = TRUE)
# these codes are currently (2023-07-08): clu, kma. No clue (are not in MO list of WHONET), so remove them: # 2024-02-22: clu and kma are know (see below), fix the PBI one
breakpoints$mo[breakpoints$ORGANISM_CODE == "PBI"] <- as.mo("Parabacteroides")
breakpoints$ORGANISM_CODE[breakpoints$ORGANISM_CODE == "PBI"] <- "Parabacteroides"
# 2023-07-08: these codes are currently: clu, kma. No clue (are not in MO list of WHONET), so remove them:
breakpoints <- breakpoints %>% breakpoints <- breakpoints %>%
filter(!is.na(mo)) filter(!is.na(mo))
@ -236,6 +239,7 @@ breakpoints_new <- breakpoints %>%
transmute( transmute(
guideline = paste(GUIDELINES, YEAR), guideline = paste(GUIDELINES, YEAR),
type = ifelse(BREAKPOINT_TYPE == "ECOFF", "ECOFF", tolower(BREAKPOINT_TYPE)), type = ifelse(BREAKPOINT_TYPE == "ECOFF", "ECOFF", tolower(BREAKPOINT_TYPE)),
host = ifelse(BREAKPOINT_TYPE == "ECOFF", "ECOFF", tolower(HOST)),
method = TEST_METHOD, method = TEST_METHOD,
site = SITE_OF_INFECTION, site = SITE_OF_INFECTION,
mo, mo,
@ -263,15 +267,15 @@ breakpoints_new <- breakpoints %>%
gsub("", "-", ., fixed = TRUE)) %>% gsub("", "-", ., fixed = TRUE)) %>%
arrange(desc(guideline), mo, ab, type, method) %>% arrange(desc(guideline), mo, ab, type, method) %>%
filter(!(is.na(breakpoint_S) & is.na(breakpoint_R)) & !is.na(mo) & !is.na(ab)) %>% filter(!(is.na(breakpoint_S) & is.na(breakpoint_R)) & !is.na(mo) & !is.na(ab)) %>%
distinct(guideline, type, ab, mo, method, site, breakpoint_S, .keep_all = TRUE) distinct(guideline, type, host, ab, mo, method, site, breakpoint_S, .keep_all = TRUE)
# check the strange duplicates # check the strange duplicates
breakpoints_new %>% breakpoints_new %>%
mutate(id = paste(guideline, type, ab, mo, method, site)) %>% mutate(id = paste(guideline, type, host, ab, mo, method, site)) %>%
filter(id %in% .$id[which(duplicated(id))]) filter(id %in% .$id[which(duplicated(id))])
# remove duplicates # remove duplicates
breakpoints_new <- breakpoints_new %>% breakpoints_new <- breakpoints_new %>%
distinct(guideline, type, ab, mo, method, site, .keep_all = TRUE) distinct(guideline, type, host, ab, mo, method, site, .keep_all = TRUE)
# fix reference table names # fix reference table names
breakpoints_new %>% filter(guideline %like% "EUCAST", is.na(ref_tbl)) %>% View() breakpoints_new %>% filter(guideline %like% "EUCAST", is.na(ref_tbl)) %>% View()
@ -284,6 +288,10 @@ breakpoints_new <- breakpoints_new %>%
breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_S"] <- as.double(as.disk(breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_S", drop = TRUE])) breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_S"] <- as.double(as.disk(breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_S", drop = TRUE]))
breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_R"] <- as.double(as.disk(breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_R", drop = TRUE])) breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_R"] <- as.double(as.disk(breakpoints_new[which(breakpoints_new$method == "DISK"), "breakpoint_R", drop = TRUE]))
# regarding animal breakpoints, CLSI has adults and foals for horses, but only for amikacin - remove them
breakpoints_new <- breakpoints_new |>
filter(host %unlike% "foal") |>
mutate(host = ifelse(host %like% "horse", "horse", host))
# FIXES FOR WHONET ERRORS ---- # FIXES FOR WHONET ERRORS ----
@ -301,27 +309,29 @@ breakpoints_new[which(breakpoints_new$breakpoint_R == 513), "breakpoint_R"] <- 5
breakpoints_new[which(breakpoints_new$breakpoint_R == 1025), "breakpoint_R"] <- 1024 breakpoints_new[which(breakpoints_new$breakpoint_R == 1025), "breakpoint_R"] <- 1024
# fix streptococci in WHONET table of EUCAST: Strep A, B, C and G must only include these groups and not all streptococci: # fix streptococci in WHONET table of EUCAST: Strep A, B, C and G must only include these groups and not all streptococci:
clinical_breakpoints$mo[clinical_breakpoints$mo == "B_STRPT" & clinical_breakpoints$ref_tbl %like% "^strep.* a.* b.*c.*g"] <- as.mo("B_STRPT_ABCG") breakpoints_new$mo[breakpoints_new$mo == "B_STRPT" & breakpoints_new$ref_tbl %like% "^strep.* a.* b.*c.*g"] <- as.mo("B_STRPT_ABCG")
# Haemophilus same error (must only be H. influenzae) # Haemophilus same error (must only be H. influenzae)
clinical_breakpoints$mo[clinical_breakpoints$mo == "B_HMPHL" & clinical_breakpoints$ref_tbl %like% "^h.* influenzae"] <- as.mo("B_HMPHL_INFL") breakpoints_new$mo[breakpoints_new$mo == "B_HMPHL" & breakpoints_new$ref_tbl %like% "^h.* influenzae"] <- as.mo("B_HMPHL_INFL")
# EUCAST says that for H. parainfluenzae the H. influenza rules can be used, so add them # EUCAST says that for H. parainfluenzae the H. influenza rules can be used, so add them
clinical_breakpoints <- clinical_breakpoints %>% breakpoints_new <- breakpoints_new %>%
bind_rows( bind_rows(
clinical_breakpoints %>% breakpoints_new %>%
filter(guideline %like% "EUCAST", mo == "B_HMPHL_INFL") %>% filter(guideline %like% "EUCAST", mo == "B_HMPHL_INFL") %>%
mutate(mo = as.mo("B_HMPHL_PRNF")) mutate(mo = as.mo("B_HMPHL_PRNF"))
) %>% ) %>%
arrange(desc(guideline), mo, ab, type, method) arrange(desc(guideline), mo, ab, type, host, method)
# Achromobacter denitrificans is in WHONET included in their A. xylosoxidans table, must be removed # Achromobacter denitrificans is in WHONET included in their A. xylosoxidans table, must be removed
clinical_breakpoints <- clinical_breakpoints %>% filter(mo != as.mo("Achromobacter denitrificans")) breakpoints_new <- breakpoints_new %>% filter(mo != as.mo("Achromobacter denitrificans"))
# WHONET contains gentamicin breakpoints for viridans streptocci, which are intrinsic R - they meant genta-high, which is ALSO in their table, so we just remove gentamicin in viridans streptococci # WHONET contains gentamicin breakpoints for viridans streptocci, which are intrinsic R - they meant genta-high, which is ALSO in their table, so we just remove gentamicin in viridans streptococci
clinical_breakpoints <- clinical_breakpoints %>% filter(!(mo == as.mo("Streptococcus viridans") & ab == "GEN")) breakpoints_new <- breakpoints_new %>% filter(!(mo == as.mo("Streptococcus viridans") & ab == "GEN"))
# Nitrofurantoin in Staph (EUCAST) only applies to S. saprophyticus, while WHONET has the DISK correct but the MIC on genus level # Nitrofurantoin in Staph (EUCAST) only applies to S. saprophyticus, while WHONET has the DISK correct but the MIC on genus level
clinical_breakpoints$mo[clinical_breakpoints$mo == "B_STPHY" & clinical_breakpoints$ab == "NIT" & clinical_breakpoints$guideline %like% "EUCAST"] <- as.mo("B_STPHY_SPRP") breakpoints_new$mo[breakpoints_new$mo == "B_STPHY" & breakpoints_new$ab == "NIT" & breakpoints_new$guideline %like% "EUCAST"] <- as.mo("B_STPHY_SPRP")
# 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) # 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)
clinical_breakpoints$breakpoint_S[clinical_breakpoints$mo == "B_[ORD]_ENTRBCTR" & clinical_breakpoints$ab == "SAM" & clinical_breakpoints$guideline %like% "CLSI 2023" & clinical_breakpoints$method == "MIC"] <- 8 # UPDATE 2024-02-22: fixed now
# breakpoints_new$breakpoint_S[breakpoints_new$mo == "B_[ORD]_ENTRBCTR" & breakpoints_new$ab == "SAM" & breakpoints_new$guideline %like% "CLSI 2023" & breakpoints_new$method == "MIC"] <- 8
# determine rank again now that some changes were made on taxonomic level (genus -> species) # determine rank again now that some changes were made on taxonomic level (genus -> species)
clinical_breakpoints <- clinical_breakpoints %>% breakpoints_new <- breakpoints_new %>%
mutate(rank_index = case_when( mutate(rank_index = case_when(
is.na(mo_rank(mo, keep_synonyms = TRUE)) ~ 6, # for UNKNOWN, B_GRAMN, B_ANAER, B_ANAER-NEG, etc. is.na(mo_rank(mo, keep_synonyms = TRUE)) ~ 6, # for UNKNOWN, B_GRAMN, B_ANAER, B_ANAER-NEG, etc.
mo_rank(mo, keep_synonyms = TRUE) %like% "(infra|sub)" ~ 1, mo_rank(mo, keep_synonyms = TRUE) %like% "(infra|sub)" ~ 1,
@ -337,7 +347,7 @@ clinical_breakpoints <- clinical_breakpoints %>%
# EUCAST 2022 guideline: S <= 8 and R > 8 # EUCAST 2022 guideline: S <= 8 and R > 8
# WHONET file: S <= 8 and R >= 16 # WHONET file: S <= 8 and R >= 16
breakpoints_new %>% filter(guideline == "EUCAST 2023", ab == "AMC", mo == "B_[ORD]_ENTRBCTR", method == "MIC") breakpoints_new %>% filter(guideline == "EUCAST 2023", ab == "AMC", mo == "B_[ORD]_ENTRBCTR", method == "MIC")
# this will make an MIC of 12 I, which should be R, so: # this will make an MIC of 12 I, which should be R according to EUCAST, so:
breakpoints_new <- breakpoints_new %>% breakpoints_new <- breakpoints_new %>%
mutate(breakpoint_R = ifelse(guideline %like% "EUCAST" & method == "MIC" & log2(breakpoint_R) - log2(breakpoint_S) != 0, mutate(breakpoint_R = ifelse(guideline %like% "EUCAST" & method == "MIC" & log2(breakpoint_R) - log2(breakpoint_S) != 0,
pmax(breakpoint_S, breakpoint_R / 2), pmax(breakpoint_S, breakpoint_R / 2),
@ -350,7 +360,7 @@ breakpoints_new <- breakpoints_new %>%
breakpoint_R + 1, breakpoint_R + 1,
breakpoint_R breakpoint_R
)) ))
# fix missing R breakpoint where there is an S breakpoint # fill missing R breakpoint where there is an S breakpoint
breakpoints_new[which(is.na(breakpoints_new$breakpoint_R)), "breakpoint_R"] <- breakpoints_new[which(is.na(breakpoints_new$breakpoint_R)), "breakpoint_S"] breakpoints_new[which(is.na(breakpoints_new$breakpoint_R)), "breakpoint_R"] <- breakpoints_new[which(is.na(breakpoints_new$breakpoint_R)), "breakpoint_S"]

View File

@ -150,12 +150,14 @@ df_remove_nonASCII <- function(df) {
# to retrieve LPSN and authors from LPSN website # to retrieve LPSN and authors from LPSN website
get_lpsn_and_author <- function(rank, name) { get_lpsn_and_author <- function(rank, name) {
name <- gsub("^Candidatus ", "", name)
url <- paste0("https://lpsn.dsmz.de/", tolower(rank), "/", tolower(name)) url <- paste0("https://lpsn.dsmz.de/", tolower(rank), "/", tolower(name))
page_txt <- tryCatch(read_html(url), error = function(e) NULL) page_txt <- tryCatch(read_html(url), error = function(e) NULL)
if (is.null(page_txt)) { if (is.null(page_txt)) {
warning("No LPSN found for ", tolower(rank), " '", name, "'") warning("No LPSN found for ", tolower(rank), " '", name, "'")
lpsn <- NA_character_ lpsn <- NA_character_
ref <- NA_character_ ref <- NA_character_
status <- "unknown"
} else { } else {
page_txt <- page_txt %>% page_txt <- page_txt %>%
html_element("#detail-page") %>% html_element("#detail-page") %>%
@ -164,9 +166,33 @@ get_lpsn_and_author <- function(rank, name) {
ref <- page_txt %>% ref <- page_txt %>%
gsub(".*?Name: (.*[0-9]{4}?).*", "\\1", ., perl = FALSE) %>% gsub(".*?Name: (.*[0-9]{4}?).*", "\\1", ., perl = FALSE) %>%
gsub(name, "", ., fixed = TRUE) %>% gsub(name, "", ., fixed = TRUE) %>%
gsub("^\"?Candidatus ?\"?", "", .) %>%
trimws() trimws()
status <- trimws(gsub(".*Nomenclatural status:[\r\n\t ]*([a-zA-Z, ]+)[\r\n\t].*", "\\1", page_txt, perl = FALSE))
if ((status %like% "validly published" & status %unlike% "not valid") | status %like% "[\r\n\t]") {
# we used to take "accepted" for every LPSN record, also candidates. Now only for missing values and explicit accepted ones.
status <- "accepted"
} else {
status <- "not validly published"
}
}
c("lpsn" = lpsn, "ref" = ref, "status" = status)
}
# this will e.g. take the family from the root genus record, and gives all species that family
get_top_lvl <- function(current, rank, rank_target) {
if (!rank_target %in% rank) {
current[1]
} else {
out <- current[rank == rank_target][1]
if (out %in% c("", NA)) {
out <- names(sort(table(current[which(!current %in% c("", NA))]), decreasing = TRUE)[1])
if (is.null(out)) {
out <- ""
}
}
out
} }
c("lpsn" = lpsn, "ref" = ref)
} }
# MB/ August 2022: useless, does not contain full taxonomy, e.g. LPSN::request(cred, category = "family") is empty. # MB/ August 2022: useless, does not contain full taxonomy, e.g. LPSN::request(cred, category = "family") is empty.
@ -208,11 +234,12 @@ include_fungal_orders_ids <- taxonomy_gbif.bak %>%
include_fungal_orders <- taxonomy_gbif.bak %>% include_fungal_orders <- taxonomy_gbif.bak %>%
filter(taxonID %in% c(include_fungal_orders_ids$taxonID, include_fungal_orders_ids$acceptedNameUsageID)) %>% filter(taxonID %in% c(include_fungal_orders_ids$taxonID, include_fungal_orders_ids$acceptedNameUsageID)) %>%
distinct(order) %>% distinct(order) %>%
pull(order) pull(order) |>
sort()
# check some columns to validate below filters # check some columns to validate below filters
sort(table(taxonomy_gbif.bak$taxonomicStatus)) taxonomy_gbif.bak$taxonomicStatus |> table() |> sort() |> as.data.frame()
sort(table(taxonomy_gbif.bak$taxonRank)) taxonomy_gbif.bak$taxonRank |> table() |> sort() |> as.data.frame()
taxonomy_gbif <- taxonomy_gbif.bak %>% taxonomy_gbif <- taxonomy_gbif.bak %>%
# immediately filter rows we really never want # immediately filter rows we really never want
@ -223,10 +250,7 @@ taxonomy_gbif <- taxonomy_gbif.bak %>%
# include these kingdoms (no Chromista) # include these kingdoms (no Chromista)
kingdom %in% c("Archaea", "Bacteria", "Protozoa") | kingdom %in% c("Archaea", "Bacteria", "Protozoa") |
# include all of these fungal orders # include all of these fungal orders
order %in% c( order %in% include_fungal_orders |
"Eurotiales", "Microascales", "Mucorales", "Saccharomycetales",
"Schizosaccharomycetales", "Tremellales", "Onygenales", "Pneumocystales"
) |
# and all of these important genera (see "data-raw/_pre_commit_hook.R") # and all of these important genera (see "data-raw/_pre_commit_hook.R")
# (they also contain bacteria and protozoa, but these will get prevalence = 2 later on) # (they also contain bacteria and protozoa, but these will get prevalence = 2 later on)
genus %in% AMR:::MO_PREVALENT_GENERA genus %in% AMR:::MO_PREVALENT_GENERA
@ -289,9 +313,6 @@ taxonomy_gbif
taxonomy_lpsn.bak <- vroom(file_lpsn) taxonomy_lpsn.bak <- vroom(file_lpsn)
# check some columns to validate below filters
sort(table(is.na(taxonomy_lpsn.bak$record_lnk))) # accepted = TRUE
taxonomy_lpsn <- taxonomy_lpsn.bak %>% taxonomy_lpsn <- taxonomy_lpsn.bak %>%
transmute( transmute(
genus = genus_name, genus = genus_name,
@ -309,6 +330,10 @@ taxonomy_lpsn <- taxonomy_lpsn.bak %>%
lpsn_renamed_to = as.character(record_lnk) lpsn_renamed_to = as.character(record_lnk)
) %>% ) %>%
mutate(source = "LPSN") mutate(source = "LPSN")
# integrity tests
sort(table(taxonomy_lpsn$rank))
sort(table(taxonomy_lpsn$status))
taxonomy_lpsn taxonomy_lpsn
# download additional taxonomy to the domain/kingdom level (their API is not sufficient...) # download additional taxonomy to the domain/kingdom level (their API is not sufficient...)
@ -322,17 +347,22 @@ taxonomy_lpsn_missing <- tibble(
) )
for (page in LETTERS) { for (page in LETTERS) {
# this will not alter `taxonomy_lpsn` yet # this will not alter `taxonomy_lpsn` yet
message("Downloading page ", page, "...", appendLF = FALSE) message("Downloading page ", page, "...", appendLF = TRUE)
url <- paste0("https://lpsn.dsmz.de/genus?page=", page) url <- paste0("https://lpsn.dsmz.de/genus?page=", page)
x <- read_html(url) %>% x <- tryCatch(read_html(url),
error = function(e) {
message("Waiting 10 seconds because of error: ", e$message)
Sys.sleep(10)
read_html(url)
})
x <- x %>%
# class "main-list" is the main table # class "main-list" is the main table
html_element(".main-list") %>% html_element(".main-list") %>%
# get every list element with a set <id> attribute # get every list element with a set <id> attribute
html_elements("li[id]") html_elements("li[id]")
pb <- progress_bar$new(total = length(x), format = "[:bar] :current/:total :eta")
for (i in seq_len(length(x))) { for (i in seq_len(length(x))) {
if (i %% 25 == 0) { pb$tick()
message(".", appendLF = FALSE)
}
elements <- x[[i]] %>% html_elements("a") elements <- x[[i]] %>% html_elements("a")
hrefs <- elements %>% html_attr("href") hrefs <- elements %>% html_attr("href")
ranks <- hrefs %>% gsub(".*/(.*?)/.*", "\\1", .) ranks <- hrefs %>% gsub(".*/(.*?)/.*", "\\1", .)
@ -344,21 +374,26 @@ for (page in LETTERS) {
names <- names[ranks != "species"] names <- names[ranks != "species"]
ranks <- ranks[ranks != "species"] ranks <- ranks[ranks != "species"]
ranks[ranks == "domain"] <- "kingdom" ranks[ranks == "domain"] <- "kingdom"
df <- names %>% suppressMessages(
tibble() %>% df <- names %>%
t() %>% tibble() %>%
as_tibble(.name_repair = "unique") %>% t() %>%
setNames(ranks) %>% as_tibble(.name_repair = "unique") %>%
# no candidates please setNames(ranks) %>%
filter(genus %unlike% "^(Candidatus|\\[)") # no candidates please
filter(genus %unlike% "^(Candidatus|\\[)")
)
taxonomy_lpsn_missing <- taxonomy_lpsn_missing %>% taxonomy_lpsn_missing <- taxonomy_lpsn_missing %>%
bind_rows(df) bind_rows(df)
} }
message(length(x), " entries incl. candidates (cleaned total: ", nrow(taxonomy_lpsn_missing), ")") message(" => ", length(x), " entries incl. candidates (cleaned total: ", nrow(taxonomy_lpsn_missing), ")")
} }
taxonomy_lpsn_missing taxonomy_lpsn_missing <- taxonomy_lpsn_missing |> distinct()
# had to pick the right genus/family combination here:
taxonomy_lpsn_missing <- taxonomy_lpsn_missing |> filter(!(genus == "Pusillimonas" & family == "Oscillospiraceae"))
taxonomy_lpsn.bak2 <- taxonomy_lpsn.bak
taxonomy_lpsn <- taxonomy_lpsn %>% taxonomy_lpsn <- taxonomy_lpsn %>%
left_join(taxonomy_lpsn_missing, by = "genus") %>% left_join(taxonomy_lpsn_missing, by = "genus") %>%
@ -367,8 +402,10 @@ taxonomy_lpsn <- taxonomy_lpsn %>%
mutate_all(function(x) ifelse(x %like_case% " no ", NA_character_, x)) mutate_all(function(x) ifelse(x %like_case% " no ", NA_character_, x))
taxonomy_lpsn.bak2 <- taxonomy_lpsn taxonomy_lpsn.bak2 <- taxonomy_lpsn
# download family directly from LPSN website using scraping # download family directly from LPSN website using scraping, by using get_lpsn_and_author()
pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$family))) # try it first:
# get_lpsn_and_author("genus", "Escherichia")
pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$family)), format = "[:bar] :current/:total :eta")
for (f in unique(taxonomy_lpsn$family)) { for (f in unique(taxonomy_lpsn$family)) {
pb$tick() pb$tick()
if (is.na(f)) next if (is.na(f)) next
@ -381,14 +418,14 @@ for (f in unique(taxonomy_lpsn$family)) {
order = taxonomy_lpsn$order[which(taxonomy_lpsn$family == f)[1]], order = taxonomy_lpsn$order[which(taxonomy_lpsn$family == f)[1]],
family = f, family = f,
rank = "family", rank = "family",
status = "accepted", status = unname(tax_info["status"]),
source = "LPSN", source = "LPSN",
lpsn = unname(tax_info["lpsn"]), lpsn = unname(tax_info["lpsn"]),
ref = unname(tax_info["ref"]) ref = unname(tax_info["ref"])
)) ))
} }
# download order directly from LPSN website using scraping # download order directly from LPSN website using scraping
pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$order))) pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$order)), format = "[:bar] :current/:total :eta")
for (o in unique(taxonomy_lpsn$order)) { for (o in unique(taxonomy_lpsn$order)) {
pb$tick() pb$tick()
if (is.na(o)) next if (is.na(o)) next
@ -400,14 +437,14 @@ for (o in unique(taxonomy_lpsn$order)) {
class = taxonomy_lpsn$class[which(taxonomy_lpsn$order == o)[1]], class = taxonomy_lpsn$class[which(taxonomy_lpsn$order == o)[1]],
order = o, order = o,
rank = "order", rank = "order",
status = "accepted", status = unname(tax_info["status"]),
source = "LPSN", source = "LPSN",
lpsn = unname(tax_info["lpsn"]), lpsn = unname(tax_info["lpsn"]),
ref = unname(tax_info["ref"]) ref = unname(tax_info["ref"])
)) ))
} }
# download class directly from LPSN website using scraping # download class directly from LPSN website using scraping
pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$class))) pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$class)), format = "[:bar] :current/:total :eta")
for (cc in unique(taxonomy_lpsn$class)) { for (cc in unique(taxonomy_lpsn$class)) {
pb$tick() pb$tick()
if (is.na(cc)) next if (is.na(cc)) next
@ -418,14 +455,14 @@ for (cc in unique(taxonomy_lpsn$class)) {
phylum = taxonomy_lpsn$phylum[which(taxonomy_lpsn$class == cc)[1]], phylum = taxonomy_lpsn$phylum[which(taxonomy_lpsn$class == cc)[1]],
class = cc, class = cc,
rank = "class", rank = "class",
status = "accepted", status = unname(tax_info["status"]),
source = "LPSN", source = "LPSN",
lpsn = unname(tax_info["lpsn"]), lpsn = unname(tax_info["lpsn"]),
ref = unname(tax_info["ref"]) ref = unname(tax_info["ref"])
)) ))
} }
# download phylum directly from LPSN website using scraping # download phylum directly from LPSN website using scraping
pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$phylum))) pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$phylum)), format = "[:bar] :current/:total :eta")
for (p in unique(taxonomy_lpsn$phylum)) { for (p in unique(taxonomy_lpsn$phylum)) {
pb$tick() pb$tick()
if (is.na(p)) next if (is.na(p)) next
@ -435,14 +472,14 @@ for (p in unique(taxonomy_lpsn$phylum)) {
kingdom = taxonomy_lpsn$kingdom[which(taxonomy_lpsn$phylum == p)[1]], kingdom = taxonomy_lpsn$kingdom[which(taxonomy_lpsn$phylum == p)[1]],
phylum = p, phylum = p,
rank = "phylum", rank = "phylum",
status = "accepted", status = unname(tax_info["status"]),
source = "LPSN", source = "LPSN",
lpsn = unname(tax_info["lpsn"]), lpsn = unname(tax_info["lpsn"]),
ref = unname(tax_info["ref"]) ref = unname(tax_info["ref"])
)) ))
} }
# download kingdom directly from LPSN website using scraping # download kingdom directly from LPSN website using scraping
pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$kingdom))) pb <- progress_bar$new(total = length(unique(taxonomy_lpsn$kingdom)), format = "[:bar] :current/:total :eta")
for (k in unique(taxonomy_lpsn$kingdom)) { for (k in unique(taxonomy_lpsn$kingdom)) {
pb$tick() pb$tick()
if (is.na(k)) next if (is.na(k)) next
@ -451,7 +488,7 @@ for (k in unique(taxonomy_lpsn$kingdom)) {
bind_rows(tibble( bind_rows(tibble(
kingdom = k, kingdom = k,
rank = "kingdom", rank = "kingdom",
status = "accepted", status = unname(tax_info["status"]),
source = "LPSN", source = "LPSN",
lpsn = unname(tax_info["lpsn"]), lpsn = unname(tax_info["lpsn"]),
ref = unname(tax_info["ref"]) ref = unname(tax_info["ref"])
@ -469,6 +506,7 @@ saveRDS(taxonomy_gbif, "data-raw/taxonomy_gbif.rds", version = 2)
saveRDS(taxonomy_lpsn, "data-raw/taxonomy_lpsn.rds", version = 2) saveRDS(taxonomy_lpsn, "data-raw/taxonomy_lpsn.rds", version = 2)
# this allows to always get back to this point by simply loading the files from data-raw/. # this allows to always get back to this point by simply loading the files from data-raw/.
# Add full names ---------------------------------------------------------- # Add full names ----------------------------------------------------------
taxonomy_gbif <- taxonomy_gbif %>% taxonomy_gbif <- taxonomy_gbif %>%
@ -515,29 +553,28 @@ taxonomy_lpsn$lpsn_parent[taxonomy_lpsn$rank == "subspecies"] <- taxonomy_lpsn$l
# Combine the datasets ---------------------------------------------------- # Combine the datasets ----------------------------------------------------
# basis must be LPSN as it's most recent taxonomy <- taxonomy_lpsn |>
taxonomy <- taxonomy_lpsn %>% # start by adding GBIF to the bottom
# join GBIF identifiers to them bind_rows(taxonomy_gbif) |>
left_join(taxonomy_gbif %>% select(kingdom, fullname, starts_with("gbif")), # group on unique species
by = c("kingdom", "fullname") group_by(kingdom, fullname) |>
) # fill the NAs in LPSN/GBIF fields and ref with the other source (so LPSN: 123 and GBIF: NA will become LPSN: 123 and GBIF: 123)
mutate(across(matches("^(lpsn|gbif|ref)"), function(x) rep(x[!is.na(x)][1], length(x)))) |>
# for everything else, add the GBIF data # ungroup again
taxonomy <- taxonomy %>% ungroup() |>
bind_rows(taxonomy_gbif %>% # only keep unique species per kingdom
filter(!paste(kingdom, fullname) %in% paste(taxonomy$kingdom, taxonomy$fullname))) %>% distinct(kingdom, fullname, .keep_all = TRUE) |>
arrange(fullname) %>% arrange(fullname)
filter(fullname != "")
# get missing entries from existing microorganisms data set # get missing entries from existing microorganisms data set
taxonomy <- taxonomy %>% taxonomy.old <- AMR::microorganisms %>%
bind_rows(AMR::microorganisms %>%
select(all_of(colnames(taxonomy))) %>% select(all_of(colnames(taxonomy))) %>%
filter( filter(
!paste(kingdom, fullname) %in% paste(taxonomy$kingdom, taxonomy$fullname), !paste(kingdom, fullname) %in% paste(taxonomy$kingdom, taxonomy$fullname),
# these will be added later: # these will be added later:
source != "manually added" source != "manually added")
)) %>% taxonomy <- taxonomy %>%
bind_rows(taxonomy.old) %>%
arrange(fullname) %>% arrange(fullname) %>%
filter(fullname != "") filter(fullname != "")
@ -557,6 +594,29 @@ taxonomy <- taxonomy %>%
)) ))
table(taxonomy$rank, useNA = "always") table(taxonomy$rank, useNA = "always")
# at this point, it happens that some genera within kingdoms have multiple families / orders, etc., see here:
taxonomy |> filter(genus != "") |> group_by(kingdom, genus) |> filter(n_distinct(family) > 1) |> View()
# so make this universal
taxonomy <- taxonomy |>
group_by(kingdom, genus) |>
mutate(family = get_top_lvl(family, rank, "genus")) |>
group_by(kingdom, family) |>
mutate(order = get_top_lvl(order, rank, "family")) |>
group_by(kingdom, order) |>
mutate(class = get_top_lvl(class, rank, "order")) |>
group_by(kingdom, class) |>
mutate(phylum = get_top_lvl(phylum, rank, "class")) |>
ungroup()
# and remove the taxonomy where it must remain empty
taxonomy <- taxonomy |>
mutate(phylum = ifelse(rank %in% c("kingdom"), "", phylum),
class = ifelse(rank %in% c("kingdom", "phylum"), "", class),
order = ifelse(rank %in% c("kingdom", "phylum", "class"), "", order),
family = ifelse(rank %in% c("kingdom", "phylum", "class", "order"), "", family),
genus = ifelse(rank %in% c("kingdom", "phylum", "class", "order", "family"), "", genus),
species = ifelse(rank %in% c("kingdom", "phylum", "class", "order", "family", "genus"), "", species),
subspecies = ifelse(rank %in% c("kingdom", "phylum", "class", "order", "family", "genus", "species"), "", subspecies))
# Save intermediate results (0) ------------------------------------------- # Save intermediate results (0) -------------------------------------------
@ -575,28 +635,23 @@ current_gbif <- taxonomy_gbif.bak %>%
) )
# add missing kingdoms # add missing kingdoms
taxonomy <- taxonomy %>% taxonomy_all_missing <- taxonomy %>%
bind_rows( filter(kingdom != "") %>%
taxonomy %>% distinct(kingdom) %>%
filter(kingdom != "") %>% mutate(
distinct(kingdom) %>% fullname = kingdom,
mutate( rank = "kingdom"
fullname = kingdom, ) %>%
rank = "kingdom", filter(!paste(kingdom, rank) %in% paste(taxonomy$kingdom, taxonomy$rank)) %>%
status = "accepted", left_join(
source = "manually added" current_gbif %>%
) %>% select(kingdom, rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID),
filter(!paste(kingdom, rank) %in% paste(taxonomy$kingdom, taxonomy$rank)) %>% by = c("kingdom", "rank")
left_join( ) %>%
current_gbif %>% mutate(source = ifelse(!is.na(gbif), "GBIF", "manually added"),
select(kingdom, rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID), status = ifelse(!is.na(gbif), "accepted", "unknown"))
by = c("kingdom", "rank")
) %>%
mutate(source = ifelse(!is.na(gbif), "GBIF", source))
)
# 2 = phylum ... 6 = genus # 2 = phylum ... 6 = genus
taxonomy_all_missing <- NULL
for (i in 2:6) { for (i in 2:6) {
i_name <- colnames(taxonomy)[i + 1] i_name <- colnames(taxonomy)[i + 1]
message("Adding missing: ", i_name, "... ", appendLF = FALSE) message("Adding missing: ", i_name, "... ", appendLF = FALSE)
@ -606,25 +661,20 @@ for (i in 2:6) {
select(kingdom:(i + 1)) %>% select(kingdom:(i + 1)) %>%
mutate( mutate(
fullname = .[[ncol(.)]], fullname = .[[ncol(.)]],
rank = i_name, rank = i_name
status = "accepted",
source = "manually added"
) %>% ) %>%
filter(!paste(kingdom, .[[ncol(.) - 4]], rank) %in% paste(taxonomy$kingdom, taxonomy[[i + 1]], taxonomy$rank)) %>% filter(!paste(kingdom, .[[ncol(.) - 2]], rank) %in% paste(taxonomy$kingdom, taxonomy[[i + 1]], taxonomy$rank)) %>%
# get GBIF identifier where available # get GBIF identifier where available
left_join( left_join(
current_gbif %>% current_gbif %>%
select(kingdom, all_of(i_name), rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID), select(kingdom, all_of(i_name), rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID),
by = c("kingdom", "rank", i_name) by = c("kingdom", "rank", i_name)
) %>% ) %>%
mutate(source = ifelse(!is.na(gbif), "GBIF", source)) mutate(source = ifelse(!is.na(gbif), "GBIF", "manually added"),
status = ifelse(!is.na(gbif), "accepted", "unknown"))
message("n = ", nrow(to_add)) message("n = ", nrow(to_add))
if (is.null(taxonomy_all_missing)) { taxonomy_all_missing <- taxonomy_all_missing %>%
taxonomy_all_missing <- to_add bind_rows(to_add)
} else {
taxonomy_all_missing <- taxonomy_all_missing %>%
bind_rows(to_add)
}
} }
taxonomy_all_missing %>% View() taxonomy_all_missing %>% View()
@ -652,7 +702,7 @@ taxonomy <- taxonomy %>%
select(-fullname_rank, -rank_index) %>% select(-fullname_rank, -rank_index) %>%
arrange(fullname) arrange(fullname)
# now also add missing species (requires combination with genus) # now also add missing species that have subspecies (requires combination with genus)
taxonomy <- taxonomy %>% taxonomy <- taxonomy %>%
bind_rows( bind_rows(
taxonomy %>% taxonomy %>%
@ -661,9 +711,7 @@ taxonomy <- taxonomy %>%
select(kingdom:species) %>% select(kingdom:species) %>%
mutate( mutate(
fullname = paste(genus, species), fullname = paste(genus, species),
rank = "species", rank = "species"
status = "accepted",
source = "manually added"
) %>% ) %>%
filter(!paste(kingdom, genus, species, rank) %in% paste(taxonomy$kingdom, taxonomy$genus, taxonomy$species, taxonomy$rank)) %>% filter(!paste(kingdom, genus, species, rank) %in% paste(taxonomy$kingdom, taxonomy$genus, taxonomy$species, taxonomy$rank)) %>%
# get GBIF identifier where available # get GBIF identifier where available
@ -672,13 +720,15 @@ taxonomy <- taxonomy %>%
select(kingdom, genus, species = specificEpithet, rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID), select(kingdom, genus, species = specificEpithet, rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID),
by = c("kingdom", "rank", "genus", "species") by = c("kingdom", "rank", "genus", "species")
) %>% ) %>%
mutate(source = ifelse(!is.na(gbif), "GBIF", source)) mutate(source = ifelse(!is.na(gbif), "GBIF", "manually added"),
status = ifelse(!is.na(gbif), "accepted", "unknown"))
) )
# remove NAs from taxonomy again, and keep unique full names # remove NAs from taxonomy again, and keep unique full names
taxonomy <- taxonomy %>% taxonomy <- taxonomy %>%
mutate(across(kingdom:subspecies, function(x) ifelse(is.na(x), "", x))) %>% mutate(across(kingdom:subspecies, function(x) ifelse(is.na(x), "", x))) %>%
arrange(kingdom, fullname, ref) |>
distinct(kingdom, fullname, .keep_all = TRUE) %>% distinct(kingdom, fullname, .keep_all = TRUE) %>%
filter(kingdom != "") filter(kingdom != "")
@ -691,12 +741,11 @@ saveRDS(taxonomy, "data-raw/taxonomy1.rds")
# Get previously manually added entries ----------------------------------- # Get previously manually added entries -----------------------------------
manually_added <- AMR::microorganisms %>% manually_added <- AMR::microorganisms %>%
filter(source == "manually added", !paste(kingdom, fullname) %in% paste(taxonomy$kingdom, taxonomy$fullname)) %>% filter(source == "manually added",
!paste(kingdom, fullname) %in% paste(taxonomy$kingdom, taxonomy$fullname),
!rank %in% c("kingdom", "phylum", "class", "order", "family")) %>%
select(fullname:subspecies, ref, source, rank) select(fullname:subspecies, ref, source, rank)
manually_added <- manually_added %>%
bind_rows(salmonellae)
# get latest taxonomy for those entries # get latest taxonomy for those entries
for (g in unique(manually_added$genus[manually_added$genus != "" & manually_added$genus %in% taxonomy$genus])) { for (g in unique(manually_added$genus[manually_added$genus != "" & manually_added$genus %in% taxonomy$genus])) {
manually_added$family[which(manually_added$genus == g)] <- taxonomy$family[which(taxonomy$genus == g & is.na(taxonomy$lpsn))][1] manually_added$family[which(manually_added$genus == g)] <- taxonomy$family[which(taxonomy$genus == g & is.na(taxonomy$lpsn))][1]
@ -716,11 +765,14 @@ for (p in unique(manually_added$phylum[manually_added$phylum != "" & manually_ad
manually_added <- manually_added %>% manually_added <- manually_added %>%
mutate( mutate(
status = "accepted", status = "unknown",
rank = ifelse(fullname %like% "unknown", "(unknown rank)", rank) rank = ifelse(fullname %like% "unknown", "(unknown rank)", rank)
) )
manually_added manually_added
# these are now included in the new taxonomy, check them
manually_added |> filter(fullname %in% taxonomy$fullname)
taxonomy <- taxonomy %>% taxonomy <- taxonomy %>%
# here also the 'unknowns' are added, such as "(unknown fungus)" # here also the 'unknowns' are added, such as "(unknown fungus)"
bind_rows(manually_added) %>% bind_rows(manually_added) %>%
@ -728,6 +780,31 @@ taxonomy <- taxonomy %>%
table(taxonomy$rank, useNA = "always") table(taxonomy$rank, useNA = "always")
# Get LPSN data for records missing from `taxonomy_lpsn` ------------------
# Weirdly enough, some LPSN records were lacking from `taxonomy_lpsn`,
# such as family Thiotrichaceae and its order Thiotrichales. When running
# get_lpsn_and_author("family", "Thiotrichaceae") you do get a result.
# So check every non-LPSN records from the kingdom of Bacteria and add it
gbif_bacteria <- which(taxonomy$kingdom == "Bacteria" & taxonomy$source == "GBIF" & taxonomy$rank %in% c("phylum", "class", "order", "family"))
added <- 0
pb <- progress_bar$new(total = length(gbif_bacteria), format = "[:bar] :current/:total :eta")
for (record in gbif_bacteria) {
pb$tick()
lpsn <- get_lpsn_and_author(rank = taxonomy$rank[record],
name = taxonomy$fullname[record])
if (is.na(lpsn["lpsn"])) {
next
} else {
added <- added + 1
taxonomy$source[record] <- "LPSN"
taxonomy$lpsn[record] <- unname(lpsn["lpsn"])
taxonomy$ref[record] <- unname(lpsn["ref"])
taxonomy$status[record] <- unname(lpsn["status"])
}
}
message(added, " GBIF records altered to latest LPSN")
taxbak <- taxonomy
# Clean scientific reference ---------------------------------------------- # Clean scientific reference ----------------------------------------------
@ -737,7 +814,7 @@ taxonomy <- taxonomy %>%
# Get the latest upper taxonomy from LPSN for non-LPSN data --------------- # Get the latest upper taxonomy from LPSN for non-LPSN data ---------------
# (e.g., phylum above class "Bacilli" was still "Firmicutes", should be "Bacillota" in 2022) # (e.g., phylum above class "Bacilli" was still "Firmicutes" in 2023, should be "Bacillota")
for (k in unique(taxonomy$kingdom[taxonomy$kingdom != ""])) { for (k in unique(taxonomy$kingdom[taxonomy$kingdom != ""])) {
message("Fixing GBIF taxonomy for kingdom ", k, ".", appendLF = FALSE) message("Fixing GBIF taxonomy for kingdom ", k, ".", appendLF = FALSE)
i <- 0 i <- 0
@ -765,17 +842,25 @@ for (k in unique(taxonomy$kingdom[taxonomy$kingdom != ""])) {
} }
# we need to fix parent GBIF identifiers # we need to fix parent GBIF identifiers
taxonomy$gbif_parent[taxonomy$rank == "phylum" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(taxonomy$kingdom[taxonomy$rank == "phylum" & !is.na(taxonomy$gbif)], taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "phylum"] <- taxonomy$gbif[match(taxonomy$kingdom[taxonomy$rank == "phylum"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "class" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(taxonomy$phylum[taxonomy$rank == "class" & !is.na(taxonomy$gbif)], taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "class"] <- taxonomy$gbif[match(taxonomy$phylum[taxonomy$rank == "class"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "order" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(taxonomy$class[taxonomy$rank == "order" & !is.na(taxonomy$gbif)], taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "order"] <- taxonomy$gbif[match(taxonomy$class[taxonomy$rank == "order"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "family" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(taxonomy$order[taxonomy$rank == "family" & !is.na(taxonomy$gbif)], taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "family"] <- taxonomy$gbif[match(taxonomy$order[taxonomy$rank == "family"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "genus" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(taxonomy$family[taxonomy$rank == "genus" & !is.na(taxonomy$gbif)], taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "genus"] <- taxonomy$gbif[match(taxonomy$family[taxonomy$rank == "genus"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "species" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(taxonomy$genus[taxonomy$rank == "species" & !is.na(taxonomy$gbif)], taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "species"] <- taxonomy$gbif[match(taxonomy$genus[taxonomy$rank == "species"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "subspecies" & !is.na(taxonomy$gbif)] <- taxonomy$gbif[match(paste(taxonomy$genus[taxonomy$rank == "subspecies" & !is.na(taxonomy$gbif)], taxonomy$species[taxonomy$rank == "subspecies" & !is.na(taxonomy$gbif)]), taxonomy$fullname)] taxonomy$gbif_parent[taxonomy$rank == "subspecies"] <- taxonomy$gbif[match(paste(taxonomy$genus[taxonomy$rank == "subspecies"], taxonomy$species[taxonomy$rank == "subspecies"]), taxonomy$fullname)]
# and LPSN parents
taxonomy$lpsn_parent[taxonomy$rank == "phylum"] <- taxonomy$lpsn[match(taxonomy$kingdom[taxonomy$rank == "phylum"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "class"] <- taxonomy$lpsn[match(taxonomy$phylum[taxonomy$rank == "class"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "order"] <- taxonomy$lpsn[match(taxonomy$class[taxonomy$rank == "order"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "family"] <- taxonomy$lpsn[match(taxonomy$order[taxonomy$rank == "family"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "genus"] <- taxonomy$lpsn[match(taxonomy$family[taxonomy$rank == "genus"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "species"] <- taxonomy$lpsn[match(taxonomy$genus[taxonomy$rank == "species"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "subspecies"] <- taxonomy$lpsn[match(paste(taxonomy$genus[taxonomy$rank == "subspecies"], taxonomy$species[taxonomy$rank == "subspecies"]), taxonomy$fullname)]
# these still have no record in our data set: # these still have no record in our data set:
all(taxonomy$lpsn_parent %in% taxonomy$lpsn) which(!taxonomy$lpsn_parent %in% taxonomy$lpsn)
all(taxonomy$gbif_parent %in% taxonomy$gbif) which(!taxonomy$gbif_parent %in% taxonomy$gbif)
# fix rank # fix rank
taxonomy <- taxonomy %>% taxonomy <- taxonomy %>%
@ -794,6 +879,7 @@ taxonomy <- taxonomy %>%
# Add prevalence ---------------------------------------------------------- # Add prevalence ----------------------------------------------------------
taxonomy_lpsn.bak3 <- taxonomy
pathogens <- read_excel(file_bartlett, sheet = "Tab 6 Full List") pathogens <- read_excel(file_bartlett, sheet = "Tab 6 Full List")
# get all established, both old and current taxonomic names # get all established, both old and current taxonomic names
@ -902,6 +988,7 @@ mo_kingdom <- taxonomy %>%
kingdom == "Protozoa" ~ "P", kingdom == "Protozoa" ~ "P",
TRUE ~ "" TRUE ~ ""
)) ))
# phylum until family are abbreviated with 8 characters and prefixed with their rank # phylum until family are abbreviated with 8 characters and prefixed with their rank
# Phylum - keep old and fill up for new ones # Phylum - keep old and fill up for new ones
@ -1196,58 +1283,120 @@ taxonomy <- taxonomy %>%
taxonomy %>% taxonomy %>%
filter(fullname %in% .[duplicated(fullname), "fullname", drop = TRUE]) %>% filter(fullname %in% .[duplicated(fullname), "fullname", drop = TRUE]) %>%
View() View()
# fullnames must be unique, we'll keep the most relevant ones only
taxonomy <- taxonomy %>% taxonomy <- taxonomy %>%
mutate(rank_index = case_when( mutate(rank_index = case_when(
kingdom == "Bacteria" ~ 1, kingdom == "Bacteria" ~ 1,
kingdom == "Fungi" ~ 2, kingdom == "Fungi" ~ 2,
kingdom == "Protozoa" ~ 3, kingdom == "Protozoa" ~ 3,
kingdom == "Archaea" ~ 4, kingdom == "Archaea" ~ 4,
TRUE ~ 5 kingdom == "Animalia" ~ 5,
TRUE ~ 6
)) %>% )) %>%
arrange(fullname, rank_index) %>% arrange(fullname, rank_index) %>%
distinct(fullname, .keep_all = TRUE) %>% distinct(fullname, .keep_all = TRUE) %>%
select(-rank_index) %>% select(-rank_index) %>%
filter(mo != "") filter(mo != "")
# keep the codes from manually added ones
manual_mos <- as.character(AMR::microorganisms$mo)[match(taxonomy$fullname[taxonomy$source == "manually added"], AMR::microorganisms$fullname)]
taxonomy$mo[taxonomy$source == "manually added"][!is.na(manual_mos)] <- manual_mos[!is.na(manual_mos)]
# this must not exist: # this must not exist:
taxonomy %>% taxonomy %>%
filter(mo %like% "__") %>% filter(mo %like% "__") %>%
View() View()
taxonomy <- taxonomy %>% filter(mo %unlike% "__") taxonomy <- taxonomy %>% filter(mo %unlike% "__")
taxonomy_lpsn.bak4 <- taxonomy
# Some integrity checks --------------------------------------------------- # Some integrity checks ---------------------------------------------------
# are mo codes unique? # are mo codes unique?
taxonomy %>% filter(mo %in% .[duplicated(mo), "mo", drop = TRUE]) taxonomy %>% filter(mo %in% .[duplicated(mo), "mo", drop = TRUE]) |> arrange(mo) |> View()
taxonomy <- taxonomy %>% distinct(mo, .keep_all = TRUE) # no, there are not, so sort on MO and keep the first
taxonomy <- taxonomy %>% arrange(mo) |> distinct(mo, .keep_all = TRUE)
taxonomy <- taxonomy |>
mutate(fullname = case_match(rank,
"phylum" ~ phylum,
"class" ~ class,
"order" ~ order,
"family" ~ family,
.default = fullname))
# are fullnames unique? # are fullnames unique?
taxonomy %>% filter(fullname %in% .[duplicated(fullname), "fullname", drop = TRUE]) taxonomy %>% filter(fullname %in% .[duplicated(fullname), "fullname", drop = TRUE])
# are all GBIFs available? # are all GBIFs available?
taxonomy %>% taxonomy %>%
filter(!gbif_parent %in% gbif) %>% filter((!gbif_parent %in% gbif) | (!lpsn_parent %in% lpsn)) %>%
count(rank) count(source = ifelse(!gbif_parent %in% gbif, "GBIF", "LPSN"),
# try to find the right gbif IDs rank)
taxonomy$gbif_parent[which(!taxonomy$gbif_parent %in% taxonomy$gbif & taxonomy$rank == "species")] <- taxonomy$gbif[match(taxonomy$genus[which(!taxonomy$gbif_parent %in% taxonomy$gbif & taxonomy$rank == "species")], taxonomy$genus)]
taxonomy$gbif_parent[which(!taxonomy$gbif_parent %in% taxonomy$gbif & taxonomy$rank == "class")] <- taxonomy$gbif[match(taxonomy$phylum[which(!taxonomy$gbif_parent %in% taxonomy$gbif & taxonomy$rank == "class")], taxonomy$phylum)]
taxonomy %>%
filter(!gbif_parent %in% gbif) %>%
count(rank)
# are all LPSNs available? # so fix again all parent GBIF identifiers
taxonomy$gbif_parent[taxonomy$rank == "phylum"] <- taxonomy$gbif[match(taxonomy$kingdom[taxonomy$rank == "phylum"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "class"] <- taxonomy$gbif[match(taxonomy$phylum[taxonomy$rank == "class"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "order"] <- taxonomy$gbif[match(taxonomy$class[taxonomy$rank == "order"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "family"] <- taxonomy$gbif[match(taxonomy$order[taxonomy$rank == "family"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "genus"] <- taxonomy$gbif[match(taxonomy$family[taxonomy$rank == "genus"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "species"] <- taxonomy$gbif[match(taxonomy$genus[taxonomy$rank == "species"], taxonomy$fullname)]
taxonomy$gbif_parent[taxonomy$rank == "subspecies"] <- taxonomy$gbif[match(paste(taxonomy$genus[taxonomy$rank == "subspecies"], taxonomy$species[taxonomy$rank == "subspecies"]), taxonomy$fullname)]
# and LPSN identifiers
taxonomy$lpsn_parent[taxonomy$rank == "phylum"] <- taxonomy$lpsn[match(taxonomy$kingdom[taxonomy$rank == "phylum"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "class"] <- taxonomy$lpsn[match(taxonomy$phylum[taxonomy$rank == "class"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "order"] <- taxonomy$lpsn[match(taxonomy$class[taxonomy$rank == "order"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "family"] <- taxonomy$lpsn[match(taxonomy$order[taxonomy$rank == "family"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "genus"] <- taxonomy$lpsn[match(taxonomy$family[taxonomy$rank == "genus"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "species"] <- taxonomy$lpsn[match(taxonomy$genus[taxonomy$rank == "species"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "subspecies"] <- taxonomy$lpsn[match(paste(taxonomy$genus[taxonomy$rank == "subspecies"], taxonomy$species[taxonomy$rank == "subspecies"]), taxonomy$fullname)]
# check again
taxonomy %>% taxonomy %>%
filter(!lpsn_parent %in% lpsn) %>% filter((!gbif_parent %in% gbif) | (!lpsn_parent %in% lpsn)) %>%
count(rank) count(source = ifelse(!gbif_parent %in% gbif, "GBIF", "LPSN"),
# make GBIF refer to newest renaming according to LPSN rank)
taxonomy$gbif_renamed_to[which(!is.na(taxonomy$gbif_renamed_to) & !is.na(taxonomy$lpsn_renamed_to))] <- taxonomy$gbif[match(taxonomy$lpsn_renamed_to[which(!is.na(taxonomy$gbif_renamed_to) & !is.na(taxonomy$lpsn_renamed_to))], taxonomy$lpsn)]
# Save intermediate results (3) ------------------------------------------- # Save intermediate results (3) -------------------------------------------
saveRDS(taxonomy, "data-raw/taxonomy3.rds") saveRDS(taxonomy, "data-raw/taxonomy3.rds")
# Redo LPSN missings and parents ------------------------------------------
gbif_bacteria_second_run <- which(taxonomy$kingdom == "Bacteria" & taxonomy$source == "GBIF" & taxonomy$rank %in% c("phylum", "class", "order", "family"))
gbif_bacteria_second_run <- gbif_bacteria_second_run[!gbif_bacteria_second_run %in% gbif_bacteria]
added <- 0
pb <- progress_bar$new(total = length(gbif_bacteria_second_run), format = "[:bar] :current/:total :eta")
for (record in gbif_bacteria_second_run) {
pb$tick()
lpsn <- get_lpsn_and_author(rank = taxonomy$rank[record],
name = taxonomy$fullname[record])
if (is.na(lpsn["lpsn"])) {
next
} else {
added <- added + 1
taxonomy$source[record] <- "LPSN"
taxonomy$lpsn[record] <- unname(lpsn["lpsn"])
taxonomy$ref[record] <- unname(lpsn["ref"])
taxonomy$status[record] <- unname(lpsn["status"])
}
}
message(added, " GBIF records altered to latest LPSN")
taxbak <- taxonomy
taxonomy$lpsn_parent[taxonomy$rank == "phylum"] <- taxonomy$lpsn[match(taxonomy$kingdom[taxonomy$rank == "phylum"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "class"] <- taxonomy$lpsn[match(taxonomy$phylum[taxonomy$rank == "class"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "order"] <- taxonomy$lpsn[match(taxonomy$class[taxonomy$rank == "order"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "family"] <- taxonomy$lpsn[match(taxonomy$order[taxonomy$rank == "family"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "genus"] <- taxonomy$lpsn[match(taxonomy$family[taxonomy$rank == "genus"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "species"] <- taxonomy$lpsn[match(taxonomy$genus[taxonomy$rank == "species"], taxonomy$fullname)]
taxonomy$lpsn_parent[taxonomy$rank == "subspecies"] <- taxonomy$lpsn[match(paste(taxonomy$genus[taxonomy$rank == "subspecies"], taxonomy$species[taxonomy$rank == "subspecies"]), taxonomy$fullname)]
# TODO: there is no order Eggerthellales anymore
# Remove unwanted taxonomic entries from Protoza/Fungi -------------------- # Remove unwanted taxonomic entries from Protoza/Fungi --------------------
# this must be done after the microbial ID generation, since it will otherwise generate a lot of different IDs # this must be done after the microbial ID generation, since it will otherwise generate a lot of different IDs
@ -1256,12 +1405,12 @@ taxonomy <- taxonomy %>%
# Protozoa: # Protozoa:
!(phylum %in% c("Choanozoa", "Mycetozoa") & prevalence == 3), !(phylum %in% c("Choanozoa", "Mycetozoa") & prevalence == 3),
# Fungi: # Fungi:
!(phylum %in% c("Ascomycota", "Zygomycota", "Basidiomycota") & prevalence == 3), !(phylum %in% c("Ascomycota", "Zygomycota", "Basidiomycota") & prevalence == 3 & rank %in% c("genus", "species", "subspecies")),
!(genus %in% c("Phoma", "Leptosphaeria", "Physarum") & rank %in% c("species", "subspecies")), # only genus of this rare fungus, with resp. 1300 and 800 species !(genus %in% c("Phoma", "Leptosphaeria", "Physarum") & rank %in% c("species", "subspecies")), # only genus of this rare fungus, with resp. 1300 and 800 species
# (leave Alternaria in there, part of human mycobiome and opportunistic pathogen) # (leave Alternaria in there, part of human mycobiome and opportunistic pathogen)
# Animalia: # Animalia:
!genus %in% c("Lucilia", "Lumbricus"), !genus %in% c("Lucilia", "Lumbricus"),
!(class == "Insecta" & rank %in% c("species", "subspecies")), # keep only genus of insects !(class == "Insecta" & rank %in% c("species", "subspecies")), # keep only genus of insects, not all of their (sub)species
!(genus == "Amoeba" & kingdom == "Animalia"), !(genus == "Amoeba" & kingdom == "Animalia"),
!(genus %in% c("Aedes", "Anopheles") & rank %in% c("species", "subspecies")), # only genus of the many hundreds of mosquitoes species !(genus %in% c("Aedes", "Anopheles") & rank %in% c("species", "subspecies")), # only genus of the many hundreds of mosquitoes species
kingdom != "Plantae" kingdom != "Plantae"
@ -1270,7 +1419,8 @@ taxonomy <- taxonomy %>%
# no ghost families, orders classes, phyla # no ghost families, orders classes, phyla
taxonomy <- taxonomy %>% taxonomy <- taxonomy %>%
group_by(kingdom, family) %>% group_by(kingdom, family) %>%
filter(n() > 1 | fullname %like% "unknown" | rank == "kingdom") %>% # (but keep the ghost families of bacteria)
filter(n() > 1 | fullname %like% "unknown" | rank == "kingdom" | kingdom == "Bacteria") %>%
group_by(kingdom, order) %>% group_by(kingdom, order) %>%
filter(n() > 1 | fullname %like% "unknown" | rank == "kingdom") %>% filter(n() > 1 | fullname %like% "unknown" | rank == "kingdom") %>%
group_by(kingdom, class) %>% group_by(kingdom, class) %>%
@ -1280,6 +1430,34 @@ taxonomy <- taxonomy %>%
ungroup() ungroup()
for (i in which(colnames(taxonomy) %in% c("phylum", "class", "order", "family")) - 1) {
i_name <- colnames(taxonomy)[i + 1]
message("Adding missing: ", i_name, "... ", appendLF = FALSE)
to_add <- taxonomy %>%
filter(.[[i + 1]] != "") %>%
distinct(kingdom, .[[i + 1]], .keep_all = TRUE) %>%
select(kingdom:(i + 1)) %>%
mutate(
fullname = .[[ncol(.)]],
rank = i_name
) %>%
filter(!paste(kingdom, .[[ncol(.) - 2]], rank) %in% paste(taxonomy$kingdom, taxonomy[[i + 1]], taxonomy$rank)) %>%
# get GBIF identifier where available
left_join(
current_gbif %>%
select(kingdom, all_of(i_name), rank = taxonRank, ref = scientificNameAuthorship, gbif = taxonID, gbif_parent = parentNameUsageID),
by = c("kingdom", "rank", i_name)
) %>%
mutate(source = ifelse(!is.na(gbif), "GBIF", "manually added"),
status = ifelse(!is.na(gbif), "accepted", "unknown"))
message("n = ", nrow(to_add))
# taxonomy_all_missing <- taxonomy_all_missing %>%
# bind_rows(to_add)
}
message( message(
"\nCongratulations! The new taxonomic table will contain ", format(nrow(taxonomy), big.mark = " "), " rows.\n", "\nCongratulations! The new taxonomic table will contain ", format(nrow(taxonomy), big.mark = " "), " rows.\n",
"This was ", format(nrow(AMR::microorganisms), big.mark = " "), " rows.\n" "This was ", format(nrow(AMR::microorganisms), big.mark = " "), " rows.\n"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -278,3 +278,10 @@ Macrolides/lincosamides FALSE TRUE TRUE FALSE 大环内酯类/林可酰胺类 Ma
Other antibacterials FALSE TRUE TRUE FALSE 其他抗菌剂 Ostatní antibakteriální látky Andre antibakterielle stoffer Overige antibiotica Muut antibakteeriset aineet Autres antibactériens Andere Antibiotika Άλλα αντιβακτηριακά Altri antibatterici その他の抗菌薬 Andre antibakterielle midler Inne środki przeciwbakteryjne Outros antibacterianos Alte antibacteriene Другие антибактериальные препараты Otros antibacterianos Andra antibakteriella medel Diğer antibakteriyeller Інші антибактеріальні засоби Other antibacterials FALSE TRUE TRUE FALSE 其他抗菌剂 Ostatní antibakteriální látky Andre antibakterielle stoffer Overige antibiotica Muut antibakteeriset aineet Autres antibactériens Andere Antibiotika Άλλα αντιβακτηριακά Altri antibatterici その他の抗菌薬 Andre antibakterielle midler Inne środki przeciwbakteryjne Outros antibacterianos Alte antibacteriene Другие антибактериальные препараты Otros antibacterianos Andra antibakteriella medel Diğer antibakteriyeller Інші антибактеріальні засоби
Polymyxins FALSE TRUE TRUE FALSE 多粘菌素类 Polymyxiny Polymyxiner Polymyxines Polymysiinit Polymyxines Polymyxine Πολυμυξίνες Polimixine ポリミキシン Polymyxiner Polimyksyny Polimixinas Polimixine Полимиксины Polimixinas Polymyxiner Polimiksinler Поліміксини Polymyxins FALSE TRUE TRUE FALSE 多粘菌素类 Polymyxiny Polymyxiner Polymyxines Polymysiinit Polymyxines Polymyxine Πολυμυξίνες Polimixine ポリミキシン Polymyxiner Polimyksyny Polimixinas Polimixine Полимиксины Polimixinas Polymyxiner Polimiksinler Поліміксини
Quinolones FALSE TRUE TRUE FALSE 喹诺酮类 Chinolony Kinoloner Quinolonen Kinolonit Quinolones Quinolone Κινολόνες Chinoloni キノロン Kinoloner Quinolony Quinolones Quinolone Хинолоны Quinolonas Kinoloner Kinolonlar Хінолони Quinolones FALSE TRUE TRUE FALSE 喹诺酮类 Chinolony Kinoloner Quinolonen Kinolonit Quinolones Quinolone Κινολόνες Chinoloni キノロン Kinoloner Quinolony Quinolones Quinolone Хинолоны Quinolonas Kinoloner Kinolonlar Хінолони
aquatic|fish FALSE FALSE FALSE FALSE 水生|条鱼|鱼 vodní|ryba|ryby akvatisk|fisk aquatisch|vis|vissen vesieliö|kala|kalaa aquatique|poisson|poissons wasser|fisch|fische υδρόβια|ψάρι|ψάρια acquatico|pesce|pesci アクアティック|1匹|魚 akvatisk|fisk wodny|ryba|ryby aquático|peixe|peixes acvatic|pește|pești водные|рыба|рыбы acuático|pez|peces vattenlevande|fisk|fiskar sucul|balık водний|риба|рибки
cattle|bovine FALSE FALSE FALSE FALSE 牛|牛 skot kvæg vee|rund karja|nauta bovins|bovin rinder βοοειδή bovini|bovino 牛|ウシ storfe|storfe bydło|bydło bovinos|bovino bovine|bovine крупный рогатый скот|крупный рогатый скот bovino|bovino nötkreatur|nötkreatur sığır|büyükbaş hayvan велика рогата худоба|бичачий
cat|cats|feline FALSE FALSE FALSE FALSE 猫|猫|猫科动物 kočka|kočky|kočky kat|katte|kat kat|katten|katachtig kissa|kissat|kissa chat|chats|félin katze|katzen γάτα|γάτες|αιλουροειδή gatto|gatti|felino 猫|猫|ネコ katt kot|koty gato|gatos|felino pisică|pisici|felină кошка|кошки|кошка gato|gatos|felino katt|katter|kattdjur kedi|kediler|kedi кіт|коти|котячий
dog|dogs|canine FALSE FALSE FALSE FALSE 狗|狗|犬类 pes|psi|psí hund|hunde hond|honden koira|koirat|koira chien|canine hund|hunde|hund σκύλος|σκύλοι|σκύλος cane|cani|canino 犬|犬|イヌ hund pies|psy|pies cão|cães|canino câine|câini|canin собака|собаки|собака perro|perros|canino hund|hundar köpek|köpekler пес|собаки|собачий
horse|horses|equine FALSE FALSE FALSE FALSE 马|马|马 kůň|koně|koně hest|heste paard|paarden hevonen|hevoset|hevoset cheval|chevaux|équine pferd|pferde άλογο|άλογα|ιπποειδή cavallo|cavalli|equino 馬|馬|馬 hest koń|konie|koń cavalo|cavalos|equinos cal|cai|ecvideu лошадь|лошади|лошадь caballo|caballos|equino häst|hästar|häst at|atlar|atçılık кінь|коні|конячий
bird|birds|poultry FALSE FALSE FALSE FALSE 鸟类|鸟类|家禽 ptáci|ptáci|drůbež fugl|fugle|fjerkræ vogel|vogels|pluimvee lintu|linnut|siipikarja oiseaux|oiseaux|volaille vogel|vögel|geflügel πουλιά|πουλιά|πουλερικά uccello|uccelli|pollame 鳥|鳥|家禽 fugl|fugler|fjørfe ptak|ptaki|drób aves|aves|aves de capoeira pasăre|păsări|păsări de curte птица|птицы|домашняя птица aves|aves|aves de corral fågel|fåglar|fjäderfä kuş|kuşlar|kümes hayvanları птах|птахів|птиця
swine|swines FALSE FALSE FALSE FALSE 猪|猪 prasata|prasata svin varken|varkens sika|sikaa porcine|porcs schwein|schweine χοίροι|χοίροι suino|suini 豚|豚|頭 svin trzoda chlewna|świnie suínos porc|porcine свинья|свиньи porcino|porcinos svin domuz|domuz свиня|свині

1 pattern regular_expr case_sensitive affect_ab_name affect_mo_name zh cs da nl fi fr de el it ja no pl pt ro ru es sv tr uk
278 Other antibacterials FALSE TRUE TRUE FALSE 其他抗菌剂 Ostatní antibakteriální látky Andre antibakterielle stoffer Overige antibiotica Muut antibakteeriset aineet Autres antibactériens Andere Antibiotika Άλλα αντιβακτηριακά Altri antibatterici その他の抗菌薬 Andre antibakterielle midler Inne środki przeciwbakteryjne Outros antibacterianos Alte antibacteriene Другие антибактериальные препараты Otros antibacterianos Andra antibakteriella medel Diğer antibakteriyeller Інші антибактеріальні засоби
279 Polymyxins FALSE TRUE TRUE FALSE 多粘菌素类 Polymyxiny Polymyxiner Polymyxines Polymysiinit Polymyxines Polymyxine Πολυμυξίνες Polimixine ポリミキシン Polymyxiner Polimyksyny Polimixinas Polimixine Полимиксины Polimixinas Polymyxiner Polimiksinler Поліміксини
280 Quinolones FALSE TRUE TRUE FALSE 喹诺酮类 Chinolony Kinoloner Quinolonen Kinolonit Quinolones Quinolone Κινολόνες Chinoloni キノロン Kinoloner Quinolony Quinolones Quinolone Хинолоны Quinolonas Kinoloner Kinolonlar Хінолони
281 aquatic|fish FALSE FALSE FALSE FALSE 水生|条鱼|鱼 vodní|ryba|ryby akvatisk|fisk aquatisch|vis|vissen vesieliö|kala|kalaa aquatique|poisson|poissons wasser|fisch|fische υδρόβια|ψάρι|ψάρια acquatico|pesce|pesci アクアティック|1匹|魚 akvatisk|fisk wodny|ryba|ryby aquático|peixe|peixes acvatic|pește|pești водные|рыба|рыбы acuático|pez|peces vattenlevande|fisk|fiskar sucul|balık водний|риба|рибки
282 cattle|bovine FALSE FALSE FALSE FALSE 牛|牛 skot kvæg vee|rund karja|nauta bovins|bovin rinder βοοειδή bovini|bovino 牛|ウシ storfe|storfe bydło|bydło bovinos|bovino bovine|bovine крупный рогатый скот|крупный рогатый скот bovino|bovino nötkreatur|nötkreatur sığır|büyükbaş hayvan велика рогата худоба|бичачий
283 cat|cats|feline FALSE FALSE FALSE FALSE 猫|猫|猫科动物 kočka|kočky|kočky kat|katte|kat kat|katten|katachtig kissa|kissat|kissa chat|chats|félin katze|katzen γάτα|γάτες|αιλουροειδή gatto|gatti|felino 猫|猫|ネコ katt kot|koty gato|gatos|felino pisică|pisici|felină кошка|кошки|кошка gato|gatos|felino katt|katter|kattdjur kedi|kediler|kedi кіт|коти|котячий
284 dog|dogs|canine FALSE FALSE FALSE FALSE 狗|狗|犬类 pes|psi|psí hund|hunde hond|honden koira|koirat|koira chien|canine hund|hunde|hund σκύλος|σκύλοι|σκύλος cane|cani|canino 犬|犬|イヌ hund pies|psy|pies cão|cães|canino câine|câini|canin собака|собаки|собака perro|perros|canino hund|hundar köpek|köpekler пес|собаки|собачий
285 horse|horses|equine FALSE FALSE FALSE FALSE 马|马|马 kůň|koně|koně hest|heste paard|paarden hevonen|hevoset|hevoset cheval|chevaux|équine pferd|pferde άλογο|άλογα|ιπποειδή cavallo|cavalli|equino 馬|馬|馬 hest koń|konie|koń cavalo|cavalos|equinos cal|cai|ecvideu лошадь|лошади|лошадь caballo|caballos|equino häst|hästar|häst at|atlar|atçılık кінь|коні|конячий
286 bird|birds|poultry FALSE FALSE FALSE FALSE 鸟类|鸟类|家禽 ptáci|ptáci|drůbež fugl|fugle|fjerkræ vogel|vogels|pluimvee lintu|linnut|siipikarja oiseaux|oiseaux|volaille vogel|vögel|geflügel πουλιά|πουλιά|πουλερικά uccello|uccelli|pollame 鳥|鳥|家禽 fugl|fugler|fjørfe ptak|ptaki|drób aves|aves|aves de capoeira pasăre|păsări|păsări de curte птица|птицы|домашняя птица aves|aves|aves de corral fågel|fåglar|fjäderfä kuş|kuşlar|kümes hayvanları птах|птахів|птиця
287 swine|swines FALSE FALSE FALSE FALSE 猪|猪 prasata|prasata svin varken|varkens sika|sikaa porcine|porcs schwein|schweine χοίροι|χοίροι suino|suini 豚|豚|頭 svin trzoda chlewna|świnie suínos porc|porcine свинья|свиньи porcino|porcinos svin domuz|domuz свиня|свині

Binary file not shown.

Binary file not shown.

View File

@ -27,6 +27,9 @@
# how to conduct AMR data analysis: https://msberends.github.io/AMR/ # # how to conduct AMR data analysis: https://msberends.github.io/AMR/ #
# ==================================================================== # # ==================================================================== #
# Existing SIR ------------------------------------------------------------
# we must only have EUCAST and CLSI, because otherwise the rules in as.sir() will fail # we must only have EUCAST and CLSI, because otherwise the rules in as.sir() will fail
expect_identical( expect_identical(
unique(gsub("[^A-Z]", "", AMR::clinical_breakpoints$guideline)), unique(gsub("[^A-Z]", "", AMR::clinical_breakpoints$guideline)),
@ -108,16 +111,19 @@ if (AMR:::pkg_is_available("skimr", min_version = "2.0.0", also_load = TRUE)) {
expect_equal(as.sir(c("", "-", NA, "NULL")), c(NA_sir_, NA_sir_, NA_sir_, NA_sir_)) expect_equal(as.sir(c("", "-", NA, "NULL")), c(NA_sir_, NA_sir_, NA_sir_, NA_sir_))
mics <- as.mic(2 ^ c(-2:5)) # 0.25 to 32 in factors of 2
# Human -------------------------------------------------------------------
mics <- as.mic(2 ^ c(-4:6)) # 0.0625 to 64 in factors of 2
expect_identical(as.character(as.sir(mics, mo = "Enterobacterales", ab = "AMC", guideline = "EUCAST 2022", expect_identical(as.character(as.sir(mics, mo = "Enterobacterales", ab = "AMC", guideline = "EUCAST 2022",
uti = FALSE, include_PKPD = FALSE)), uti = FALSE, include_PKPD = FALSE)),
c("S", "S", "S", "S", "S", "S", "R", "R")) c("S", "S", "S", "S", "S", "S", "S", "S", "R", "R", "R"))
expect_identical(as.character(as.sir(mics, mo = "Enterobacterales", ab = "AMC", guideline = "EUCAST 2022", expect_identical(as.character(as.sir(mics, mo = "Enterobacterales", ab = "AMC", guideline = "EUCAST 2022",
uti = TRUE, include_PKPD = FALSE)), uti = TRUE, include_PKPD = FALSE)),
c("S", "S", "S", "S", "S", "S", "S", "S")) c("S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "R"))
expect_identical(as.character(as.sir(mics, mo = "Escherichia coli", ab = "AMC", guideline = "EUCAST 2022", expect_identical(as.character(as.sir(mics, mo = "Escherichia coli", ab = "AMC", guideline = "EUCAST 2022",
uti = FALSE, include_PKPD = FALSE)), uti = FALSE, include_PKPD = FALSE)),
c("S", "S", "S", "S", "S", "S", "R", "R")) c("S", "S", "S", "S", "S", "S", "S", "S", "R", "R", "R"))
# S. pneumoniae/ampicillin in EUCAST 2020: 0.5-2 ug/ml (R is only > 2) # S. pneumoniae/ampicillin in EUCAST 2020: 0.5-2 ug/ml (R is only > 2)
@ -154,10 +160,6 @@ expect_equal(
suppressMessages(as.sir(as.mic(2), "E. coli", "ampicillin", guideline = "EUCAST 2020")), suppressMessages(as.sir(as.mic(2), "E. coli", "ampicillin", guideline = "EUCAST 2020")),
as.sir("S") as.sir("S")
) )
expect_equal(
suppressMessages(as.sir(as.mic(2), "E. coli", "ampicillin", guideline = "EUCAST 2020", ecoff = TRUE)),
as.sir("S")
)
expect_equal( expect_equal(
suppressMessages(as.sir(as.mic(32), "E. coli", "ampicillin", guideline = "EUCAST 2020")), suppressMessages(as.sir(as.mic(32), "E. coli", "ampicillin", guideline = "EUCAST 2020")),
as.sir("R") as.sir("R")
@ -263,3 +265,47 @@ expect_message(as.sir(data.frame(
NIT = c("<= 2", 32), NIT = c("<= 2", 32),
specimen = c("urine", "blood") specimen = c("urine", "blood")
))) )))
# Veterinary --------------------------------------------------------------
sir_history <- sir_interpretation_history(clean = TRUE)
vet <- data.frame(animal = c(rep("cat", 3), rep("dogs", 3), "canine", "equine", "horse", "cattle", "bird"),
PRA = mics,
FLR = mics,
mo = mo_name(rep(c("B_ESCHR_COLI", "B_PSTRL_MLTC", "B_MNNHM_HMLY"), 4)[-1]))
out_vet <- as.sir(vet, host = vet$animal, guideline = "CLSI")
# 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", "R", NA, "R", "R", NA, "R", "R", NA)))
expect_identical(out_vet$FLR, as.sir(c("S", "S", NA, "S", "S", NA, "I", "R", NA, "R", "R")))
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")))
sir_history <- sir_interpretation_history()
expect_identical(sir_history$host,
c("cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle",
"cattle", "cattle", "cattle", "cattle", "cattle", "cats" , "cats" , "cats" , "cattle", "cattle", "cattle",
"cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle",
"cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle",
"cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle", "cattle",
"cats" , "cats" , "cats" , "dogs" , "dogs" , "dogs" , "cattle", "cattle", "cattle", "cattle", "cats",
"cats" , "cats" , "cats" , "cats" , "cats" , "cats"))
# ECOFF -------------------------------------------------------------------
expect_equal(
suppressMessages(as.sir(as.mic(2), "E. coli", "ampicillin", guideline = "EUCAST 2020", breakpoint_type = "ECOFF")),
as.sir("S")
)
# old method
expect_warning(as.sir(as.mic(2), "E. coli", "ampicillin", guideline = "EUCAST 2020", ecoff = TRUE))

View File

@ -98,7 +98,8 @@ call_functions <- c(
"theme_minimal" = "ggplot2", "theme_minimal" = "ggplot2",
"unit" = "ggplot2", "unit" = "ggplot2",
"xlab" = "ggplot2", "xlab" = "ggplot2",
"ylab" = "ggplot2" "ylab" = "ggplot2",
"vec_arith" = "vctrs"
) )
if (AMR:::pkg_is_available("skimr", min_version = "2.0.0")) { if (AMR:::pkg_is_available("skimr", min_version = "2.0.0")) {
call_functions <- c(call_functions, call_functions <- c(call_functions,

View File

@ -9,17 +9,17 @@ This is an overview of all the package-specific \code{\link[=options]{options()}
\section{Options}{ \section{Options}{
\itemize{ \itemize{
\item \code{AMR_custom_ab} \cr Allows to use custom antimicrobial drugs with this package. This is explained in \code{\link[=add_custom_antimicrobials]{add_custom_antimicrobials()}}. \item \code{AMR_breakpoint_type} \cr A \link{character} to use in \code{\link[=as.sir]{as.sir()}}, to indicate which breakpoint type to use. This must be either "ECOFF", "animal", or "human".
\item \code{AMR_custom_mo} \cr Allows to use custom microorganisms with this package. This is explained in \code{\link[=add_custom_microorganisms]{add_custom_microorganisms()}}. \item \code{AMR_cleaning_regex} \cr A \link[base:regex]{regular expression} (case-insensitive) to use in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions, to clean the user input. The default is the outcome of \code{\link[=mo_cleaning_regex]{mo_cleaning_regex()}}, which removes texts between brackets and texts such as "species" and "serovar".
\item \code{AMR_eucastrules} \cr Used for setting the default types of rules for \code{\link[=eucast_rules]{eucast_rules()}} function, must be one or more of: \code{"breakpoints"}, \code{"expert"}, \code{"other"}, \code{"custom"}, \code{"all"}, and defaults to \code{c("breakpoints", "expert")}. \item \code{AMR_custom_ab} \cr A file location to an RDS file, to use custom antimicrobial drugs with this package. This is explained in \code{\link[=add_custom_antimicrobials]{add_custom_antimicrobials()}}.
\item \code{AMR_guideline} \cr Used for setting the default guideline for interpreting MIC values and disk diffusion diameters with \code{\link[=as.sir]{as.sir()}}. Can be only the guideline name (e.g., \code{"CLSI"}) or the name with a year (e.g. \code{"CLSI 2019"}). The default to the latest implemented EUCAST guideline, currently \code{"EUCAST 2023"}. Supported guideline are currently EUCAST (2011-2023) and CLSI (2011-2023). \item \code{AMR_custom_mo} \cr A file location to an RDS file, to use custom microorganisms with this package. This is explained in \code{\link[=add_custom_microorganisms]{add_custom_microorganisms()}}.
\item \code{AMR_eucastrules} \cr A \link{character} to set the default types of rules for \code{\link[=eucast_rules]{eucast_rules()}} function, must be one or more of: \code{"breakpoints"}, \code{"expert"}, \code{"other"}, \code{"custom"}, \code{"all"}, and defaults to \code{c("breakpoints", "expert")}.
\item \code{AMR_guideline} \cr A \link{character} to set the default guideline for interpreting MIC values and disk diffusion diameters with \code{\link[=as.sir]{as.sir()}}. Can be only the guideline name (e.g., \code{"CLSI"}) or the name with a year (e.g. \code{"CLSI 2019"}). The default to the latest implemented EUCAST guideline, currently \code{"EUCAST 2023"}. Supported guideline are currently EUCAST (2011-2023) and CLSI (2011-2023).
\item \code{AMR_ignore_pattern} \cr A \link[base:regex]{regular expression} to ignore (i.e., make \code{NA}) any match given in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions. \item \code{AMR_ignore_pattern} \cr A \link[base:regex]{regular expression} to ignore (i.e., make \code{NA}) any match given in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions.
\item \code{AMR_include_PKPD} \cr A \link{logical} to use in \code{\link[=as.sir]{as.sir()}}, to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. \item \code{AMR_include_PKPD} \cr A \link{logical} to use in \code{\link[=as.sir]{as.sir()}}, to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}.
\item \code{AMR_ecoff} \cr A \link{logical} use in \code{\link[=as.sir]{as.sir()}}, to indicate that ECOFF (Epidemiological Cut-Off) values must be used - the default is \code{FALSE}.
\item \code{AMR_include_screening} \cr A \link{logical} to use in \code{\link[=as.sir]{as.sir()}}, to indicate that clinical breakpoints for screening are allowed - the default is \code{FALSE}. \item \code{AMR_include_screening} \cr A \link{logical} to use in \code{\link[=as.sir]{as.sir()}}, to indicate that clinical breakpoints for screening are allowed - the default is \code{FALSE}.
\item \code{AMR_keep_synonyms} \cr A \link{logical} to use in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions, to indicate if old, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. The default is \code{FALSE}. \item \code{AMR_keep_synonyms} \cr A \link{logical} to use in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions, to indicate if old, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. The default is \code{FALSE}.
\item \code{AMR_cleaning_regex} \cr A \link[base:regex]{regular expression} (case-insensitive) to use in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions, to clean the user input. The default is the outcome of \code{\link[=mo_cleaning_regex]{mo_cleaning_regex()}}, which removes texts between brackets and texts such as "species" and "serovar". \item \code{AMR_locale} \cr A \link{character} to set the language for the \code{AMR} package, can be one of these supported language names or ISO-639-1 codes: English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (it), Japanese (ja), Norwegian (no), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), or Ukrainian (uk). The default is the current system language (if supported, English otherwise).
\item \code{AMR_locale} \cr A language to use for the \code{AMR} package, can be one of these supported language names or ISO-639-1 codes: English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (it), Japanese (ja), Norwegian (no), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), or Ukrainian (uk). The default is the current system language (if supported).
\item \code{AMR_mo_source} \cr A file location for a manual code list to be used in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions. This is explained in \code{\link[=set_mo_source]{set_mo_source()}}. \item \code{AMR_mo_source} \cr A file location for a manual code list to be used in \code{\link[=as.mo]{as.mo()}} and all \code{\link[=mo_property]{mo_*}} functions. This is explained in \code{\link[=set_mo_source]{set_mo_source()}}.
} }
} }
@ -31,16 +31,16 @@ Settings in \R are not saved globally and are thus lost when \R is exited. You c
\if{html}{\out{<div class="sourceCode r">}}\preformatted{ utils::file.edit("~/.Rprofile") \if{html}{\out{<div class="sourceCode r">}}\preformatted{ utils::file.edit("~/.Rprofile")
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
In this file, you can set options such as: In this file, you can set options such as...
\if{html}{\out{<div class="sourceCode r">}}\preformatted{ options(AMR_locale = "pt") \if{html}{\out{<div class="sourceCode r">}}\preformatted{ options(AMR_locale = "pt")
options(AMR_include_PKPD = TRUE) options(AMR_include_PKPD = TRUE)
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
to add Portuguese language support of antibiotics, and allow PK/PD rules when interpreting MIC values with \code{\link[=as.sir]{as.sir()}}. ...to add Portuguese language support of antibiotics, and allow PK/PD rules when interpreting MIC values with \code{\link[=as.sir]{as.sir()}}.
\subsection{Share Options Within Team}{ \subsection{Share Options Within Team}{
For a more global approach, e.g. within a data team, save an options file to a remote file location, such as a shared network drive. This would work in this way: For a more global approach, e.g. within a (data) team, save an options file to a remote file location, such as a shared network drive, and have each user read in this file automatically at start-up. This would work in this way:
\enumerate{ \enumerate{
\item Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill it with preferred settings. \item Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill it with preferred settings.
\item For each user, open the \code{.Rprofile} file using \code{utils::file.edit("~/.Rprofile")} and put in there: \item For each user, open the \code{.Rprofile} file using \code{utils::file.edit("~/.Rprofile")} and put in there:

View File

@ -2,8 +2,8 @@
% Please edit documentation in R/aa_amr-package.R % Please edit documentation in R/aa_amr-package.R
\docType{package} \docType{package}
\name{AMR} \name{AMR}
\alias{AMR}
\alias{AMR-package} \alias{AMR-package}
\alias{AMR}
\title{The \code{AMR} Package} \title{The \code{AMR} Package}
\source{ \source{
To cite AMR in publications use: To cite AMR in publications use:
@ -32,7 +32,7 @@ The \code{AMR} package is a \href{https://msberends.github.io/AMR/#copyright}{fr
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}). 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://msberends.github.io/AMR/reference/microorganisms.html}{\strong{~52 000 microorganisms}} (updated december 2022) and all \href{https://msberends.github.io/AMR/reference/antibiotics.html}{\strong{~600 antibiotic, antimycotic 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 and EUCAST 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 public \href{https://www.rug.nl}{University of Groningen}, in collaboration with non-profit organisations \href{https://www.certe.nl}{Certe Medical Diagnostics and Advice Foundation} and \href{https://www.umcg.nl}{University Medical Center Groningen}. After installing this package, R knows \href{https://msberends.github.io/AMR/reference/microorganisms.html}{\strong{~52 000 microorganisms}} (updated January 2024) and all \href{https://msberends.github.io/AMR/reference/antibiotics.html}{\strong{~600 antibiotic, antimycotic 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 and EUCAST 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 public \href{https://www.rug.nl}{University of Groningen}, in collaboration with non-profit organisations \href{https://www.certe.nl}{Certe Medical Diagnostics and Advice Foundation} and \href{https://www.umcg.nl}{University Medical Center Groningen}.
The \code{AMR} package is available in English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, and Ukrainian. Antimicrobial drug (group) names and colloquial microorganism names are provided in these languages. The \code{AMR} package is available in English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, and Ukrainian. Antimicrobial drug (group) names and colloquial microorganism names are provided in these languages.
} }
@ -55,7 +55,6 @@ Useful links:
Authors: Authors:
\itemize{ \itemize{
\item Christian F. Luz (\href{https://orcid.org/0000-0001-5809-5995}{ORCID}) [contributor]
\item Dennis Souverein (\href{https://orcid.org/0000-0003-0455-0336}{ORCID}) [contributor] \item Dennis Souverein (\href{https://orcid.org/0000-0003-0455-0336}{ORCID}) [contributor]
\item Erwin E. A. Hassing [contributor] \item Erwin E. A. Hassing [contributor]
} }
@ -70,14 +69,18 @@ Other contributors:
\item Eric H. L. C. M. Hazenberg [contributor] \item Eric H. L. C. M. Hazenberg [contributor]
\item Gwen Knight (\href{https://orcid.org/0000-0002-7263-9896}{ORCID}) [contributor] \item Gwen Knight (\href{https://orcid.org/0000-0002-7263-9896}{ORCID}) [contributor]
\item Annick Lenglet (\href{https://orcid.org/0000-0003-2013-8405}{ORCID}) [contributor] \item Annick Lenglet (\href{https://orcid.org/0000-0003-2013-8405}{ORCID}) [contributor]
\item Christian F. Luz (\href{https://orcid.org/0000-0001-5809-5995}{ORCID}) [contributor]
\item Bart C. Meijer [contributor] \item Bart C. Meijer [contributor]
\item Dmytro Mykhailenko [contributor] \item Dmytro Mykhailenko [contributor]
\item Anton Mymrikov [contributor] \item Anton Mymrikov [contributor]
\item Andrew P. Norgan (\href{https://orcid.org/0000-0002-2955-2066}{ORCID}) [contributor] \item Andrew P. Norgan (\href{https://orcid.org/0000-0002-2955-2066}{ORCID}) [contributor]
\item Sofia Ny (\href{https://orcid.org/0000-0002-2017-1363}{ORCID}) [contributor] \item Sofia Ny (\href{https://orcid.org/0000-0002-2017-1363}{ORCID}) [contributor]
\item Matthew Saab [contributor]
\item Jonas Salm [contributor] \item Jonas Salm [contributor]
\item Javier Sanchez (\href{https://orcid.org/0000-0003-2605-8094}{ORCID}) [contributor]
\item Rogier P. Schade [contributor] \item Rogier P. Schade [contributor]
\item Bhanu N. M. Sinha (\href{https://orcid.org/0000-0003-1634-0010}{ORCID}) [thesis advisor] \item Bhanu N. M. Sinha (\href{https://orcid.org/0000-0003-1634-0010}{ORCID}) [thesis advisor]
\item Jason Stull (\href{https://orcid.org/0000-0002-9028-8153}{ORCID}) [contributor]
\item Anthony Underwood (\href{https://orcid.org/0000-0002-8547-4277}{ORCID}) [contributor] \item Anthony Underwood (\href{https://orcid.org/0000-0002-8547-4277}{ORCID}) [contributor]
\item Anita Williams (\href{https://orcid.org/0000-0002-5295-8451}{ORCID}) [contributor] \item Anita Williams (\href{https://orcid.org/0000-0002-5295-8451}{ORCID}) [contributor]
} }

View File

@ -17,9 +17,9 @@
\item \code{atc_group2}\cr Official chemical subgroup (4th level ATC code) as defined by the WHOCC, like \code{"Macrolides"} \item \code{atc_group2}\cr Official chemical subgroup (4th level ATC code) as defined by the WHOCC, like \code{"Macrolides"}
\item \code{abbr}\cr List of abbreviations as used in many countries, also for antibiotic susceptibility testing (AST) \item \code{abbr}\cr List of abbreviations as used in many countries, also for antibiotic susceptibility testing (AST)
\item \code{synonyms}\cr Synonyms (often trade names) of a drug, as found in PubChem based on their compound ID \item \code{synonyms}\cr Synonyms (often trade names) of a drug, as found in PubChem based on their compound ID
\item \code{oral_ddd}\cr Defined Daily Dose (DDD), oral treatment, currently available for 174 drugs \item \code{oral_ddd}\cr Defined Daily Dose (DDD), oral treatment, currently available for 179 drugs
\item \code{oral_units}\cr Units of \code{oral_ddd} \item \code{oral_units}\cr Units of \code{oral_ddd}
\item \code{iv_ddd}\cr Defined Daily Dose (DDD), parenteral (intravenous) treatment, currently available for 146 drugs \item \code{iv_ddd}\cr Defined Daily Dose (DDD), parenteral (intravenous) treatment, currently available for 153 drugs
\item \code{iv_units}\cr Units of \code{iv_ddd} \item \code{iv_units}\cr Units of \code{iv_ddd}
\item \code{loinc}\cr All codes associated with the name of the antimicrobial drug from Logical Observation Identifiers Names and Codes (LOINC), Version 2.76 (18 September, 2023). Use \code{\link[=ab_loinc]{ab_loinc()}} to retrieve them quickly, see \code{\link[=ab_property]{ab_property()}}. \item \code{loinc}\cr All codes associated with the name of the antimicrobial drug from Logical Observation Identifiers Names and Codes (LOINC), Version 2.76 (18 September, 2023). Use \code{\link[=ab_loinc]{ab_loinc()}} to retrieve them quickly, see \code{\link[=ab_property]{ab_property()}}.
} }

View File

@ -6,7 +6,7 @@
\alias{mic} \alias{mic}
\alias{is.mic} \alias{is.mic}
\alias{NA_mic_} \alias{NA_mic_}
\alias{rescale_mic} \alias{limit_mic_range}
\alias{droplevels.mic} \alias{droplevels.mic}
\title{Transform Input to Minimum Inhibitory Concentrations (MIC)} \title{Transform Input to Minimum Inhibitory Concentrations (MIC)}
\usage{ \usage{
@ -16,7 +16,7 @@ is.mic(x)
NA_mic_ NA_mic_
rescale_mic(x, mic_range, keep_operators = "edges", as.mic = TRUE) limit_mic_range(x, mic_range, keep_operators = "edges", as.mic = TRUE)
\method{droplevels}{mic}(x, as.mic = FALSE, ...) \method{droplevels}{mic}(x, as.mic = FALSE, ...)
} }
@ -27,14 +27,14 @@ rescale_mic(x, mic_range, keep_operators = "edges", as.mic = TRUE)
\item{keep_operators}{a \link{character} specifying how to handle operators (such as \code{>} and \code{<=}) in the input. Accepts one of three values: \code{"all"} (or \code{TRUE}) to keep all operators, \code{"none"} (or \code{FALSE}) to remove all operators, or \code{"edges"} to keep operators only at both ends of the range.} \item{keep_operators}{a \link{character} specifying how to handle operators (such as \code{>} and \code{<=}) in the input. Accepts one of three values: \code{"all"} (or \code{TRUE}) to keep all operators, \code{"none"} (or \code{FALSE}) to remove all operators, or \code{"edges"} to keep operators only at both ends of the range.}
\item{mic_range}{a manual range to plot the MIC values, e.g., \code{mic_range = c(0.001, 32)}. Use \code{NA} to set no limit on one side, e.g., \code{mic_range = c(NA, 32)}.} \item{mic_range}{a manual range to limit the MIC values, e.g., \code{mic_range = c(0.001, 32)}. Use \code{NA} to set no limit on one side, e.g., \code{mic_range = c(NA, 32)}.}
\item{as.mic}{a \link{logical} to indicate whether the \code{mic} class should be kept - the default is \code{FALSE}} \item{as.mic}{a \link{logical} to indicate whether the \code{mic} class should be kept - the default is \code{FALSE}}
\item{...}{arguments passed on to methods} \item{...}{arguments passed on to methods}
} }
\value{ \value{
Ordered \link{factor} with additional class \code{\link{mic}}, that in mathematical operations acts as decimal numbers. Bare in mind that the outcome of any mathematical operation on MICs will return a \link{numeric} value. Ordered \link{factor} with additional class \code{\link{mic}}, that in mathematical operations acts as a \link{numeric} vector. Bear in mind that the outcome of any mathematical operation on MICs will return a \link{numeric} value.
} }
\description{ \description{
This transforms vectors to a new class \code{\link{mic}}, which treats the input as decimal numbers, while maintaining operators (such as ">=") and only allowing valid MIC values known to the field of (medical) microbiology. This transforms vectors to a new class \code{\link{mic}}, which treats the input as decimal numbers, while maintaining operators (such as ">=") and only allowing valid MIC values known to the field of (medical) microbiology.
@ -76,13 +76,13 @@ subset(df, x > 4) # or with dplyr: df \%>\% filter(x > 4)
#> 10 16 A #> 10 16 A
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
The following \link[=groupGeneric]{generic functions} are implemented for the MIC class: \code{!}, \code{!=}, \code{\%\%}, \code{\%/\%}, \code{&}, \code{*}, \code{+}, \code{-}, \code{/}, \code{<}, \code{<=}, \code{==}, \code{>}, \code{>=}, \code{^}, \code{|}, \code{\link[=abs]{abs()}}, \code{\link[=acos]{acos()}}, \code{\link[=acosh]{acosh()}}, \code{\link[=all]{all()}}, \code{\link[=any]{any()}}, \code{\link[=asin]{asin()}}, \code{\link[=asinh]{asinh()}}, \code{\link[=atan]{atan()}}, \code{\link[=atanh]{atanh()}}, \code{\link[=ceiling]{ceiling()}}, \code{\link[=cos]{cos()}}, \code{\link[=cosh]{cosh()}}, \code{\link[=cospi]{cospi()}}, \code{\link[=cummax]{cummax()}}, \code{\link[=cummin]{cummin()}}, \code{\link[=cumprod]{cumprod()}}, \code{\link[=cumsum]{cumsum()}}, \code{\link[=digamma]{digamma()}}, \code{\link[=exp]{exp()}}, \code{\link[=expm1]{expm1()}}, \code{\link[=floor]{floor()}}, \code{\link[=gamma]{gamma()}}, \code{\link[=lgamma]{lgamma()}}, \code{\link[=log]{log()}}, \code{\link[=log1p]{log1p()}}, \code{\link[=log2]{log2()}}, \code{\link[=log10]{log10()}}, \code{\link[=max]{max()}}, \code{\link[=mean]{mean()}}, \code{\link[=min]{min()}}, \code{\link[=prod]{prod()}}, \code{\link[=range]{range()}}, \code{\link[=round]{round()}}, \code{\link[=sign]{sign()}}, \code{\link[=signif]{signif()}}, \code{\link[=sin]{sin()}}, \code{\link[=sinh]{sinh()}}, \code{\link[=sinpi]{sinpi()}}, \code{\link[=sqrt]{sqrt()}}, \code{\link[=sum]{sum()}}, \code{\link[=tan]{tan()}}, \code{\link[=tanh]{tanh()}}, \code{\link[=tanpi]{tanpi()}}, \code{\link[=trigamma]{trigamma()}} and \code{\link[=trunc]{trunc()}}. Some functions of the \code{stats} package are also implemented: \code{\link[=median]{median()}}, \code{\link[=quantile]{quantile()}}, \code{\link[=mad]{mad()}}, \code{\link[=IQR]{IQR()}}, \code{\link[=fivenum]{fivenum()}}. Also, \code{\link[=boxplot.stats]{boxplot.stats()}} is supported. Since \code{\link[=sd]{sd()}} and \code{\link[=var]{var()}} are non-generic functions, these could not be extended. Use \code{\link[=mad]{mad()}} as an alternative, or use e.g. \code{sd(as.numeric(x))} where \code{x} is your vector of MIC values. All so-called \link[=groupGeneric]{group generic functions} are implemented for the MIC class (such as \code{!}, \code{!=}, \code{<}, \code{>=}, \code{\link[=exp]{exp()}}, \code{\link[=log2]{log2()}}). Some functions of the \code{stats} package are also implemented (such as \code{\link[=quantile]{quantile()}}, \code{\link[=median]{median()}}, \code{\link[=fivenum]{fivenum()}}). Since \code{\link[=sd]{sd()}} and \code{\link[=var]{var()}} are non-generic functions, these could not be extended. Use \code{\link[=mad]{mad()}} as an alternative, or use e.g. \code{sd(as.numeric(x))} where \code{x} is your vector of MIC values.
Using \code{\link[=as.double]{as.double()}} or \code{\link[=as.numeric]{as.numeric()}} on MIC values will remove the operators and return a numeric vector. Do \strong{not} use \code{\link[=as.integer]{as.integer()}} on MIC values as by the \R convention on \link{factor}s, it will return the index of the factor levels (which is often useless for regular users). Using \code{\link[=as.double]{as.double()}} or \code{\link[=as.numeric]{as.numeric()}} on MIC values will remove the operators and return a numeric vector. Do \strong{not} use \code{\link[=as.integer]{as.integer()}} on MIC values as by the \R convention on \link{factor}s, it will return the index of the factor levels (which is often useless for regular users).
Use \code{\link[=droplevels]{droplevels()}} to drop unused levels. At default, it will return a plain factor. Use \code{droplevels(..., as.mic = TRUE)} to maintain the \code{mic} class. Use \code{\link[=droplevels]{droplevels()}} to drop unused levels. At default, it will return a plain factor. Use \code{droplevels(..., as.mic = TRUE)} to maintain the \code{mic} class.
With \code{\link[=rescale_mic]{rescale_mic()}}, existing MIC ranges can be rescaled to a defined range of MIC values. This can be useful to better compare MIC distributions. With \code{\link[=limit_mic_range]{limit_mic_range()}}, existing MIC ranges can be limited to a defined range of MIC values. This can be useful to better compare MIC distributions.
For \code{ggplot2}, use one of the \code{\link[=scale_x_mic]{scale_*_mic()}} functions to plot MIC values. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values. For \code{ggplot2}, use one of the \code{\link[=scale_x_mic]{scale_*_mic()}} functions to plot MIC values. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values.
@ -101,8 +101,8 @@ fivenum(mic_data)
quantile(mic_data) quantile(mic_data)
all(mic_data < 512) all(mic_data < 512)
# rescale MICs using rescale_mic() # limit MICs using limit_mic_range()
rescale_mic(mic_data, mic_range = c(4, 16)) limit_mic_range(mic_data, mic_range = c(4, 16))
# interpret MIC values # interpret MIC values
as.sir( as.sir(

View File

@ -125,7 +125,7 @@ The coercion rules consider the prevalence of microorganisms in humans, which is
\item Lancefield RC (1933). \strong{A serological differentiation of human and other groups of hemolytic streptococci.} \emph{J Exp Med.} 57(4): 571-95; \doi{10.1084/jem.57.4.571} \item Lancefield RC (1933). \strong{A serological differentiation of human and other groups of hemolytic streptococci.} \emph{J Exp Med.} 57(4): 571-95; \doi{10.1084/jem.57.4.571}
\item Berends MS \emph{et al.} (2022). \strong{Trends in Occurrence and Phenotypic Resistance of Coagulase-Negative Staphylococci (CoNS) Found in Human Blood in the Northern Netherlands between 2013 and 2019/} \emph{Micro.rganisms} 10(9), 1801; \doi{10.3390/microorganisms10091801} \item Berends MS \emph{et al.} (2022). \strong{Trends in Occurrence and Phenotypic Resistance of Coagulase-Negative Staphylococci (CoNS) Found in Human Blood in the Northern Netherlands between 2013 and 2019/} \emph{Micro.rganisms} 10(9), 1801; \doi{10.3390/microorganisms10091801}
\item Parte, AC \emph{et al.} (2020). \strong{List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.} International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \doi{10.1099/ijsem.0.004332}. Accessed from \url{https://lpsn.dsmz.de} on December 11th, 2022. \item Parte, AC \emph{et al.} (2020). \strong{List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.} International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \doi{10.1099/ijsem.0.004332}. Accessed from \url{https://lpsn.dsmz.de} on December 11th, 2022.
\item GBIF Secretariat (2022). GBIF Backbone Taxonomy. Checklist dataset \doi{10.15468/39omei}. Accessed from \url{https://www.gbif.org} on December 11th, 2022. \item GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset \doi{10.15468/39omei}. Accessed from \url{https://www.gbif.org} on January 8th, 2024.
\item Reimer, LC \emph{et al.} (2022). \strong{\emph{BacDive} in 2022: the knowledge base for standardized bacterial and archaeal data.} Nucleic Acids Res., 50(D1):D741-D74; \doi{10.1093/nar/gkab961}. Accessed from \url{https://bacdive.dsmz.de} on May 12th, 2023. \item Reimer, LC \emph{et al.} (2022). \strong{\emph{BacDive} in 2022: the knowledge base for standardized bacterial and archaeal data.} Nucleic Acids Res., 50(D1):D741-D74; \doi{10.1093/nar/gkab961}. Accessed from \url{https://bacdive.dsmz.de} on May 12th, 2023.
\item Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: \url{https://phinvads.cdc.gov} \item Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: \url{https://phinvads.cdc.gov}
\item Bartlett A \emph{et al.} (2022). \strong{A comprehensive list of bacterial pathogens infecting humans} \emph{Microbiology} 168:001269; \doi{10.1099/mic.0.001269} \item Bartlett A \emph{et al.} (2022). \strong{A comprehensive list of bacterial pathogens infecting humans} \emph{Microbiology} 168:001269; \doi{10.1099/mic.0.001269}
@ -161,7 +161,7 @@ Furthermore,
\item Any genus present in the \strong{established} list also has \code{prevalence = 1.0} in the \link{microorganisms} data set; \item Any genus present in the \strong{established} list also has \code{prevalence = 1.0} in the \link{microorganisms} data set;
\item Any other genus present in the \strong{putative} list has \code{prevalence = 1.25} in the \link{microorganisms} data set; \item Any other genus present in the \strong{putative} list has \code{prevalence = 1.25} in the \link{microorganisms} data set;
\item Any other species or subspecies of which the genus is present in the two aforementioned groups, has \code{prevalence = 1.5} in the \link{microorganisms} data set; \item Any other species or subspecies of which the genus is present in the two aforementioned groups, has \code{prevalence = 1.5} in the \link{microorganisms} data set;
\item Any \emph{non-bacterial} genus, species or subspecies of which the genus is present in the following list, has \code{prevalence = 1.25} in the \link{microorganisms} data set: \emph{Absidia}, \emph{Acanthamoeba}, \emph{Acremonium}, \emph{Aedes}, \emph{Alternaria}, \emph{Amoeba}, \emph{Ancylostoma}, \emph{Angiostrongylus}, \emph{Anisakis}, \emph{Anopheles}, \emph{Apophysomyces}, \emph{Aspergillus}, \emph{Aureobasidium}, \emph{Basidiobolus}, \emph{Beauveria}, \emph{Blastocystis}, \emph{Blastomyces}, \emph{Candida}, \emph{Capillaria}, \emph{Chaetomium}, \emph{Chrysonilia}, \emph{Cladophialophora}, \emph{Cladosporium}, \emph{Conidiobolus}, \emph{Contracaecum}, \emph{Cordylobia}, \emph{Cryptococcus}, \emph{Curvularia}, \emph{Demodex}, \emph{Dermatobia}, \emph{Dientamoeba}, \emph{Diphyllobothrium}, \emph{Dirofilaria}, \emph{Echinostoma}, \emph{Entamoeba}, \emph{Enterobius}, \emph{Exophiala}, \emph{Exserohilum}, \emph{Fasciola}, \emph{Fonsecaea}, \emph{Fusarium}, \emph{Giardia}, \emph{Haloarcula}, \emph{Halobacterium}, \emph{Halococcus}, \emph{Hendersonula}, \emph{Heterophyes}, \emph{Histomonas}, \emph{Histoplasma}, \emph{Hymenolepis}, \emph{Hypomyces}, \emph{Hysterothylacium}, \emph{Leishmania}, \emph{Malassezia}, \emph{Malbranchea}, \emph{Metagonimus}, \emph{Meyerozyma}, \emph{Microsporidium}, \emph{Microsporum}, \emph{Mortierella}, \emph{Mucor}, \emph{Mycocentrospora}, \emph{Necator}, \emph{Nectria}, \emph{Ochroconis}, \emph{Oesophagostomum}, \emph{Oidiodendron}, \emph{Opisthorchis}, \emph{Pediculus}, \emph{Penicillium}, \emph{Phlebotomus}, \emph{Phoma}, \emph{Pichia}, \emph{Piedraia}, \emph{Pithomyces}, \emph{Pityrosporum}, \emph{Pneumocystis}, \emph{Pseudallescheria}, \emph{Pseudoterranova}, \emph{Pulex}, \emph{Rhizomucor}, \emph{Rhizopus}, \emph{Rhodotorula}, \emph{Saccharomyces}, \emph{Sarcoptes}, \emph{Scolecobasidium}, \emph{Scopulariopsis}, \emph{Scytalidium}, \emph{Spirometra}, \emph{Sporobolomyces}, \emph{Stachybotrys}, \emph{Strongyloides}, \emph{Syngamus}, \emph{Taenia}, \emph{Talaromyces}, \emph{Toxocara}, \emph{Trichinella}, \emph{Trichobilharzia}, \emph{Trichoderma}, \emph{Trichomonas}, \emph{Trichophyton}, \emph{Trichosporon}, \emph{Trichostrongylus}, \emph{Trichuris}, \emph{Tritirachium}, \emph{Trombicula}, \emph{Trypanosoma}, \emph{Tunga}, or \emph{Wuchereria}; \item Any \emph{non-bacterial} genus, species or subspecies of which the genus is present in the following list, has \code{prevalence = 1.25} in the \link{microorganisms} data set: \emph{Absidia}, \emph{Acanthamoeba}, \emph{Acremonium}, \emph{Aedes}, \emph{Alternaria}, \emph{Amoeba}, \emph{Ancylostoma}, \emph{Angiostrongylus}, \emph{Anisakis}, \emph{Anopheles}, \emph{Apophysomyces}, \emph{Arthroderma}, \emph{Aspergillus}, \emph{Aureobasidium}, \emph{Basidiobolus}, \emph{Beauveria}, \emph{Blastocystis}, \emph{Blastomyces}, \emph{Candida}, \emph{Capillaria}, \emph{Chaetomium}, \emph{Chrysonilia}, \emph{Chrysosporium}, \emph{Cladophialophora}, \emph{Cladosporium}, \emph{Conidiobolus}, \emph{Contracaecum}, \emph{Cordylobia}, \emph{Cryptococcus}, \emph{Curvularia}, \emph{Demodex}, \emph{Dermatobia}, \emph{Dientamoeba}, \emph{Diphyllobothrium}, \emph{Dirofilaria}, \emph{Echinostoma}, \emph{Entamoeba}, \emph{Enterobius}, \emph{Exophiala}, \emph{Exserohilum}, \emph{Fasciola}, \emph{Fonsecaea}, \emph{Fusarium}, \emph{Geotrichum}, \emph{Giardia}, \emph{Haloarcula}, \emph{Halobacterium}, \emph{Halococcus}, \emph{Hendersonula}, \emph{Heterophyes}, \emph{Histomonas}, \emph{Histoplasma}, \emph{Hymenolepis}, \emph{Hypomyces}, \emph{Hysterothylacium}, \emph{Kloeckera}, \emph{Kodamaea}, \emph{Leishmania}, \emph{Lichtheimia}, \emph{Lodderomyces}, \emph{Malassezia}, \emph{Malbranchea}, \emph{Metagonimus}, \emph{Meyerozyma}, \emph{Microsporidium}, \emph{Microsporum}, \emph{Millerozyma}, \emph{Mortierella}, \emph{Mucor}, \emph{Mycocentrospora}, \emph{Necator}, \emph{Nectria}, \emph{Ochroconis}, \emph{Oesophagostomum}, \emph{Oidiodendron}, \emph{Opisthorchis}, \emph{Paecilomyces}, \emph{Pediculus}, \emph{Penicillium}, \emph{Phlebotomus}, \emph{Phoma}, \emph{Pichia}, \emph{Piedraia}, \emph{Pithomyces}, \emph{Pityrosporum}, \emph{Pneumocystis}, \emph{Pseudallescheria}, \emph{Pseudoterranova}, \emph{Pulex}, \emph{Rhizomucor}, \emph{Rhizopus}, \emph{Rhodotorula}, \emph{Saccharomyces}, \emph{Saprochaete}, \emph{Sarcoptes}, \emph{Scedosporium}, \emph{Scolecobasidium}, \emph{Scopulariopsis}, \emph{Scytalidium}, \emph{Spirometra}, \emph{Sporobolomyces}, \emph{Sporotrichum}, \emph{Stachybotrys}, \emph{Strongyloides}, \emph{Syngamus}, \emph{Taenia}, \emph{Talaromyces}, \emph{Toxocara}, \emph{Trichinella}, \emph{Trichobilharzia}, \emph{Trichoderma}, \emph{Trichomonas}, \emph{Trichophyton}, \emph{Trichosporon}, \emph{Trichostrongylus}, \emph{Trichuris}, \emph{Tritirachium}, \emph{Trombicula}, \emph{Trypanosoma}, \emph{Tunga}, \emph{Verticillium}, or \emph{Wuchereria};
\item All other records have \code{prevalence = 2.0} in the \link{microorganisms} data set. \item All other records have \code{prevalence = 2.0} in the \link{microorganisms} data set.
} }

View File

@ -12,15 +12,13 @@
\alias{as.sir.data.frame} \alias{as.sir.data.frame}
\alias{sir_interpretation_history} \alias{sir_interpretation_history}
\title{Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data} \title{Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data}
\format{
An object of class \code{sir} (inherits from \code{ordered}, \code{factor}) of length 1.
}
\source{ \source{
For interpretations of minimum inhibitory concentration (MIC) values and disk diffusion diameters: For interpretations of minimum inhibitory concentration (MIC) values and disk diffusion diameters:
\itemize{ \itemize{
\item \strong{M39 Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data}, 2011-2023, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m39/}. \item \strong{CLSI M39: Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data}, 2011-2023, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m39/}.
\item \strong{M100 Performance Standard for Antimicrobial Susceptibility Testing}, 2011-2023, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m100/}. \item \strong{CLSI M100: Performance Standard for Antimicrobial Susceptibility Testing}, 2011-2023, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/microbiology/documents/m100/}.
\item \strong{Breakpoint tables for interpretation of MICs and zone diameters}, 2011-2023, \emph{European Committee on Antimicrobial Susceptibility Testing} (EUCAST). \url{https://www.eucast.org/clinical_breakpoints}. \item \strong{CLSI VET01: Performance Standards for Antimicrobial Disk and Dilution Susceptibility Tests for Bacteria Isolated From Animals}, 2019-2023, \emph{Clinical and Laboratory Standards Institute} (CLSI). \url{https://clsi.org/standards/products/veterinary-medicine/documents/vet01//}.
\item \strong{EUCAST Breakpoint tables for interpretation of MICs and zone diameters}, 2011-2023, \emph{European Committee on Antimicrobial Susceptibility Testing} (EUCAST). \url{https://www.eucast.org/clinical_breakpoints}.
} }
} }
\usage{ \usage{
@ -44,6 +42,7 @@ is_sir_eligible(x, threshold = 0.05)
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), breakpoint_type = getOption("AMR_breakpoint_type", "human"),
host = NULL,
... ...
) )
@ -58,6 +57,7 @@ is_sir_eligible(x, threshold = 0.05)
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), breakpoint_type = getOption("AMR_breakpoint_type", "human"),
host = NULL,
... ...
) )
@ -72,7 +72,8 @@ is_sir_eligible(x, threshold = 0.05)
reference_data = AMR::clinical_breakpoints, reference_data = AMR::clinical_breakpoints,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human") breakpoint_type = getOption("AMR_breakpoint_type", "human"),
host = NULL
) )
sir_interpretation_history(clean = FALSE) sir_interpretation_history(clean = FALSE)
@ -102,7 +103,9 @@ sir_interpretation_history(clean = FALSE)
\item{include_PKPD}{a \link{logical} to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. Can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_include_PKPD}}.} \item{include_PKPD}{a \link{logical} to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. Can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_include_PKPD}}.}
\item{breakpoint_type}{the type of breakpoints to use, either "ECOFF", "animal", or "human". ECOFF stands for Epidemiological Cut-Off values. The default is \code{"human"}, which can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_breakpoint_type}}.} \item{breakpoint_type}{the type of breakpoints to use, either "ECOFF", "animal", or "human". ECOFF stands for Epidemiological Cut-Off values. The default is \code{"human"}, which can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_breakpoint_type}}. If \code{host} is set to values of veterinary species, this will automatically be set to \code{"animal"}.}
\item{host}{a vector (or column name) with \link{character}s to indicate the host. Only useful for veterinary breakpoints, as it requires \code{breakpoint_type = "animal"}. The values can be any text resembling the animal species, even in any of the 20 supported languages of this package. For foreign languages, be sure to set the language with \code{\link[=set_AMR_locale]{set_AMR_locale()}} (though it will be automatically guessed based on the system language).}
\item{col_mo}{column name of the names or codes of the microorganisms (see \code{\link[=as.mo]{as.mo()}}) - the default is the first column of class \code{\link{mo}}. Values will be coerced using \code{\link[=as.mo]{as.mo()}}.} \item{col_mo}{column name of the names or codes of the microorganisms (see \code{\link[=as.mo]{as.mo()}}) - the default is the first column of class \code{\link{mo}}. Values will be coerced using \code{\link[=as.mo]{as.mo()}}.}
@ -112,17 +115,22 @@ sir_interpretation_history(clean = FALSE)
Ordered \link{factor} with new class \code{sir} Ordered \link{factor} with new class \code{sir}
} }
\description{ \description{
Interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI, or clean up existing SIR values. This transforms the input to a new class \code{\link{sir}}, which is an ordered \link{factor} with levels \verb{S < I < R}. Clean up existing SIR values, or interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI. \code{\link[=as.sir]{as.sir()}} transforms the input to a new class \code{\link{sir}}, which is an ordered \link{factor} with levels \verb{S < I < R}.
Currently available \strong{breakpoint guidelines} are EUCAST 2011-2023 and CLSI 2011-2023, and available \strong{breakpoint types} are "ECOFF", "animal", and "human". Currently breakpoints are available:
\itemize{
\item For \strong{clinical microbiology} from EUCAST 2011-2023 and CLSI 2011-2023;
\item For \strong{veterinary microbiology} from EUCAST 2021-2023 and CLSI 2019-2023;
\item ECOFFs (Epidemiological cut-off values) from EUCAST 2020-2023 and CLSI 2022-2023.
}
All breakpoints used for interpretation are publicly available in the \link{clinical_breakpoints} data set. All breakpoints used for interpretation are publicly available in the \link{clinical_breakpoints} data set.
} }
\details{ \details{
\emph{Note: The clinical breakpoints in this package were validated through and imported from \href{https://whonet.org}{WHONET} and the public use of this \code{AMR} package has been endorsed by CLSI and EUCAST, please see \link{clinical_breakpoints} for more information.} \emph{Note: The clinical breakpoints in this package were validated through, and imported from, \href{https://whonet.org}{WHONET}. The public use of this \code{AMR} package has been endorsed by both CLSI and EUCAST. See \link{clinical_breakpoints} for more information.}
\subsection{How it Works}{ \subsection{How it Works}{
The \code{\link[=as.sir]{as.sir()}} function works in four ways: The \code{\link[=as.sir]{as.sir()}} function can work in four ways:
\enumerate{ \enumerate{
\item For \strong{cleaning raw / untransformed data}. The data will be cleaned to only contain values S, I and R and will try its best to determine this with some intelligence. For example, mixed values with SIR interpretations and MIC values such as \code{"<0.25; S"} will be coerced to \code{"S"}. Combined interpretations for multiple test methods (as seen in laboratory records) such as \code{"S; S"} will be coerced to \code{"S"}, but a value like \code{"S; I"} will return \code{NA} with a warning that the input is unclear. \item For \strong{cleaning raw / untransformed data}. The data will be cleaned to only contain values S, I and R and will try its best to determine this with some intelligence. For example, mixed values with SIR interpretations and MIC values such as \code{"<0.25; S"} will be coerced to \code{"S"}. Combined interpretations for multiple test methods (as seen in laboratory records) such as \code{"S; S"} will be coerced to \code{"S"}, but a value like \code{"S; I"} will return \code{NA} with a warning that the input is unclear.
\item For \strong{interpreting minimum inhibitory concentration (MIC) values} according to EUCAST or CLSI. You must clean your MIC values first using \code{\link[=as.mic]{as.mic()}}, that also gives your columns the new data class \code{\link{mic}}. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the \code{mo} argument. \item For \strong{interpreting minimum inhibitory concentration (MIC) values} according to EUCAST or CLSI. You must clean your MIC values first using \code{\link[=as.mic]{as.mic()}}, that also gives your columns the new data class \code{\link{mic}}. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the \code{mo} argument.
@ -131,6 +139,9 @@ The \code{\link[=as.sir]{as.sir()}} function works in four ways:
\if{html}{\out{<div class="sourceCode">}}\preformatted{your_data \%>\% mutate_if(is.mic, as.sir) \if{html}{\out{<div class="sourceCode">}}\preformatted{your_data \%>\% mutate_if(is.mic, as.sir)
your_data \%>\% mutate(across(where(is.mic), as.sir)) your_data \%>\% mutate(across(where(is.mic), as.sir))
# for veterinary breakpoints, also set `host`:
your_data \%>\% mutate_if(is.mic, as.sir, host = "column_with_animal_hosts", guideline = "CLSI")
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
\item Operators like "<=" will be stripped before interpretation. When using \code{conserve_capped_values = TRUE}, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (\code{conserve_capped_values = FALSE}) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". \item Operators like "<=" will be stripped before interpretation. When using \code{conserve_capped_values = TRUE}, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (\code{conserve_capped_values = FALSE}) considers ">2" to be lower than ">=4" and might in this case return "S" or "I".
} }
@ -140,6 +151,9 @@ your_data \%>\% mutate(across(where(is.mic), as.sir))
\if{html}{\out{<div class="sourceCode">}}\preformatted{your_data \%>\% mutate_if(is.disk, as.sir) \if{html}{\out{<div class="sourceCode">}}\preformatted{your_data \%>\% mutate_if(is.disk, as.sir)
your_data \%>\% mutate(across(where(is.disk), as.sir)) your_data \%>\% mutate(across(where(is.disk), as.sir))
# for veterinary breakpoints, also set `host`:
your_data \%>\% mutate_if(is.disk, as.sir, host = "column_with_animal_hosts", guideline = "CLSI")
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
} }
\item For \strong{interpreting a complete data set}, with automatic determination of MIC values, disk diffusion diameters, microorganism names or codes, and antimicrobial test results. This is done very simply by running \code{as.sir(your_data)}. \item For \strong{interpreting a complete data set}, with automatic determination of MIC values, disk diffusion diameters, microorganism names or codes, and antimicrobial test results. This is done very simply by running \code{as.sir(your_data)}.
@ -150,7 +164,7 @@ your_data \%>\% mutate(across(where(is.disk), as.sir))
\subsection{Supported Guidelines}{ \subsection{Supported Guidelines}{
For interpreting MIC values as well as disk diffusion diameters, currently implemented guidelines are EUCAST (2011-2023) and CLSI (2011-2023). For interpreting MIC values as well as disk diffusion diameters, currently implemented guidelines are for \strong{clinical microbiology}: EUCAST 2011-2023 and CLSI 2011-2023, and for \strong{veterinary microbiology}: EUCAST 2021-2023 and CLSI 2019-2023.
Thus, the \code{guideline} argument must be set to e.g., \code{"EUCAST 2023"} or \code{"CLSI 2023"}. By simply using \code{"EUCAST"} (the default) or \code{"CLSI"} as input, the latest included version of that guideline will automatically be selected. You can set your own data set using the \code{reference_data} argument. The \code{guideline} argument will then be ignored. Thus, the \code{guideline} argument must be set to e.g., \code{"EUCAST 2023"} or \code{"CLSI 2023"}. By simply using \code{"EUCAST"} (the default) or \code{"CLSI"} as input, the latest included version of that guideline will automatically be selected. You can set your own data set using the \code{reference_data} argument. The \code{guideline} argument will then be ignored.
@ -162,6 +176,12 @@ You can set the default guideline with the \link[=AMR-options]{package option} \
# or to reset: # or to reset:
options(AMR_guideline = NULL) options(AMR_guideline = NULL)
}\if{html}{\out{</div>}} }\if{html}{\out{</div>}}
For veterinary guidelines, these might be the best options:
\if{html}{\out{<div class="sourceCode">}}\preformatted{ options(AMR_guideline = "CLSI")
options(AMR_breakpoint_type = "animal")
}\if{html}{\out{</div>}}
} }
\subsection{After Interpretation}{ \subsection{After Interpretation}{
@ -171,7 +191,7 @@ After using \code{\link[=as.sir]{as.sir()}}, you can use the \code{\link[=eucast
\subsection{Machine-Readable Clinical Breakpoints}{ \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 29 747 rows and 12 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 29 883 rows and 13 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}{ \subsection{Other}{

View File

@ -5,10 +5,11 @@
\alias{clinical_breakpoints} \alias{clinical_breakpoints}
\title{Data Set with Clinical Breakpoints for SIR Interpretation} \title{Data Set with Clinical Breakpoints for SIR Interpretation}
\format{ \format{
A \link[tibble:tibble]{tibble} with 29 747 observations and 12 variables: A \link[tibble:tibble]{tibble} with 29 883 observations and 13 variables:
\itemize{ \itemize{
\item \code{guideline}\cr Name of the guideline \item \code{guideline}\cr Name of the guideline
\item \code{type}\cr Breakpoint type, either "ECOFF", "animal", or "human" \item \code{type}\cr Breakpoint type, either "ECOFF", "animal", or "human"
\item \code{host}\cr Host of infectious agent. This is mostly useful for veterinary breakpoints and is either "ECOFF", "aquatic", "cats", "cattle", "dogs", "horse", "human", "poultry", or "swine"
\item \code{method}\cr Testing method, either "DISK" or "MIC" \item \code{method}\cr Testing method, either "DISK" or "MIC"
\item \code{site}\cr Body site for which the breakpoint must be applied, e.g. "Oral" or "Respiratory" \item \code{site}\cr Body site for which the breakpoint must be applied, e.g. "Oral" or "Respiratory"
\item \code{mo}\cr Microbial ID, see \code{\link[=as.mo]{as.mo()}} \item \code{mo}\cr Microbial ID, see \code{\link[=as.mo]{as.mo()}}
@ -25,7 +26,13 @@ A \link[tibble:tibble]{tibble} with 29 747 observations and 12 variables:
clinical_breakpoints clinical_breakpoints
} }
\description{ \description{
Data set containing clinical breakpoints to interpret MIC and disk diffusion to SIR values, according to international guidelines. Currently implemented guidelines are EUCAST (2011-2023) and CLSI (2011-2023). Use \code{\link[=as.sir]{as.sir()}} to transform MICs or disks measurements to SIR values. Data set containing clinical breakpoints to interpret MIC and disk diffusion to SIR values, according to international guidelines. This dataset contain breakpoints for humans, 7 different animal groups, and ECOFFs.
Currently available breakpoint guidelines for \strong{clinical microbiology} are EUCAST 2011-2023 and CLSI 2011-2023.
Currently available breakpoint guidelines for \strong{veterinary microbiology} are EUCAST 2021-2023 and CLSI 2019-2023.
Use \code{\link[=as.sir]{as.sir()}} to transform MICs or disks measurements to SIR values.
} }
\details{ \details{
\subsection{Different types of breakpoints}{ \subsection{Different types of breakpoints}{

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -21,14 +21,14 @@ A \link[tibble:tibble]{tibble} with 52 171 observations and 23 variables:
\item \code{gbif_parent}\cr GBIF identifier of the parent taxon \item \code{gbif_parent}\cr GBIF identifier of the parent taxon
\item \code{gbif_renamed_to}\cr GBIF identifier of the currently valid taxon \item \code{gbif_renamed_to}\cr GBIF identifier of the currently valid taxon
\item \code{source}\cr Either "GBIF", "LPSN", or "manually added" (see \emph{Source}) \item \code{source}\cr Either "GBIF", "LPSN", or "manually added" (see \emph{Source})
\item \code{prevalence}\cr Prevalence of the microorganism according to Bartlett \emph{et al.} (2022, \doi{10.1099/mic.0.001269}), see \code{\link[=mo_matching_score]{mo_matching_score()}} for the full explanation \item \code{prevalence}\cr Prevalence of the microorganism based on Bartlett \emph{et al.} (2022, \doi{10.1099/mic.0.001269}), see \code{\link[=mo_matching_score]{mo_matching_score()}} for the full explanation
\item \code{snomed}\cr Systematized Nomenclature of Medicine (SNOMED) code of the microorganism, version of July 1st, 2021 (see \emph{Source}). Use \code{\link[=mo_snomed]{mo_snomed()}} to retrieve it quickly, see \code{\link[=mo_property]{mo_property()}}. \item \code{snomed}\cr Systematized Nomenclature of Medicine (SNOMED) code of the microorganism, version of July 1st, 2021 (see \emph{Source}). Use \code{\link[=mo_snomed]{mo_snomed()}} to retrieve it quickly, see \code{\link[=mo_property]{mo_property()}}.
} }
} }
\source{ \source{
\itemize{ \itemize{
\item Parte, AC \emph{et al.} (2020). \strong{List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.} International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \doi{10.1099/ijsem.0.004332}. Accessed from \url{https://lpsn.dsmz.de} on December 11th, 2022. \item Parte, AC \emph{et al.} (2020). \strong{List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.} International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \doi{10.1099/ijsem.0.004332}. Accessed from \url{https://lpsn.dsmz.de} on December 11th, 2022.
\item GBIF Secretariat (2022). GBIF Backbone Taxonomy. Checklist dataset \doi{10.15468/39omei}. Accessed from \url{https://www.gbif.org} on December 11th, 2022. \item GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset \doi{10.15468/39omei}. Accessed from \url{https://www.gbif.org} on January 8th, 2024.
\item Reimer, LC \emph{et al.} (2022). \strong{\emph{BacDive} in 2022: the knowledge base for standardized bacterial and archaeal data.} Nucleic Acids Res., 50(D1):D741-D74; \doi{10.1093/nar/gkab961}. Accessed from \url{https://bacdive.dsmz.de} on May 12th, 2023. \item Reimer, LC \emph{et al.} (2022). \strong{\emph{BacDive} in 2022: the knowledge base for standardized bacterial and archaeal data.} Nucleic Acids Res., 50(D1):D741-D74; \doi{10.1093/nar/gkab961}. Accessed from \url{https://bacdive.dsmz.de} on May 12th, 2023.
\item Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: \url{https://phinvads.cdc.gov} \item Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: \url{https://phinvads.cdc.gov}
\item Grimont \emph{et al.} (2007). Antigenic Formulae of the Salmonella Serovars, 9th Edition. WHO Collaborating Centre for Reference and Research on \emph{Salmonella} (WHOCC-SALM). \item Grimont \emph{et al.} (2007). Antigenic Formulae of the Salmonella Serovars, 9th Edition. WHO Collaborating Centre for Reference and Research on \emph{Salmonella} (WHOCC-SALM).
@ -39,7 +39,7 @@ A \link[tibble:tibble]{tibble} with 52 171 observations and 23 variables:
microorganisms microorganisms
} }
\description{ \description{
A data set containing the full microbial taxonomy (\strong{last updated: December 11th, 2022}) of five kingdoms from the List of Prokaryotic names with Standing in Nomenclature (LPSN) and the Global Biodiversity Information Facility (GBIF). This data set is the backbone of this \code{AMR} package. MO codes can be looked up using \code{\link[=as.mo]{as.mo()}}. A data set containing the full microbial taxonomy (\strong{last updated: January 8th, 2024}) of five kingdoms from the List of Prokaryotic names with Standing in Nomenclature (LPSN) and the Global Biodiversity Information Facility (GBIF). This data set is the backbone of this \code{AMR} package. MO codes can be looked up using \code{\link[=as.mo]{as.mo()}}.
} }
\details{ \details{
Please note that entries are only based on the List of Prokaryotic names with Standing in Nomenclature (LPSN) and the Global Biodiversity Information Facility (GBIF) (see below). Since these sources incorporate entries based on (recent) publications in the International Journal of Systematic and Evolutionary Microbiology (IJSEM), it can happen that the year of publication is sometimes later than one might expect. Please note that entries are only based on the List of Prokaryotic names with Standing in Nomenclature (LPSN) and the Global Biodiversity Information Facility (GBIF) (see below). Since these sources incorporate entries based on (recent) publications in the International Journal of Systematic and Evolutionary Microbiology (IJSEM), it can happen that the year of publication is sometimes later than one might expect.

View File

@ -48,7 +48,7 @@ Furthermore,
\item Any genus present in the \strong{established} list also has \code{prevalence = 1.0} in the \link{microorganisms} data set; \item Any genus present in the \strong{established} list also has \code{prevalence = 1.0} in the \link{microorganisms} data set;
\item Any other genus present in the \strong{putative} list has \code{prevalence = 1.25} in the \link{microorganisms} data set; \item Any other genus present in the \strong{putative} list has \code{prevalence = 1.25} in the \link{microorganisms} data set;
\item Any other species or subspecies of which the genus is present in the two aforementioned groups, has \code{prevalence = 1.5} in the \link{microorganisms} data set; \item Any other species or subspecies of which the genus is present in the two aforementioned groups, has \code{prevalence = 1.5} in the \link{microorganisms} data set;
\item Any \emph{non-bacterial} genus, species or subspecies of which the genus is present in the following list, has \code{prevalence = 1.25} in the \link{microorganisms} data set: \emph{Absidia}, \emph{Acanthamoeba}, \emph{Acremonium}, \emph{Aedes}, \emph{Alternaria}, \emph{Amoeba}, \emph{Ancylostoma}, \emph{Angiostrongylus}, \emph{Anisakis}, \emph{Anopheles}, \emph{Apophysomyces}, \emph{Aspergillus}, \emph{Aureobasidium}, \emph{Basidiobolus}, \emph{Beauveria}, \emph{Blastocystis}, \emph{Blastomyces}, \emph{Candida}, \emph{Capillaria}, \emph{Chaetomium}, \emph{Chrysonilia}, \emph{Cladophialophora}, \emph{Cladosporium}, \emph{Conidiobolus}, \emph{Contracaecum}, \emph{Cordylobia}, \emph{Cryptococcus}, \emph{Curvularia}, \emph{Demodex}, \emph{Dermatobia}, \emph{Dientamoeba}, \emph{Diphyllobothrium}, \emph{Dirofilaria}, \emph{Echinostoma}, \emph{Entamoeba}, \emph{Enterobius}, \emph{Exophiala}, \emph{Exserohilum}, \emph{Fasciola}, \emph{Fonsecaea}, \emph{Fusarium}, \emph{Giardia}, \emph{Haloarcula}, \emph{Halobacterium}, \emph{Halococcus}, \emph{Hendersonula}, \emph{Heterophyes}, \emph{Histomonas}, \emph{Histoplasma}, \emph{Hymenolepis}, \emph{Hypomyces}, \emph{Hysterothylacium}, \emph{Leishmania}, \emph{Malassezia}, \emph{Malbranchea}, \emph{Metagonimus}, \emph{Meyerozyma}, \emph{Microsporidium}, \emph{Microsporum}, \emph{Mortierella}, \emph{Mucor}, \emph{Mycocentrospora}, \emph{Necator}, \emph{Nectria}, \emph{Ochroconis}, \emph{Oesophagostomum}, \emph{Oidiodendron}, \emph{Opisthorchis}, \emph{Pediculus}, \emph{Penicillium}, \emph{Phlebotomus}, \emph{Phoma}, \emph{Pichia}, \emph{Piedraia}, \emph{Pithomyces}, \emph{Pityrosporum}, \emph{Pneumocystis}, \emph{Pseudallescheria}, \emph{Pseudoterranova}, \emph{Pulex}, \emph{Rhizomucor}, \emph{Rhizopus}, \emph{Rhodotorula}, \emph{Saccharomyces}, \emph{Sarcoptes}, \emph{Scolecobasidium}, \emph{Scopulariopsis}, \emph{Scytalidium}, \emph{Spirometra}, \emph{Sporobolomyces}, \emph{Stachybotrys}, \emph{Strongyloides}, \emph{Syngamus}, \emph{Taenia}, \emph{Talaromyces}, \emph{Toxocara}, \emph{Trichinella}, \emph{Trichobilharzia}, \emph{Trichoderma}, \emph{Trichomonas}, \emph{Trichophyton}, \emph{Trichosporon}, \emph{Trichostrongylus}, \emph{Trichuris}, \emph{Tritirachium}, \emph{Trombicula}, \emph{Trypanosoma}, \emph{Tunga}, or \emph{Wuchereria}; \item Any \emph{non-bacterial} genus, species or subspecies of which the genus is present in the following list, has \code{prevalence = 1.25} in the \link{microorganisms} data set: \emph{Absidia}, \emph{Acanthamoeba}, \emph{Acremonium}, \emph{Aedes}, \emph{Alternaria}, \emph{Amoeba}, \emph{Ancylostoma}, \emph{Angiostrongylus}, \emph{Anisakis}, \emph{Anopheles}, \emph{Apophysomyces}, \emph{Arthroderma}, \emph{Aspergillus}, \emph{Aureobasidium}, \emph{Basidiobolus}, \emph{Beauveria}, \emph{Blastocystis}, \emph{Blastomyces}, \emph{Candida}, \emph{Capillaria}, \emph{Chaetomium}, \emph{Chrysonilia}, \emph{Chrysosporium}, \emph{Cladophialophora}, \emph{Cladosporium}, \emph{Conidiobolus}, \emph{Contracaecum}, \emph{Cordylobia}, \emph{Cryptococcus}, \emph{Curvularia}, \emph{Demodex}, \emph{Dermatobia}, \emph{Dientamoeba}, \emph{Diphyllobothrium}, \emph{Dirofilaria}, \emph{Echinostoma}, \emph{Entamoeba}, \emph{Enterobius}, \emph{Exophiala}, \emph{Exserohilum}, \emph{Fasciola}, \emph{Fonsecaea}, \emph{Fusarium}, \emph{Geotrichum}, \emph{Giardia}, \emph{Haloarcula}, \emph{Halobacterium}, \emph{Halococcus}, \emph{Hendersonula}, \emph{Heterophyes}, \emph{Histomonas}, \emph{Histoplasma}, \emph{Hymenolepis}, \emph{Hypomyces}, \emph{Hysterothylacium}, \emph{Kloeckera}, \emph{Kodamaea}, \emph{Leishmania}, \emph{Lichtheimia}, \emph{Lodderomyces}, \emph{Malassezia}, \emph{Malbranchea}, \emph{Metagonimus}, \emph{Meyerozyma}, \emph{Microsporidium}, \emph{Microsporum}, \emph{Millerozyma}, \emph{Mortierella}, \emph{Mucor}, \emph{Mycocentrospora}, \emph{Necator}, \emph{Nectria}, \emph{Ochroconis}, \emph{Oesophagostomum}, \emph{Oidiodendron}, \emph{Opisthorchis}, \emph{Paecilomyces}, \emph{Pediculus}, \emph{Penicillium}, \emph{Phlebotomus}, \emph{Phoma}, \emph{Pichia}, \emph{Piedraia}, \emph{Pithomyces}, \emph{Pityrosporum}, \emph{Pneumocystis}, \emph{Pseudallescheria}, \emph{Pseudoterranova}, \emph{Pulex}, \emph{Rhizomucor}, \emph{Rhizopus}, \emph{Rhodotorula}, \emph{Saccharomyces}, \emph{Saprochaete}, \emph{Sarcoptes}, \emph{Scedosporium}, \emph{Scolecobasidium}, \emph{Scopulariopsis}, \emph{Scytalidium}, \emph{Spirometra}, \emph{Sporobolomyces}, \emph{Sporotrichum}, \emph{Stachybotrys}, \emph{Strongyloides}, \emph{Syngamus}, \emph{Taenia}, \emph{Talaromyces}, \emph{Toxocara}, \emph{Trichinella}, \emph{Trichobilharzia}, \emph{Trichoderma}, \emph{Trichomonas}, \emph{Trichophyton}, \emph{Trichosporon}, \emph{Trichostrongylus}, \emph{Trichuris}, \emph{Tritirachium}, \emph{Trombicula}, \emph{Trypanosoma}, \emph{Tunga}, \emph{Verticillium}, or \emph{Wuchereria};
\item All other records have \code{prevalence = 2.0} in the \link{microorganisms} data set. \item All other records have \code{prevalence = 2.0} in the \link{microorganisms} data set.
} }

View File

@ -354,7 +354,7 @@ This function uses \code{\link[=as.mo]{as.mo()}} internally, which uses an advan
\item Lancefield RC (1933). \strong{A serological differentiation of human and other groups of hemolytic streptococci.} \emph{J Exp Med.} 57(4): 571-95; \doi{10.1084/jem.57.4.571} \item Lancefield RC (1933). \strong{A serological differentiation of human and other groups of hemolytic streptococci.} \emph{J Exp Med.} 57(4): 571-95; \doi{10.1084/jem.57.4.571}
\item Berends MS \emph{et al.} (2022). \strong{Trends in Occurrence and Phenotypic Resistance of Coagulase-Negative Staphylococci (CoNS) Found in Human Blood in the Northern Netherlands between 2013 and 2019/} \emph{Micro.rganisms} 10(9), 1801; \doi{10.3390/microorganisms10091801} \item Berends MS \emph{et al.} (2022). \strong{Trends in Occurrence and Phenotypic Resistance of Coagulase-Negative Staphylococci (CoNS) Found in Human Blood in the Northern Netherlands between 2013 and 2019/} \emph{Micro.rganisms} 10(9), 1801; \doi{10.3390/microorganisms10091801}
\item Parte, AC \emph{et al.} (2020). \strong{List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.} International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \doi{10.1099/ijsem.0.004332}. Accessed from \url{https://lpsn.dsmz.de} on December 11th, 2022. \item Parte, AC \emph{et al.} (2020). \strong{List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.} International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \doi{10.1099/ijsem.0.004332}. Accessed from \url{https://lpsn.dsmz.de} on December 11th, 2022.
\item GBIF Secretariat (2022). GBIF Backbone Taxonomy. Checklist dataset \doi{10.15468/39omei}. Accessed from \url{https://www.gbif.org} on December 11th, 2022. \item GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset \doi{10.15468/39omei}. Accessed from \url{https://www.gbif.org} on January 8th, 2024.
\item Reimer, LC \emph{et al.} (2022). \strong{\emph{BacDive} in 2022: the knowledge base for standardized bacterial and archaeal data.} Nucleic Acids Res., 50(D1):D741-D74; \doi{10.1093/nar/gkab961}. Accessed from \url{https://bacdive.dsmz.de} on May 12th, 2023. \item Reimer, LC \emph{et al.} (2022). \strong{\emph{BacDive} in 2022: the knowledge base for standardized bacterial and archaeal data.} Nucleic Acids Res., 50(D1):D741-D74; \doi{10.1093/nar/gkab961}. Accessed from \url{https://bacdive.dsmz.de} on May 12th, 2023.
\item Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: \url{https://phinvads.cdc.gov} \item Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: \url{https://phinvads.cdc.gov}
\item Bartlett A \emph{et al.} (2022). \strong{A comprehensive list of bacterial pathogens infecting humans} \emph{Microbiology} 168:001269; \doi{10.1099/mic.0.001269} \item Bartlett A \emph{et al.} (2022). \strong{A comprehensive list of bacterial pathogens infecting humans} \emph{Microbiology} 168:001269; \doi{10.1099/mic.0.001269}

View File

@ -117,7 +117,7 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, drop = FALSE, ...)
\arguments{ \arguments{
\item{keep_operators}{a \link{character} specifying how to handle operators (such as \code{>} and \code{<=}) in the input. Accepts one of three values: \code{"all"} (or \code{TRUE}) to keep all operators, \code{"none"} (or \code{FALSE}) to remove all operators, or \code{"edges"} to keep operators only at both ends of the range.} \item{keep_operators}{a \link{character} specifying how to handle operators (such as \code{>} and \code{<=}) in the input. Accepts one of three values: \code{"all"} (or \code{TRUE}) to keep all operators, \code{"none"} (or \code{FALSE}) to remove all operators, or \code{"edges"} to keep operators only at both ends of the range.}
\item{mic_range}{a manual range to plot the MIC values, e.g., \code{mic_range = c(0.001, 32)}. Use \code{NA} to set no limit on one side, e.g., \code{mic_range = c(NA, 32)}.} \item{mic_range}{a manual range to limit the MIC values, e.g., \code{mic_range = c(0.001, 32)}. Use \code{NA} to set no limit on one side, e.g., \code{mic_range = c(NA, 32)}.}
\item{drop}{a \link{logical} to remove intermediate MIC values, defaults to \code{FALSE}} \item{drop}{a \link{logical} to remove intermediate MIC values, defaults to \code{FALSE}}
@ -143,7 +143,7 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, drop = FALSE, ...)
\item{include_PKPD}{a \link{logical} to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. Can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_include_PKPD}}.} \item{include_PKPD}{a \link{logical} to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. Can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_include_PKPD}}.}
\item{breakpoint_type}{the type of breakpoints to use, either "ECOFF", "animal", or "human". ECOFF stands for Epidemiological Cut-Off values. The default is \code{"human"}, which can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_breakpoint_type}}.} \item{breakpoint_type}{the type of breakpoints to use, either "ECOFF", "animal", or "human". ECOFF stands for Epidemiological Cut-Off values. The default is \code{"human"}, which can also be set with the \link[=AMR-options]{package option} \code{\link[=AMR-options]{AMR_breakpoint_type}}. If \code{host} is set to values of veterinary species, this will automatically be set to \code{"animal"}.}
} }
\value{ \value{
The \code{autoplot()} functions return a \code{\link[ggplot2:ggplot]{ggplot}} model that is extendible with any \code{ggplot2} function. The \code{autoplot()} functions return a \code{\link[ggplot2:ggplot]{ggplot}} model that is extendible with any \code{ggplot2} function.

View File

@ -58,8 +58,8 @@ $(document).ready(function() {
// contributors // contributors
x = x.replace("Alex", "Prof. Alex"); x = x.replace("Alex", "Prof. Alex");
x = x.replace("Andrew", "Dr. Andrew"); x = x.replace("Andrew", "Dr. Andrew");
x = x.replace("Anthony", "Dr. Anthony");
x = x.replace("Annick", "Dr. Annick"); x = x.replace("Annick", "Dr. Annick");
x = x.replace("Anthony", "Dr. Anthony");
x = x.replace("Bart", "Dr. Bart"); x = x.replace("Bart", "Dr. Bart");
x = x.replace("Bhanu", "Prof. Bhanu"); x = x.replace("Bhanu", "Prof. Bhanu");
x = x.replace("Casper", "Prof. Casper"); x = x.replace("Casper", "Prof. Casper");
@ -67,6 +67,8 @@ $(document).ready(function() {
x = x.replace("Corinna", "Dr. Corinna"); x = x.replace("Corinna", "Dr. Corinna");
x = x.replace("Dennis", "Dr. Dennis"); x = x.replace("Dennis", "Dr. Dennis");
x = x.replace("Gwen", "Dr. Gwen"); x = x.replace("Gwen", "Dr. Gwen");
x = x.replace("Jason", "Dr. Jason");
x = x.replace("Javier", "Prof. Javier");
x = x.replace("Jonas", "Dr. Jonas"); x = x.replace("Jonas", "Dr. Jonas");
x = x.replace("Judith", "Dr. Judith"); x = x.replace("Judith", "Dr. Judith");
x = x.replace("Matthijs", "Dr. Matthijs"); x = x.replace("Matthijs", "Dr. Matthijs");