param rules for EUCAST

This commit is contained in:
dr. M.S. (Matthijs) Berends 2018-10-18 12:10:10 +02:00
parent 693f64bdbf
commit 0ef91be3ac
7 changed files with 1431 additions and 1348 deletions

View File

@ -168,6 +168,8 @@ importFrom(crayon,black)
importFrom(crayon,blue) importFrom(crayon,blue)
importFrom(crayon,bold) importFrom(crayon,bold)
importFrom(crayon,green) importFrom(crayon,green)
importFrom(crayon,red)
importFrom(crayon,silver)
importFrom(curl,nslookup) importFrom(curl,nslookup)
importFrom(data.table,as.data.table) importFrom(data.table,as.data.table)
importFrom(data.table,data.table) importFrom(data.table,data.table)
@ -190,6 +192,7 @@ importFrom(dplyr,if_else)
importFrom(dplyr,lag) importFrom(dplyr,lag)
importFrom(dplyr,left_join) importFrom(dplyr,left_join)
importFrom(dplyr,mutate) importFrom(dplyr,mutate)
importFrom(dplyr,mutate_at)
importFrom(dplyr,n_distinct) importFrom(dplyr,n_distinct)
importFrom(dplyr,progress_estimated) importFrom(dplyr,progress_estimated)
importFrom(dplyr,pull) importFrom(dplyr,pull)
@ -201,6 +204,7 @@ importFrom(dplyr,summarise)
importFrom(dplyr,summarise_if) importFrom(dplyr,summarise_if)
importFrom(dplyr,tibble) importFrom(dplyr,tibble)
importFrom(dplyr,top_n) importFrom(dplyr,top_n)
importFrom(dplyr,vars)
importFrom(grDevices,boxplot.stats) importFrom(grDevices,boxplot.stats)
importFrom(graphics,axis) importFrom(graphics,axis)
importFrom(graphics,barplot) importFrom(graphics,barplot)

View File

@ -5,9 +5,10 @@
#### Changed #### Changed
* Big changes to the `EUCAST_rules` function: * Big changes to the `EUCAST_rules` function:
* It now also applies rules from the EUCAST 'Breakpoint tables for bacteria', version 8.1, 2018, http://www.eucast.org/clinical_breakpoints/ (see Source of the function) * Now also applies rules from the EUCAST 'Breakpoint tables for bacteria', version 8.1, 2018, http://www.eucast.org/clinical_breakpoints/ (see Source of the function)
* There's better error handling when rules cannot be applied (i.e. new values could not be inserted) * New parameter `rules` to specify which rules should be applied (expert rules, breakpoints, others or all)
* A new `verbose` parameter can be set to `TRUE` to get very specific messages about which columns and rows were affected * New parameter `verbose` which can be set to `TRUE` to get very specific messages about which columns and rows were affected
* Better error handling when rules cannot be applied (i.e. new values could not be inserted)
* The amount of affected values will now only be measured once per row/column combination * The amount of affected values will now only be measured once per row/column combination
* Data set `septic_patients` now reflects these changes * Data set `septic_patients` now reflects these changes
* Added parameter `combine_IR` (TRUE/FALSE) to functions `portion_df` and `count_df`, to indicate that all values of I and R must be merged into one, so the output only consists of S vs. IR (susceptible vs. non-susceptible) * Added parameter `combine_IR` (TRUE/FALSE) to functions `portion_df` and `count_df`, to indicate that all values of I and R must be merged into one, so the output only consists of S vs. IR (susceptible vs. non-susceptible)

2441
R/eucast.R

File diff suppressed because it is too large Load Diff

View File

@ -59,6 +59,7 @@
#' @importFrom dplyr %>% select pull n_distinct group_by arrange desc mutate summarise n_distinct tibble #' @importFrom dplyr %>% select pull n_distinct group_by arrange desc mutate summarise n_distinct tibble
#' @importFrom utils browseVignettes installed.packages #' @importFrom utils browseVignettes installed.packages
#' @importFrom hms is.hms #' @importFrom hms is.hms
#' @importFrom crayon red silver
#' @keywords summary summarise frequency freq #' @keywords summary summarise frequency freq
#' @rdname freq #' @rdname freq
#' @name freq #' @name freq
@ -321,13 +322,24 @@ frequency_tbl <- function(x,
} else { } else {
header <- header %>% paste0(markdown_line, 'Class: ', class(x) %>% rev() %>% paste(collapse = " > ")) header <- header %>% paste0(markdown_line, 'Class: ', class(x) %>% rev() %>% paste(collapse = " > "))
if (!mode(x) %in% class(x)) { if (!mode(x) %in% class(x)) {
header <- header %>% paste0(" (", mode(x), ")") header <- header %>% paste0(silver(paste0(" (", mode(x), ")")))
}
}
NAs_to_red <- function(x) {
if (!x %in% c("0", "0.00%")) {
red(x)
} else {
x
} }
} }
header <- header %>% paste0(markdown_line, '\nLength: ', (NAs %>% length() + x %>% length()) %>% format(), header <- header %>% paste0(markdown_line, '\nLength: ', (NAs %>% length() + x %>% length()) %>% format(),
' (of which NA: ', NAs %>% length() %>% format(), ' (of which NA: ', NAs %>% length() %>% format() %>% NAs_to_red(),
' = ', (NAs %>% length() / (NAs %>% length() + x %>% length())) %>% percent(force_zero = TRUE, round = digits) %>% sub('NaN', '0', ., fixed = TRUE), ')') ' = ', (NAs %>% length() / (NAs %>% length() + x %>% length())) %>%
percent(force_zero = TRUE, round = digits) %>%
sub('NaN', '0', ., fixed = TRUE) %>%
NAs_to_red(), ')')
header <- header %>% paste0(markdown_line, '\nUnique: ', x %>% n_distinct() %>% format()) header <- header %>% paste0(markdown_line, '\nUnique: ', x %>% n_distinct() %>% format())
if (NROW(x) > 0 & any(class(x) == "character")) { if (NROW(x) > 0 & any(class(x) == "character")) {
@ -570,6 +582,7 @@ diff.frequency_tbl <- function(x, y, ...) {
#' @exportMethod print.frequency_tbl #' @exportMethod print.frequency_tbl
#' @importFrom knitr kable #' @importFrom knitr kable
#' @importFrom dplyr n_distinct #' @importFrom dplyr n_distinct
#' @importFrom crayon bold
#' @export #' @export
print.frequency_tbl <- function(x, nmax = getOption("max.print.freq", default = 15), ...) { print.frequency_tbl <- function(x, nmax = getOption("max.print.freq", default = 15), ...) {
@ -602,7 +615,13 @@ print.frequency_tbl <- function(x, nmax = getOption("max.print.freq", default =
} }
} }
cat("Frequency table", title, "\n") title <- paste("Frequency table", title)
if (opt$tbl_format == "pandoc") {
title <- bold(title) # only bold in regular printing
}
cat(title, "\n")
if (!is.null(opt$header)) { if (!is.null(opt$header)) {
cat(opt$header) cat(opt$header)

148
README.md
View File

@ -280,37 +280,40 @@ plot(mic_data)
### Overwrite/force resistance based on EUCAST rules ### Overwrite/force resistance based on EUCAST rules
This is also called *interpretive reading*. This is also called *interpretive reading*.
```r ```r
before <- data.frame(bact = c("STAAUR", # Staphylococcus aureus a <- data.frame(mo = c("Staphylococcus aureus",
"ENCFAE", # Enterococcus faecalis "Enterococcus faecalis",
"ESCCOL", # Escherichia coli "Escherichia coli",
"KLEPNE", # Klebsiella pneumoniae "Klebsiella pneumoniae",
"PSEAER"), # Pseudomonas aeruginosa "Pseudomonas aeruginosa"),
vanc = "-", # Vancomycin vanc = "-", # Vancomycin
amox = "-", # Amoxicillin amox = "-", # Amoxicillin
coli = "-", # Colistin coli = "-", # Colistin
cfta = "-", # Ceftazidime cfta = "-", # Ceftazidime
cfur = "-", # Cefuroxime cfur = "-", # Cefuroxime
stringsAsFactors = FALSE) peni = "S", # Benzylpenicillin
before cfox = "S", # Cefoxitin
# bact vanc amox coli cfta cfur stringsAsFactors = FALSE)
# 1 STAAUR - - - - -
# 2 ENCFAE - - - - - a
# 3 ESCCOL - - - - - # mo vanc amox coli cfta cfur peni cfox
# 4 KLEPNE - - - - - # 1 Staphylococcus aureus - - - - - S S
# 5 PSEAER - - - - - # 2 Enterococcus faecalis - - - - - S S
# 3 Escherichia coli - - - - - S S
# 4 Klebsiella pneumoniae - - - - - S S
# 5 Pseudomonas aeruginosa - - - - - S S
# Now apply those rules; just need a column with bacteria IDs and antibiotic results: b <- EUCAST_rules(a) # 18 results are forced as R or S
after <- EUCAST_rules(before, col_mo = "bact")
after b
# bact vanc amox coli cfta cfur # mo vanc amox coli cfta cfur peni cfox
# 1 STAAUR - - R R - # 1 Staphylococcus aureus - S R R S S S
# 2 ENCFAE - - R R R # 2 Enterococcus faecalis - - R R R S R
# 3 ESCCOL R - - - - # 3 Escherichia coli R - - - - R S
# 4 KLEPNE R R - - - # 4 Klebsiella pneumoniae R R - - - R S
# 5 PSEAER R R - - R # 5 Pseudomonas aeruginosa R R - - R R R
``` ```
Bacteria IDs can be retrieved with the `guess_mo` function. It uses any type of info about a microorganism as input. For example, all these will return value `STAAUR`, the ID of *S. aureus*: Bacteria IDs can be retrieved with the `guess_mo` function. It uses any type of info about a microorganism as input. For example, all these will return value `B_STPHY_AUR`, the ID of *S. aureus*:
```r ```r
guess_mo("stau") guess_mo("stau")
guess_mo("STAU") guess_mo("STAU")
@ -319,6 +322,7 @@ guess_mo("S. aureus")
guess_mo("S aureus") guess_mo("S aureus")
guess_mo("Staphylococcus aureus") guess_mo("Staphylococcus aureus")
guess_mo("MRSA") # Methicillin Resistant S. aureus guess_mo("MRSA") # Methicillin Resistant S. aureus
guess_mo("MSSA") # Methicillin Susceptible S. aureus
guess_mo("VISA") # Vancomycin Intermediate S. aureus guess_mo("VISA") # Vancomycin Intermediate S. aureus
guess_mo("VRSA") # Vancomycin Resistant S. aureus guess_mo("VRSA") # Vancomycin Resistant S. aureus
``` ```
@ -359,32 +363,32 @@ Factors sort on item by default:
```r ```r
septic_patients %>% freq(hospital_id) septic_patients %>% freq(hospital_id)
# Frequency table of `hospital_id` # Frequency table of `hospital_id`
# Class: factor # Class: factor (numeric)
# Length: 2000 (of which NA: 0 = 0.0%) # Length: 2000 (of which NA: 0 = 0.00%)
# Unique: 4 # Unique: 4
# #
# Item Count Percent Cum. Count Cum. Percent (Factor Level) # Item Count Percent Cum. Count Cum. Percent (Factor Level)
# --- ----- ------ -------- ----------- ------------- --------------- # --- ----- ------ -------- ----------- ------------- ---------------
# 1 A 319 16.0% 319 16.0% 1 # 1 A 321 16.1% 321 16.1% 1
# 2 B 661 33.1% 980 49.0% 2 # 2 B 663 33.1% 984 49.2% 2
# 3 C 256 12.8% 1236 61.8% 3 # 3 C 254 12.7% 1238 61.9% 3
# 4 D 764 38.2% 2000 100.0% 4 # 4 D 762 38.1% 2000 100.0% 4
``` ```
This can be changed with the `sort.count` parameter: This can be changed with the `sort.count` parameter:
```r ```r
septic_patients %>% freq(hospital_id, sort.count = TRUE) septic_patients %>% freq(hospital_id, sort.count = TRUE)
# Frequency table of `hospital_id` # Frequency table of `hospital_id`
# Class: factor # Class: factor (numeric)
# Length: 2000 (of which NA: 0 = 0.0%) # Length: 2000 (of which NA: 0 = 0.00%)
# Unique: 4 # Unique: 4
# #
# Item Count Percent Cum. Count Cum. Percent (Factor Level) # Item Count Percent Cum. Count Cum. Percent (Factor Level)
# --- ----- ------ -------- ----------- ------------- --------------- # --- ----- ------ -------- ----------- ------------- ---------------
# 1 D 764 38.2% 764 38.2% 4 # 1 D 762 38.1% 762 38.1% 4
# 2 B 661 33.1% 1425 71.2% 2 # 2 B 663 33.1% 1425 71.2% 2
# 3 A 319 16.0% 1744 87.2% 1 # 3 A 321 16.1% 1746 87.3% 1
# 4 C 256 12.8% 2000 100.0% 3 # 4 C 254 12.7% 2000 100.0% 3
``` ```
All other types, like numbers, characters and dates, sort on count by default: All other types, like numbers, characters and dates, sort on count by default:
@ -397,7 +401,7 @@ septic_patients %>% freq(date)
# #
# Oldest: 2 January 2002 # Oldest: 2 January 2002
# Newest: 28 December 2017 (+5839) # Newest: 28 December 2017 (+5839)
# Median: 7 Augustus 2009 (~48%) # Median: 31 July 2009 (~47%)
# #
# Item Count Percent Cum. Count Cum. Percent # Item Count Percent Cum. Count Cum. Percent
# --- ----------- ------ -------- ----------- ------------- # --- ----------- ------ -------- ----------- -------------
@ -408,14 +412,14 @@ septic_patients %>% freq(date)
# 5 2015-11-19 7 0.4% 41 2.1% # 5 2015-11-19 7 0.4% 41 2.1%
# 6 2005-12-22 6 0.3% 47 2.4% # 6 2005-12-22 6 0.3% 47 2.4%
# 7 2015-10-12 6 0.3% 53 2.6% # 7 2015-10-12 6 0.3% 53 2.6%
# 8 2002-05-16 5 0.2% 58 2.9% # 8 2002-02-27 5 0.2% 58 2.9%
# 9 2004-02-02 5 0.2% 63 3.1% # 9 2003-10-20 5 0.2% 63 3.1%
# 10 2004-02-18 5 0.2% 68 3.4% # 10 2004-02-02 5 0.2% 68 3.4%
# 11 2005-08-16 5 0.2% 73 3.6% # 11 2004-02-18 5 0.2% 73 3.6%
# 12 2005-09-01 5 0.2% 78 3.9% # 12 2004-06-22 5 0.2% 78 3.9%
# 13 2006-06-29 5 0.2% 83 4.2% # 13 2004-12-01 5 0.2% 83 4.2%
# 14 2007-08-10 5 0.2% 88 4.4% # 14 2005-08-16 5 0.2% 88 4.4%
# 15 2008-08-29 5 0.2% 93 4.7% # 15 2005-09-01 5 0.2% 93 4.7%
# [ reached getOption("max.print.freq") -- omitted 1136 entries, n = 1907 (95.3%) ] # [ reached getOption("max.print.freq") -- omitted 1136 entries, n = 1907 (95.3%) ]
``` ```
For numeric values, some extra descriptive statistics will be calculated: For numeric values, some extra descriptive statistics will be calculated:
@ -423,26 +427,26 @@ For numeric values, some extra descriptive statistics will be calculated:
freq(runif(n = 10, min = 1, max = 5)) freq(runif(n = 10, min = 1, max = 5))
# Frequency table # Frequency table
# Class: numeric # Class: numeric
# Length: 10 (of which NA: 0 = 0.0%) # Length: 10 (of which NA: 0 = 0.00%)
# Unique: 10 # Unique: 10
# #
# Mean: 3.4 # Mean: 3.1
# Std. dev.: 1.3 (CV: 0.38, MAD: 1.3) # Std. dev.: 1.3 (CV: 0.43, MAD: 1.8)
# Five-Num: 1.6 | 2.0 | 3.9 | 4.7 | 4.8 (IQR: 2.7, CQV: 0.4) # Five-Num: 1.3 | 1.7 | 3.2 | 4.3 | 5.0 (IQR: 2.6, CQV: 0.43)
# Outliers: 0 # Outliers: 0
# #
# Item Count Percent Cum. Count Cum. Percent # Item Count Percent Cum. Count Cum. Percent
# --- --------- ------ -------- ----------- ------------- # --- --------- ------ -------- ----------- -------------
# 1 1.568997 1 10.0% 1 10.0% # 1 1.271079 1 10.0% 1 10.0%
# 2 1.993575 1 10.0% 2 20.0% # 2 1.333975 1 10.0% 2 20.0%
# 3 2.022348 1 10.0% 3 30.0% # 3 1.714946 1 10.0% 3 30.0%
# 4 2.236038 1 10.0% 4 40.0% # 4 2.751871 1 10.0% 4 40.0%
# 5 3.579828 1 10.0% 5 50.0% # 5 3.090140 1 10.0% 5 50.0%
# 6 4.178081 1 10.0% 6 60.0% # 6 3.260850 1 10.0% 6 60.0%
# 7 4.394818 1 10.0% 7 70.0% # 7 3.824105 1 10.0% 7 70.0%
# 8 4.689871 1 10.0% 8 80.0% # 8 4.278028 1 10.0% 8 80.0%
# 9 4.698626 1 10.0% 9 90.0% # 9 4.436265 1 10.0% 9 90.0%
# 10 4.751488 1 10.0% 10 100.0% # 10 4.996694 1 10.0% 10 100.0%
# #
# Warning message: # Warning message:
# All observations are unique. # All observations are unique.
@ -457,15 +461,17 @@ Data sets to work with antibiotics and bacteria properties.
```r ```r
# Data set with complete taxonomic trees from ITIS, containing of # Data set with complete taxonomic trees from ITIS, containing of
# the three kingdoms Bacteria, Fungi and Protozoa # the three kingdoms Bacteria, Fungi and Protozoa
microorganisms # A tibble: 18,831 x 15 microorganisms # data.frame: 18,833 x 15
microorganisms.old # data.frame: 2,383 x 4
# Data set with 2000 random blood culture isolates from anonymised
# septic patients between 2001 and 2017 in 5 Dutch hospitals
septic_patients # A tibble: 2,000 x 49
# Data set with ATC antibiotics codes, official names, trade names # Data set with ATC antibiotics codes, official names, trade names
# and DDDs (oral and parenteral) # and DDDs (oral and parenteral)
antibiotics # A tibble: 423 x 18 antibiotics # data.frame: 423 x 18
# Data set with 2000 random blood culture isolates from anonymised
# septic patients between 2001 and 2017 in 5 Dutch hospitals
septic_patients # data.frame: 2,000 x 49
``` ```
## Benchmarks ## Benchmarks
@ -501,7 +507,7 @@ microbenchmark(A = as.mo("stau"),
# F 10.69445 10.73852 10.80334 10.79596 10.86856 10.97465 10 # F 10.69445 10.73852 10.80334 10.79596 10.86856 10.97465 10
``` ```
The more an input value resembles a full name, the faster the result will be found. In the table above, all measurements are in milliseconds, tested on a quite regular Linux server from 2007 with 2 GB RAM. A value of 10.8 milliseconds means it can roughly determine 93 different input values per second. It case of 36.2 milliseconds, this is only 28 input values per second. The more an input value resembles a full name, the faster the result will be found. In the table above, all measurements are in milliseconds, tested on a quite regular Linux server from 2007 with 2 GB RAM. A value of 10.8 milliseconds means it will roughly determine 93 different (unique) input values per second. It case of 36.2 milliseconds, this is only 28 input values per second.
To improve speed, the `as.mo` function also takes into account the prevalence of human pathogenic microorganisms. The downside is of course that less prevalent microorganisms will be determined far less faster. See this example for the ID of *Burkholderia nodosa* (`B_BRKHL_NOD`): To improve speed, the `as.mo` function also takes into account the prevalence of human pathogenic microorganisms. The downside is of course that less prevalent microorganisms will be determined far less faster. See this example for the ID of *Burkholderia nodosa* (`B_BRKHL_NOD`):
@ -523,7 +529,7 @@ microbenchmark(B = as.mo("burnod"),
``` ```
(Note: `A` is missing here, because `as.mo("buno")` returns `F_BUELL_NOT`: the ID of the fungus *Buellia notabilis*) (Note: `A` is missing here, because `as.mo("buno")` returns `F_BUELL_NOT`: the ID of the fungus *Buellia notabilis*)
That takes up to 12 times as much time! A value of 190.4 milliseconds means it can only determine 5 different input values per second. We can conclude that looking up arbitrary codes of less prevalent microorganisms is the worst way to go, in terms of calculation performance. That takes up to 12 times as much time! A value of 190.4 milliseconds means it can only determine ~5 different input values per second. We can conclude that looking up arbitrary codes of less prevalent microorganisms is the worst way to go, in terms of calculation performance.
To relieve this pitfall and further improve performance, two important calculations take almost no time at all: **repetive results** and **already precalculated results**. To relieve this pitfall and further improve performance, two important calculations take almost no time at all: **repetive results** and **already precalculated results**.

View File

@ -22,7 +22,8 @@
} }
} }
\usage{ \usage{
EUCAST_rules(tbl, col_mo = "mo", info = TRUE, amcl = "amcl", EUCAST_rules(tbl, col_mo = "mo", info = TRUE,
rules = c("breakpoints", "expert", "other", "all"), amcl = "amcl",
amik = "amik", amox = "amox", ampi = "ampi", azit = "azit", amik = "amik", amox = "amox", ampi = "ampi", azit = "azit",
azlo = "azlo", aztr = "aztr", cefa = "cefa", cfep = "cfep", azlo = "azlo", aztr = "aztr", cefa = "cefa", cfep = "cfep",
cfot = "cfot", cfox = "cfox", cfra = "cfra", cfta = "cfta", cfot = "cfot", cfox = "cfox", cfra = "cfra", cfta = "cfta",
@ -49,7 +50,9 @@ interpretive_reading(...)
\item{info}{print progress} \item{info}{print progress}
\item{amcl, amik, amox, ampi, azit, azlo, aztr, cefa, cfep, cfot, cfox, cfra, cfta, cftr, cfur, chlo, cipr, clar, clin, clox, coli, czol, dapt, doxy, erta, eryt, fosf, fusi, gent, imip, kana, levo, linc, line, mero, mezl, mino, moxi, nali, neom, neti, nitr, norf, novo, oflo, oxac, peni, pita, poly, pris, qida, rifa, roxi, siso, teic, tetr, tica, tige, tobr, trim, trsu, vanc}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{rules}{a character vector that specifies which rules should be applied - one or more of \code{c("breakpoints", "expert", "other", "all")}}
\item{amcl, amik, amox, ampi, azit, azlo, aztr, cefa, cfep, cfot, cfox, cfra, cfta, cftr, cfur, chlo, cipr, clar, clin, clox, coli, czol, dapt, doxy, erta, eryt, fosf, fusi, gent, imip, kana, levo, linc, line, mero, mezl, mino, moxi, nali, neom, neti, nitr, norf, novo, oflo, oxac, peni, pita, poly, pris, qida, rifa, roxi, siso, teic, tetr, tica, tige, tobr, trim, trsu, vanc}{column name of an antibiotic, see Details}
\item{col_bactid}{Deprecated. Use \code{col_mo} instead.} \item{col_bactid}{Deprecated. Use \code{col_mo} instead.}
@ -58,14 +61,17 @@ interpretive_reading(...)
\item{...}{parameters that are passed on to \code{EUCAST_rules}} \item{...}{parameters that are passed on to \code{EUCAST_rules}}
} }
\value{ \value{
table with edited variables of antibiotics. Value of parameter \code{tbl}, possibly with edited values of antibiotics.
} }
\description{ \description{
Apply susceptibility rules as defined by the European Committee on Antimicrobial Susceptibility Testing (EUCAST, \url{http://eucast.org}), see \emph{Source}. This includes (1) expert rules, (2) intrinsic resistance and (3) inferred resistance as defined in their breakpoint tables. Apply susceptibility rules as defined by the European Committee on Antimicrobial Susceptibility Testing (EUCAST, \url{http://eucast.org}), see \emph{Source}. This includes (1) expert rules, (2) intrinsic resistance and (3) inferred resistance as defined in their breakpoint tables.
} }
\details{
To define antibiotics column names, input a text or use \code{NA} to skip a column (e.g. \code{tica = NA}). Non-existing columns will anyway be skipped with a warning. See the Antibiotics section for an explanation of the abbreviations.
}
\section{Antibiotics}{ \section{Antibiotics}{
Abbrevations of the column containing antibiotics: Abbrevations of the column containing antibiotics in the form: \strong{abbreviation}: generic name (\emph{ATC code})
\strong{amcl}: amoxicillin+clavulanic acid (\emph{J01CR02}), \strong{amcl}: amoxicillin+clavulanic acid (\emph{J01CR02}),
\strong{amik}: amikacin (\emph{J01GB06}), \strong{amik}: amikacin (\emph{J01GB06}),
@ -143,11 +149,27 @@ a <- data.frame(mo = c("Staphylococcus aureus",
coli = "-", # Colistin coli = "-", # Colistin
cfta = "-", # Ceftazidime cfta = "-", # Ceftazidime
cfur = "-", # Cefuroxime cfur = "-", # Cefuroxime
peni = "S", # Benzylpenicillin
cfox = "S", # Cefoxitin
stringsAsFactors = FALSE) stringsAsFactors = FALSE)
a
b <- EUCAST_rules(a) # 11 results will be forced as R due to intrinsic resistance a
# mo vanc amox coli cfta cfur peni cfox
# 1 Staphylococcus aureus - - - - - S S
# 2 Enterococcus faecalis - - - - - S S
# 3 Escherichia coli - - - - - S S
# 4 Klebsiella pneumoniae - - - - - S S
# 5 Pseudomonas aeruginosa - - - - - S S
b <- EUCAST_rules(a) # 18 results are forced as R or S
b b
# mo vanc amox coli cfta cfur peni cfox
# 1 Staphylococcus aureus - S R R S S S
# 2 Enterococcus faecalis - - R R R S R
# 3 Escherichia coli R - - - - R S
# 4 Klebsiella pneumoniae R R - - - R S
# 5 Pseudomonas aeruginosa R R - - R R R
} }
\keyword{eucast} \keyword{eucast}
\keyword{interpretive} \keyword{interpretive}

View File

@ -40,123 +40,123 @@ EUCAST_exceptional_phenotypes(tbl, country = "EUCAST", ...)
\item{info}{print progress} \item{info}{print progress}
\item{amcl}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{amcl}{column name of an antibiotic, see Details}
\item{amik}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{amik}{column name of an antibiotic, see Details}
\item{amox}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{amox}{column name of an antibiotic, see Details}
\item{ampi}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{ampi}{column name of an antibiotic, see Details}
\item{azit}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{azit}{column name of an antibiotic, see Details}
\item{aztr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{aztr}{column name of an antibiotic, see Details}
\item{cefa}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cefa}{column name of an antibiotic, see Details}
\item{cfra}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cfra}{column name of an antibiotic, see Details}
\item{cfep}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cfep}{column name of an antibiotic, see Details}
\item{cfot}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cfot}{column name of an antibiotic, see Details}
\item{cfox}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cfox}{column name of an antibiotic, see Details}
\item{cfta}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cfta}{column name of an antibiotic, see Details}
\item{cftr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cftr}{column name of an antibiotic, see Details}
\item{cfur}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cfur}{column name of an antibiotic, see Details}
\item{chlo}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{chlo}{column name of an antibiotic, see Details}
\item{cipr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{cipr}{column name of an antibiotic, see Details}
\item{clar}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{clar}{column name of an antibiotic, see Details}
\item{clin}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{clin}{column name of an antibiotic, see Details}
\item{clox}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{clox}{column name of an antibiotic, see Details}
\item{coli}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{coli}{column name of an antibiotic, see Details}
\item{czol}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{czol}{column name of an antibiotic, see Details}
\item{dapt}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{dapt}{column name of an antibiotic, see Details}
\item{doxy}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{doxy}{column name of an antibiotic, see Details}
\item{erta}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{erta}{column name of an antibiotic, see Details}
\item{eryt}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{eryt}{column name of an antibiotic, see Details}
\item{fosf}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{fosf}{column name of an antibiotic, see Details}
\item{fusi}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{fusi}{column name of an antibiotic, see Details}
\item{gent}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{gent}{column name of an antibiotic, see Details}
\item{imip}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{imip}{column name of an antibiotic, see Details}
\item{kana}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{kana}{column name of an antibiotic, see Details}
\item{levo}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{levo}{column name of an antibiotic, see Details}
\item{linc}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{linc}{column name of an antibiotic, see Details}
\item{line}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{line}{column name of an antibiotic, see Details}
\item{mero}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{mero}{column name of an antibiotic, see Details}
\item{metr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{metr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.}
\item{mino}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{mino}{column name of an antibiotic, see Details}
\item{moxi}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{moxi}{column name of an antibiotic, see Details}
\item{nali}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{nali}{column name of an antibiotic, see Details}
\item{neom}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{neom}{column name of an antibiotic, see Details}
\item{neti}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{neti}{column name of an antibiotic, see Details}
\item{nitr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{nitr}{column name of an antibiotic, see Details}
\item{novo}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{novo}{column name of an antibiotic, see Details}
\item{norf}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{norf}{column name of an antibiotic, see Details}
\item{oflo}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{oflo}{column name of an antibiotic, see Details}
\item{peni}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{peni}{column name of an antibiotic, see Details}
\item{pita}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{pita}{column name of an antibiotic, see Details}
\item{poly}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{poly}{column name of an antibiotic, see Details}
\item{qida}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{qida}{column name of an antibiotic, see Details}
\item{rifa}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{rifa}{column name of an antibiotic, see Details}
\item{roxi}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{roxi}{column name of an antibiotic, see Details}
\item{siso}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{siso}{column name of an antibiotic, see Details}
\item{teic}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{teic}{column name of an antibiotic, see Details}
\item{tetr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{tetr}{column name of an antibiotic, see Details}
\item{tica}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{tica}{column name of an antibiotic, see Details}
\item{tige}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{tige}{column name of an antibiotic, see Details}
\item{tobr}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{tobr}{column name of an antibiotic, see Details}
\item{trim}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{trim}{column name of an antibiotic, see Details}
\item{trsu}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{trsu}{column name of an antibiotic, see Details}
\item{vanc}{column name of an antibiotic. Use \code{NA} to skip a column, like \code{tica = NA}. Non-existing columns will anyway be skipped. See the Antibiotics section for an explanation of the abbreviations.} \item{vanc}{column name of an antibiotic, see Details}
\item{col_bactid}{Deprecated. Use \code{col_mo} instead.} \item{col_bactid}{Deprecated. Use \code{col_mo} instead.}
@ -173,7 +173,7 @@ When \code{country} will be left blank, guidelines will be taken from EUCAST Exp
} }
\section{Antibiotics}{ \section{Antibiotics}{
Abbrevations of the column containing antibiotics: Abbrevations of the column containing antibiotics in the form: \strong{abbreviation}: generic name (\emph{ATC code})
\strong{amcl}: amoxicillin+clavulanic acid (\emph{J01CR02}), \strong{amcl}: amoxicillin+clavulanic acid (\emph{J01CR02}),
\strong{amik}: amikacin (\emph{J01GB06}), \strong{amik}: amikacin (\emph{J01GB06}),