1
0
mirror of https://github.com/msberends/AMR.git synced 2026-08-29 10:38:55 +02:00

Built site for AMR@3.0.1.9003: ba30b08

This commit is contained in:
github-actions
2025-11-24 10:42:21 +00:00
parent 7d16891987
commit 141fc468f8
161 changed files with 21798 additions and 313 deletions

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,15 @@
# Deprecated Functions, Arguments, or Datasets
These objects are so-called
'[Deprecated](https://rdrr.io/r/base/Deprecated.html)'. **They will be
removed in a future version of this package.** Using these will give a
warning with the name of the alternative object it has been replaced by
(if there is one).
## Usage
``` r
ab_class(...)
ab_selector(...)
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

153
reference/AMR-options.md Normal file
View File

@@ -0,0 +1,153 @@
# Options for the AMR package
This is an overview of all the package-specific
[`options()`](https://rdrr.io/r/base/options.html) you can set in the
`AMR` package.
## Options
- `AMR_antibiogram_formatting_type`
A [numeric](https://rdrr.io/r/base/numeric.html) (1-22) to use in
[`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md), to
indicate which formatting type to use.
- `AMR_breakpoint_type`
A [character](https://rdrr.io/r/base/character.html) to use in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md), to indicate
which breakpoint type to use. This must be either "ECOFF", "animal",
or "human".
- `AMR_capped_mic_handling`
A [character](https://rdrr.io/r/base/character.html) to use in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md), to indicate
how capped MIC values (`<`, `<=`, `>`, `>=`) should be interpreted.
Must be one of `"standard"`, `"strict"`, `"relaxed"`, or `"inverse"` -
the default is `"standard"`.
- `AMR_cleaning_regex`
A [regular expression](https://rdrr.io/r/base/regex.html)
(case-insensitive) to use in
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md) and all
[`mo_*`](https://amr-for-r.org/reference/mo_property.md) functions, to
clean the user input. The default is the outcome of
[`mo_cleaning_regex()`](https://amr-for-r.org/reference/as.mo.md),
which removes texts between brackets and texts such as "species" and
"serovar".
- `AMR_custom_ab`
A file location to an RDS file, to use custom antimicrobial drugs with
this package. This is explained in
[`add_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md).
- `AMR_custom_mo`
A file location to an RDS file, to use custom microorganisms with this
package. This is explained in
[`add_custom_microorganisms()`](https://amr-for-r.org/reference/add_custom_microorganisms.md).
- `AMR_eucastrules`
A [character](https://rdrr.io/r/base/character.html) to set the
default types of rules for
[`eucast_rules()`](https://amr-for-r.org/reference/eucast_rules.md)
function, must be one or more of: `"breakpoints"`, `"expert"`,
`"other"`, `"custom"`, `"all"`, and defaults to
`c("breakpoints", "expert")`.
- `AMR_guideline`
A [character](https://rdrr.io/r/base/character.html) to set the
default guideline for interpreting MIC values and disk diffusion
diameters with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md). 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 `"EUCAST 2025"`. Supported guideline are
currently EUCAST (2011-2025) and CLSI (2011-2025).
- `AMR_ignore_pattern`
A [regular expression](https://rdrr.io/r/base/regex.html) to ignore
(i.e., make `NA`) any match given in
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md) and all
[`mo_*`](https://amr-for-r.org/reference/mo_property.md) functions.
- `AMR_include_PKPD`
A [logical](https://rdrr.io/r/base/logical.html) to use in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md), to indicate
that PK/PD clinical breakpoints must be applied as a last resort - the
default is `TRUE`.
- `AMR_substitute_missing_r_breakpoint`
A [logical](https://rdrr.io/r/base/logical.html) to use in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md), to indicate
that missing R breakpoints must be substituted with `"R"` - the
default is `FALSE`.
- `AMR_include_screening`
A [logical](https://rdrr.io/r/base/logical.html) to use in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md), to indicate
that clinical breakpoints for screening are allowed - the default is
`FALSE`.
- `AMR_keep_synonyms`
A [logical](https://rdrr.io/r/base/logical.html) to use in
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md) and all
[`mo_*`](https://amr-for-r.org/reference/mo_property.md) 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_locale`
A [character](https://rdrr.io/r/base/character.html) to set the
language for the `AMR` package, can be one of these supported language
names or [ISO 639-1 codes](https://en.wikipedia.org/wiki/ISO_639-1):
English (en), Arabic (ar), Bengali (bn), Chinese (zh), Czech (cs),
Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek
(el), Hindi (hi), Indonesian (id), Italian (it), Japanese (ja), Korean
(ko), Norwegian (no), Polish (pl), Portuguese (pt), Romanian (ro),
Russian (ru), Spanish (es), Swahili (sw), Swedish (sv), Turkish (tr),
Ukrainian (uk), Urdu (ur), or Vietnamese (vi). The default is the
current system language (if supported, English otherwise).
- `AMR_mo_source`
A file location for a manual code list to be used in
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md) and all
[`mo_*`](https://amr-for-r.org/reference/mo_property.md) functions.
This is explained in
[`set_mo_source()`](https://amr-for-r.org/reference/mo_source.md).
## 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:
utils::file.edit("~/.Rprofile")
In this file, you can set options such as...
options(AMR_locale = "pt")
options(AMR_include_PKPD = TRUE)
...to add Portuguese language support of antimicrobials, and allow PK/PD
rules when interpreting MIC values with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md).
### 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, 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.
2. For each user, open the `.Rprofile` file using
`utils::file.edit("~/.Rprofile")` and put in there:
source("X:/team_folder/R_options.R")
3. Reload R/RStudio and check the settings with
[`getOption()`](https://rdrr.io/r/base/options.html), e.g.
`getOption("AMR_locale")` if you have set that value.
Now the team settings are configured in only one place, and can be
maintained there.

View File

@@ -21,7 +21,7 @@ The AMR package is available in English, Arabic, Bengali, Chinese, Czech, Danish
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

184
reference/AMR.md Normal file
View File

@@ -0,0 +1,184 @@
# The `AMR` Package
Welcome to the `AMR` package.
The `AMR` package is a peer-reviewed, [free and
open-source](https://amr-for-r.org/#copyright) R package with [zero
dependencies](https://en.wikipedia.org/wiki/Dependency_hell) to simplify
the analysis and prediction of Antimicrobial Resistance (AMR) and to
work with microbial and antimicrobial data and properties, by using
evidence-based methods. **Our aim is to provide a standard** for clean
and reproducible AMR data analysis, that can therefore empower
epidemiological analyses to continuously enable surveillance and
treatment evaluation in any setting. We are a team of [many different
researchers](https://amr-for-r.org/authors.html) from around the globe
to make this a successful and durable project!
This work was published in the Journal of Statistical Software (Volume
104(3);
[doi:10.18637/jss.v104.i03](https://doi.org/10.18637/jss.v104.i03) ) and
formed the basis of two PhD theses
([doi:10.33612/diss.177417131](https://doi.org/10.33612/diss.177417131)
and
[doi:10.33612/diss.192486375](https://doi.org/10.33612/diss.192486375)
).
After installing this package, R knows [**~79 000 distinct microbial
species**](https://amr-for-r.org/reference/microorganisms.html) (updated
June 2024) and all [**~620 antimicrobial and antiviral
drugs**](https://amr-for-r.org/reference/antimicrobials.html) by name
and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED
CT), and knows all about valid SIR and MIC values. The integral clinical
breakpoint guidelines from CLSI 2011-2025 and EUCAST 2011-2025 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). **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
[University of Groningen](https://www.rug.nl) and the [University
Medical Center Groningen](https://www.umcg.nl).
The `AMR` package is available in English, Arabic, Bengali, Chinese,
Czech, Danish, Dutch, Finnish, French, German, Greek, Hindi, Indonesian,
Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Romanian,
Russian, Spanish, Swahili, Swedish, Turkish, Ukrainian, Urdu, and
Vietnamese. Antimicrobial drug (group) names and colloquial
microorganism names are provided in these languages.
## Source
To cite AMR in publications use:
Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C
(2022). "AMR: An R Package for Working with Antimicrobial Resistance
Data." *Journal of Statistical Software*, *104*(3), 1-31.
[doi:10.18637/jss.v104.i03](https://doi.org/10.18637/jss.v104.i03)
A BibTeX entry for LaTeX users is:
@Article{,
title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},
author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},
journal = {Journal of Statistical Software},
year = {2022},
volume = {104},
number = {3},
pages = {1--31},
doi = {10.18637/jss.v104.i03},
}
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
Useful links:
- <https://amr-for-r.org>
- <https://github.com/msberends/AMR>
- Report bugs at <https://github.com/msberends/AMR/issues>
## Author
**Maintainer**: Matthijs S. Berends <m.s.berends@umcg.nl>
([ORCID](https://orcid.org/0000-0001-7620-1800))
Authors:
- Dennis Souverein ([ORCID](https://orcid.org/0000-0003-0455-0336))
\[contributor\]
- Erwin E. A. Hassing \[contributor\]
Other contributors:
- Aislinn Cook ([ORCID](https://orcid.org/0000-0002-9189-7815))
\[contributor\]
- Andrew P. Norgan ([ORCID](https://orcid.org/0000-0002-2955-2066))
\[contributor\]
- Anita Williams ([ORCID](https://orcid.org/0000-0002-5295-8451))
\[contributor\]
- Annick Lenglet ([ORCID](https://orcid.org/0000-0003-2013-8405))
\[contributor\]
- Anthony Underwood ([ORCID](https://orcid.org/0000-0002-8547-4277))
\[contributor\]
- Anton Mymrikov \[contributor\]
- Bart C. Meijer \[contributor\]
- Christian F. Luz ([ORCID](https://orcid.org/0000-0001-5809-5995))
\[contributor\]
- Dmytro Mykhailenko \[contributor\]
- Eric H. L. C. M. Hazenberg \[contributor\]
- Gwen Knight ([ORCID](https://orcid.org/0000-0002-7263-9896))
\[contributor\]
- Jane Hawkey ([ORCID](https://orcid.org/0000-0001-9661-5293))
\[contributor\]
- Jason Stull ([ORCID](https://orcid.org/0000-0002-9028-8153))
\[contributor\]
- Javier Sanchez ([ORCID](https://orcid.org/0000-0003-2605-8094))
\[contributor\]
- Jonas Salm \[contributor\]
- Judith M. Fonville \[contributor\]
- Kathryn Holt ([ORCID](https://orcid.org/0000-0003-3949-2471))
\[contributor\]
- Larisse Bolton ([ORCID](https://orcid.org/0000-0001-7879-2173))
\[contributor\]
- Matthew Saab ([ORCID](https://orcid.org/0009-0008-6626-7919))
\[contributor\]
- Natacha Couto ([ORCID](https://orcid.org/0000-0002-9152-5464))
\[contributor\]
- Peter Dutey-Magni ([ORCID](https://orcid.org/0000-0002-8942-9836))
\[contributor\]
- Rogier P. Schade ([ORCID](https://orcid.org/0000-0002-9487-4467))
\[contributor\]
- Sofia Ny ([ORCID](https://orcid.org/0000-0002-2017-1363))
\[contributor\]
- Alex W. Friedrich ([ORCID](https://orcid.org/0000-0003-4881-038X))
\[thesis advisor\]
- Bhanu N. M. Sinha ([ORCID](https://orcid.org/0000-0003-1634-0010))
\[thesis advisor\]
- Casper J. Albers ([ORCID](https://orcid.org/0000-0002-9213-6743))
\[thesis advisor\]
- Corinna Glasner ([ORCID](https://orcid.org/0000-0003-1241-1328))
\[thesis advisor\]

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

45
reference/WHOCC.md Normal file
View File

@@ -0,0 +1,45 @@
# WHOCC: WHO Collaborating Centre for Drug Statistics Methodology
All antimicrobial drugs and their official names, ATC codes, ATC groups
and defined daily dose (DDD) are included in this package, using the WHO
Collaborating Centre for Drug Statistics Methodology.
## WHOCC
This package contains **all ~550 antibiotic, antimycotic and antiviral
drugs** and their Anatomical Therapeutic Chemical (ATC) codes, ATC
groups and Defined Daily Dose (DDD) from the World Health Organization
Collaborating Centre for Drug Statistics Methodology (WHOCC,
<https://atcddd.fhi.no>) and the Pharmaceuticals Community Register of
the European Commission
(<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>).
These have become the gold standard for international drug utilisation
monitoring and research.
The WHOCC is located in Oslo at the Norwegian Institute of Public Health
and funded by the Norwegian government. The European Commission is the
executive of the European Union and promotes its general interest.
**NOTE: The WHOCC copyright does not allow use for commercial purposes,
unlike any other info from this package.** See
<https://atcddd.fhi.no/copyright_disclaimer/.>
## Examples
``` r
as.ab("meropenem")
#> Class 'ab'
#> [1] MEM
ab_name("J01DH02")
#> [1] "Meropenem"
ab_tradenames("flucloxacillin")
#> [1] "bactopen" "cloxacap" "cloxacillinhydrate"
#> [4] "cloxypen" "floxacillin" "floxacillinanhydrous"
#> [7] "floxapen" "floxapensalt" "fluclomix"
#> [10] "flucloxacilina" "flucloxacilline" "flucloxacillinum"
#> [13] "flucloxin" "fluorochloroxacillin" "galfloxin"
#> [16] "latocillin" "orbeninhydrate" "rimaflox"
#> [19] "staphobristol" "zoxin"
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

151
reference/WHONET.md Normal file
View File

@@ -0,0 +1,151 @@
# Data Set with 500 Isolates - WHONET Example
This example data set has the exact same structure as an export file
from WHONET. Such files can be used with this package, as this example
data set shows. The antimicrobial results are from our
[example_isolates](https://amr-for-r.org/reference/example_isolates.md)
data set. All patient names were created using online surname generators
and are only in place for practice purposes.
## Usage
``` r
WHONET
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 500
observations and 53 variables:
- `Identification number`
ID of the sample
- `Specimen number`
ID of the specimen
- `Organism`
Name of the microorganism. Before analysis, you should transform this
to a valid microbial class, using
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- `Country`
Country of origin
- `Laboratory`
Name of laboratory
- `Last name`
Fictitious last name of patient
- `First name`
Fictitious initial of patient
- `Sex`
Fictitious gender of patient
- `Age`
Fictitious age of patient
- `Age category`
Age group, can also be looked up using
[`age_groups()`](https://amr-for-r.org/reference/age_groups.md)
- `Date of admission`
[Date](https://rdrr.io/r/base/Dates.html) of hospital admission
- `Specimen date`
[Date](https://rdrr.io/r/base/Dates.html) when specimen was received
at laboratory
- `Specimen type`
Specimen type or group
- `Specimen type (Numeric)`
Translation of `"Specimen type"`
- `Reason`
Reason of request with Differential Diagnosis
- `Isolate number`
ID of isolate
- `Organism type`
Type of microorganism, can also be looked up using
[`mo_type()`](https://amr-for-r.org/reference/mo_property.md)
- `Serotype`
Serotype of microorganism
- `Beta-lactamase`
Microorganism produces beta-lactamase?
- `ESBL`
Microorganism produces extended spectrum beta-lactamase?
- `Carbapenemase`
Microorganism produces carbapenemase?
- `MRSA screening test`
Microorganism is possible MRSA?
- `Inducible clindamycin resistance`
Clindamycin can be induced?
- `Comment`
Other comments
- `Date of data entry`
[Date](https://rdrr.io/r/base/Dates.html) this data was entered in
WHONET
- `AMP_ND10:CIP_EE`
28 different antimicrobials. You can lookup the abbreviations in the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set, or use e.g.
[`ab_name("AMP")`](https://amr-for-r.org/reference/ab_property.md) to
get the official name immediately. Before analysis, you should
transform this to a valid antimicrobial class, using
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md).
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## Examples
``` r
WHONET
#> # A tibble: 500 × 53
#> `Identification number` `Specimen number` Organism Country Laboratory
#> <chr> <int> <chr> <chr> <chr>
#> 1 fe41d7bafa 1748 SPN Belgium National …
#> 2 91f175ec37 1767 eco The Netherlands National …
#> 3 cc4015056e 1343 eco The Netherlands National …
#> 4 e864b692f5 1894 MAP Denmark National …
#> 5 3d051fe345 1739 PVU Belgium National …
#> 6 c80762a08d 1846 103 The Netherlands National …
#> 7 8022d3727c 1628 103 Denmark National …
#> 8 f3dc5f553d 1493 eco The Netherlands National …
#> 9 15add38f6c 1847 eco France National …
#> 10 fd41248def 1458 eco Germany National …
#> # 490 more rows
#> # 48 more variables: `Last name` <chr>, `First name` <chr>, Sex <chr>,
#> # Age <dbl>, `Age category` <chr>, `Date of admission` <date>,
#> # `Specimen date` <date>, `Specimen type` <chr>,
#> # `Specimen type (Numeric)` <dbl>, Reason <chr>, `Isolate number` <int>,
#> # `Organism type` <chr>, Serotype <chr>, `Beta-lactamase` <lgl>, ESBL <lgl>,
#> # Carbapenemase <lgl>, `MRSA screening test` <lgl>, …
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

192
reference/ab_from_text.md Normal file
View File

@@ -0,0 +1,192 @@
# Retrieve Antimicrobial Drug Names and Doses from Clinical Text
Use this function on e.g. clinical texts from health care records. It
returns a [list](https://rdrr.io/r/base/list.html) with all
antimicrobial drugs, doses and forms of administration found in the
texts.
## Usage
``` r
ab_from_text(text, type = c("drug", "dose", "administration"),
collapse = NULL, translate_ab = FALSE, thorough_search = NULL,
info = interactive(), ...)
```
## Arguments
- text:
Text to analyse.
- type:
Type of property to search for, either `"drug"`, `"dose"` or
`"administration"`, see *Examples*.
- collapse:
A [character](https://rdrr.io/r/base/character.html) to pass on to
`paste(, collapse = ...)` to only return one
[character](https://rdrr.io/r/base/character.html) per element of
`text`, see *Examples*.
- translate_ab:
If `type = "drug"`: a column name of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set to translate the antibiotic abbreviations to, using
[`ab_property()`](https://amr-for-r.org/reference/ab_property.md). The
default is `FALSE`. Using `TRUE` is equal to using "name".
- thorough_search:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the input must be extensively searched for misspelling and other
faulty input values. Setting this to `TRUE` will take considerably
more time than when using `FALSE`. At default, it will turn `TRUE`
when all input elements contain a maximum of three words.
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
progress bar should be printed - the default is `TRUE` only in
interactive mode.
- ...:
Arguments passed on to
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md).
## Value
A [list](https://rdrr.io/r/base/list.html), or a
[character](https://rdrr.io/r/base/character.html) if `collapse` is not
`NULL`
## Details
This function is also internally used by
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md), although it then
only searches for the first drug name and will throw a note if more drug
names could have been returned. Note: the
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md) function may use
very long regular expression to match brand names of antimicrobial
drugs. This may fail on some systems.
### Argument `type`
At default, the function will search for antimicrobial drug names. All
text elements will be searched for official names, ATC codes and brand
names. As it uses [`as.ab()`](https://amr-for-r.org/reference/as.ab.md)
internally, it will correct for misspelling.
With `type = "dose"` (or similar, like "dosing", "doses"), all text
elements will be searched for
[numeric](https://rdrr.io/r/base/numeric.html) values that are higher
than 100 and do not resemble years. The output will be
[numeric](https://rdrr.io/r/base/numeric.html). It supports any unit (g,
mg, IE, etc.) and multiple values in one clinical text, see *Examples*.
With `type = "administration"` (or abbreviations, like "admin", "adm"),
all text elements will be searched for a form of drug administration. It
supports the following forms (including common abbreviations): buccal,
implant, inhalation, instillation, intravenous, nasal, oral, parenteral,
rectal, sublingual, transdermal and vaginal. Abbreviations for oral
(such as 'po', 'per os') will become "oral", all values for intravenous
(such as 'iv', 'intraven') will become "iv". It supports multiple values
in one clinical text, see *Examples*.
### Argument `collapse`
Without using `collapse`, this function will return a
[list](https://rdrr.io/r/base/list.html). This can be convenient to use
e.g. inside a
[`mutate()`](https://dplyr.tidyverse.org/reference/mutate.html)):
`df %>% mutate(abx = ab_from_text(clinical_text))`
The returned AB codes can be transformed to official names, groups, etc.
with all [`ab_*`](https://amr-for-r.org/reference/ab_property.md)
functions such as
[`ab_name()`](https://amr-for-r.org/reference/ab_property.md) and
[`ab_group()`](https://amr-for-r.org/reference/ab_property.md), or by
using the `translate_ab` argument.
With using `collapse`, this function will return a
[character](https://rdrr.io/r/base/character.html):
`df %>% mutate(abx = ab_from_text(clinical_text, collapse = "|"))`
## Examples
``` r
# mind the bad spelling of amoxicillin in this line,
# straight from a true health care record:
ab_from_text("28/03/2020 regular amoxicilliin 500mg po tid")
#> [[1]]
#> Class 'ab'
#> [1] AMX
#>
ab_from_text("500 mg amoxi po and 400mg cipro iv")
#> [[1]]
#> Class 'ab'
#> [1] AMX CIP
#>
ab_from_text("500 mg amoxi po and 400mg cipro iv", type = "dose")
#> [[1]]
#> [1] 500 400
#>
ab_from_text("500 mg amoxi po and 400mg cipro iv", type = "admin")
#> [[1]]
#> [1] "oral" "iv"
#>
ab_from_text("500 mg amoxi po and 400mg cipro iv", collapse = ", ")
#> [1] "AMX, CIP"
# \donttest{
# if you want to know which antibiotic groups were administered, do e.g.:
abx <- ab_from_text("500 mg amoxi po and 400mg cipro iv")
ab_group(abx[[1]])
#> [1] "Beta-lactams/penicillins" "Fluoroquinolones"
if (require("dplyr")) {
tibble(clinical_text = c(
"given 400mg cipro and 500 mg amox",
"started on doxy iv today"
)) %>%
mutate(
abx_codes = ab_from_text(clinical_text),
abx_doses = ab_from_text(clinical_text, type = "doses"),
abx_admin = ab_from_text(clinical_text, type = "admin"),
abx_coll = ab_from_text(clinical_text, collapse = "|"),
abx_coll_names = ab_from_text(clinical_text,
collapse = "|",
translate_ab = "name"
),
abx_coll_doses = ab_from_text(clinical_text,
type = "doses",
collapse = "|"
),
abx_coll_admin = ab_from_text(clinical_text,
type = "admin",
collapse = "|"
)
)
}
#> Loading required package: dplyr
#>
#> Attaching package: dplyr
#> The following objects are masked from package:stats:
#>
#> filter, lag
#> The following objects are masked from package:base:
#>
#> intersect, setdiff, setequal, union
#> # A tibble: 2 × 8
#> clinical_text abx_codes abx_doses abx_admin abx_coll abx_coll_names
#> <chr> <list> <list> <list> <chr> <chr>
#> 1 given 400mg cipro and 5… <ab [2]> <dbl [2]> <chr [1]> CIP|AMX Ciprofloxacin…
#> 2 started on doxy iv today <ab [1]> <dbl [1]> <chr [1]> DOX Doxycycline
#> # 2 more variables: abx_coll_doses <chr>, abx_coll_admin <chr>
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

436
reference/ab_property.md Normal file
View File

@@ -0,0 +1,436 @@
# Get Properties of an Antibiotic
Use these functions to return a specific property of an antibiotic from
the [antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set. All input values will be evaluated internally with
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md).
## Usage
``` r
ab_name(x, language = get_AMR_locale(), tolower = FALSE, ...)
ab_cid(x, ...)
ab_synonyms(x, ...)
ab_tradenames(x, ...)
ab_group(x, language = get_AMR_locale(), ...)
ab_atc(x, only_first = FALSE, ...)
ab_atc_group1(x, language = get_AMR_locale(), ...)
ab_atc_group2(x, language = get_AMR_locale(), ...)
ab_loinc(x, ...)
ab_ddd(x, administration = "oral", ...)
ab_ddd_units(x, administration = "oral", ...)
ab_info(x, language = get_AMR_locale(), ...)
ab_url(x, open = FALSE, ...)
ab_property(x, property = "name", language = get_AMR_locale(), ...)
set_ab_names(data, ..., property = "name", language = get_AMR_locale(),
snake_case = NULL)
```
## Arguments
- x:
Any (vector of) text that can be coerced to a valid antibiotic drug
code with [`as.ab()`](https://amr-for-r.org/reference/as.ab.md).
- language:
Language of the returned text - the default is the current system
language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md))
and can also be set with the package option
[`AMR_locale`](https://amr-for-r.org/reference/AMR-options.md). Use
`language = NULL` or `language = ""` to prevent translation.
- tolower:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the first [character](https://rdrr.io/r/base/character.html) of every
output should be transformed to a lower case
[character](https://rdrr.io/r/base/character.html). This will lead to
e.g. "polymyxin B" and not "polymyxin b".
- ...:
In case of `set_ab_names()` and `data` is a
[data.frame](https://rdrr.io/r/base/data.frame.html): columns to
select (supports tidy selection such as `column1:column4`), otherwise
other arguments passed on to
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md).
- only_first:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
only the first ATC code must be returned, with giving preference to
J0-codes (i.e., the antimicrobial drug group).
- administration:
Way of administration, either `"oral"` or `"iv"`.
- open:
Browse the URL using
[`utils::browseURL()`](https://rdrr.io/r/utils/browseURL.html).
- property:
One of the column names of one of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set: `vector_or(colnames(antimicrobials), sort = FALSE)`.
- data:
A [data.frame](https://rdrr.io/r/base/data.frame.html) of which the
columns need to be renamed, or a
[character](https://rdrr.io/r/base/character.html) vector of column
names.
- snake_case:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the names should be in so-called [snake
case](https://en.wikipedia.org/wiki/Snake_case): in lower case and all
spaces/slashes replaced with an underscore (`_`).
## Value
- An [integer](https://rdrr.io/r/base/integer.html) in case of
`ab_cid()`
- A named [list](https://rdrr.io/r/base/list.html) in case of
`ab_info()` and multiple `ab_atc()`/`ab_synonyms()`/`ab_tradenames()`
- A [double](https://rdrr.io/r/base/double.html) in case of `ab_ddd()`
- A [data.frame](https://rdrr.io/r/base/data.frame.html) in case of
`set_ab_names()`
- A [character](https://rdrr.io/r/base/character.html) in all other
cases
## Details
All output [will be
translated](https://amr-for-r.org/reference/translate.md) where
possible.
The function `ab_url()` will return the direct URL to the official WHO
website. A warning will be returned if the required ATC code is not
available.
The function `set_ab_names()` is a special column renaming function for
[data.frame](https://rdrr.io/r/base/data.frame.html)s. It renames
columns names that resemble antimicrobial drugs. It always makes sure
that the new column names are unique. If `property = "atc"` is set,
preference is given to ATC codes from the J-group.
## Source
World Health Organization (WHO) Collaborating Centre for Drug Statistics
Methodology: <https://atcddd.fhi.no/atc_ddd_index/>
European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER:
<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
## Examples
``` r
# all properties:
ab_name("AMX")
#> [1] "Amoxicillin"
ab_atc("AMX")
#> [1] "J01CA04" "QG51AA03" "QJ01CA04"
ab_cid("AMX")
#> [1] 33613
ab_synonyms("AMX")
#> [1] "acuotricina" "alfamox" "alfida" "amitron"
#> [5] "amoclen" "amodex" "amoksicillin" "amolin"
#> [9] "amopen" "amopenixin" "amophar" "amoran"
#> [13] "amoxi" "amoxicaps" "amoxicilina" "amoxicilline"
#> [17] "amoxicillinum" "amoxidal" "amoxiden" "amoxil"
#> [21] "amoxillat" "amoxina" "amoxine" "amoxipen"
#> [25] "amoxivet" "amoxycillin" "amoxycillinsalt" "amoxyke"
#> [29] "anemolin" "aspenil" "atoksilin" "bristamox"
#> [33] "cemoxin" "ciblor" "clamoxyl" "damoxy"
#> [37] "danoxillin" "delacillin" "demoksil" "dispermox"
#> [41] "efpenix" "eupen" "flemoxin" "flemoxine"
#> [45] "galenamox" "gramidil" "hiconcil" "himinomax"
#> [49] "histocillin" "ibiamox" "imacillin" "izoltil"
#> [53] "kentrocyllin" "lamoxy" "largopen" "larotid"
#> [57] "matasedrin" "metifarma" "moksilin" "moxacin"
#> [61] "moxal" "moxaline" "moxatag" "neotetranase"
#> [65] "novabritine" "ospamox" "pacetocin" "pamocil"
#> [69] "paradroxil" "pasetocin" "penamox" "piramox"
#> [73] "promoxil" "quimiopen" "remoxil" "riotapen"
#> [77] "robamox" "sawacillin" "siganopen" "simplamox"
#> [81] "sintopen" "sumox" "topramoxin" "trifamox"
#> [85] "trimox" "unicillin" "utimox" "velamox"
#> [89] "vetramox" "wymox" "zamocillin" "zamocilline"
#> [93] "zimox"
ab_tradenames("AMX")
#> [1] "acuotricina" "alfamox" "alfida" "amitron"
#> [5] "amoclen" "amodex" "amoksicillin" "amolin"
#> [9] "amopen" "amopenixin" "amophar" "amoran"
#> [13] "amoxi" "amoxicaps" "amoxicilina" "amoxicilline"
#> [17] "amoxicillinum" "amoxidal" "amoxiden" "amoxil"
#> [21] "amoxillat" "amoxina" "amoxine" "amoxipen"
#> [25] "amoxivet" "amoxycillin" "amoxycillinsalt" "amoxyke"
#> [29] "anemolin" "aspenil" "atoksilin" "bristamox"
#> [33] "cemoxin" "ciblor" "clamoxyl" "damoxy"
#> [37] "danoxillin" "delacillin" "demoksil" "dispermox"
#> [41] "efpenix" "eupen" "flemoxin" "flemoxine"
#> [45] "galenamox" "gramidil" "hiconcil" "himinomax"
#> [49] "histocillin" "ibiamox" "imacillin" "izoltil"
#> [53] "kentrocyllin" "lamoxy" "largopen" "larotid"
#> [57] "matasedrin" "metifarma" "moksilin" "moxacin"
#> [61] "moxal" "moxaline" "moxatag" "neotetranase"
#> [65] "novabritine" "ospamox" "pacetocin" "pamocil"
#> [69] "paradroxil" "pasetocin" "penamox" "piramox"
#> [73] "promoxil" "quimiopen" "remoxil" "riotapen"
#> [77] "robamox" "sawacillin" "siganopen" "simplamox"
#> [81] "sintopen" "sumox" "topramoxin" "trifamox"
#> [85] "trimox" "unicillin" "utimox" "velamox"
#> [89] "vetramox" "wymox" "zamocillin" "zamocilline"
#> [93] "zimox"
ab_group("AMX")
#> [1] "Beta-lactams/penicillins"
ab_atc_group1("AMX")
#> [1] "Beta-lactam antibacterials, penicillins"
ab_atc_group2("AMX")
#> [1] "Penicillins with extended spectrum"
ab_url("AMX")
#> Amoxicillin
#> "https://atcddd.fhi.no/atc_ddd_index//?code=J01CA04&showdescription=no"
# smart lowercase transformation
ab_name(x = c("AMC", "PLB"))
#> [1] "Amoxicillin/clavulanic acid" "Polymyxin B"
ab_name(x = c("AMC", "PLB"), tolower = TRUE)
#> [1] "amoxicillin/clavulanic acid" "polymyxin B"
# defined daily doses (DDD)
ab_ddd("AMX", "oral")
#> [1] 1.5
ab_ddd_units("AMX", "oral")
#> [1] "g"
ab_ddd("AMX", "iv")
#> [1] 3
ab_ddd_units("AMX", "iv")
#> [1] "g"
ab_info("AMX") # all properties as a list
#> $ab
#> [1] "AMX"
#>
#> $cid
#> [1] 33613
#>
#> $name
#> [1] "Amoxicillin"
#>
#> $group
#> [1] "Beta-lactams/penicillins"
#>
#> $atc
#> [1] "J01CA04" "QG51AA03" "QJ01CA04"
#>
#> $atc_group1
#> [1] "Beta-lactam antibacterials, penicillins"
#>
#> $atc_group2
#> [1] "Penicillins with extended spectrum"
#>
#> $tradenames
#> [1] "acuotricina" "alfamox" "alfida" "amitron"
#> [5] "amoclen" "amodex" "amoksicillin" "amolin"
#> [9] "amopen" "amopenixin" "amophar" "amoran"
#> [13] "amoxi" "amoxicaps" "amoxicilina" "amoxicilline"
#> [17] "amoxicillinum" "amoxidal" "amoxiden" "amoxil"
#> [21] "amoxillat" "amoxina" "amoxine" "amoxipen"
#> [25] "amoxivet" "amoxycillin" "amoxycillinsalt" "amoxyke"
#> [29] "anemolin" "aspenil" "atoksilin" "bristamox"
#> [33] "cemoxin" "ciblor" "clamoxyl" "damoxy"
#> [37] "danoxillin" "delacillin" "demoksil" "dispermox"
#> [41] "efpenix" "eupen" "flemoxin" "flemoxine"
#> [45] "galenamox" "gramidil" "hiconcil" "himinomax"
#> [49] "histocillin" "ibiamox" "imacillin" "izoltil"
#> [53] "kentrocyllin" "lamoxy" "largopen" "larotid"
#> [57] "matasedrin" "metifarma" "moksilin" "moxacin"
#> [61] "moxal" "moxaline" "moxatag" "neotetranase"
#> [65] "novabritine" "ospamox" "pacetocin" "pamocil"
#> [69] "paradroxil" "pasetocin" "penamox" "piramox"
#> [73] "promoxil" "quimiopen" "remoxil" "riotapen"
#> [77] "robamox" "sawacillin" "siganopen" "simplamox"
#> [81] "sintopen" "sumox" "topramoxin" "trifamox"
#> [85] "trimox" "unicillin" "utimox" "velamox"
#> [89] "vetramox" "wymox" "zamocillin" "zamocilline"
#> [93] "zimox"
#>
#> $loinc
#> [1] "101498-4" "15-8" "16-6" "16365-9" "17-4" "18-2"
#> [7] "18861-5" "18862-3" "19-0" "20-8" "21-6" "22-4"
#> [13] "25274-2" "25310-4" "3344-9" "55614-2" "55615-9" "55616-7"
#> [19] "6976-5" "6977-3" "80133-2"
#>
#> $ddd
#> $ddd$oral
#> $ddd$oral$amount
#> [1] 1.5
#>
#> $ddd$oral$units
#> [1] "g"
#>
#>
#> $ddd$iv
#> $ddd$iv$amount
#> [1] 3
#>
#> $ddd$iv$units
#> [1] "g"
#>
#>
#>
# all ab_* functions use as.ab() internally, so you can go from 'any' to 'any':
ab_atc("AMP")
#> [1] "J01CA01" "QJ01CA01" "QJ51CA01" "QS01AA19" "S01AA19"
ab_group("J01CA01")
#> [1] "Beta-lactams/penicillins"
ab_loinc("ampicillin")
#> [1] "101477-8" "101478-6" "18864-9" "18865-6" "20374-5" "21066-6"
#> [7] "23618-2" "27-3" "28-1" "29-9" "30-7" "31-5"
#> [13] "32-3" "33-1" "3355-5" "33562-0" "33919-2" "34-9"
#> [19] "43883-8" "43884-6" "6979-9" "6980-7" "87604-5"
ab_name("21066-6")
#> [1] "Ampicillin"
ab_name(6249)
#> [1] "Ampicillin"
ab_name("J01CA01")
#> [1] "Ampicillin"
# spelling from different languages and dyslexia are no problem
ab_atc("ceftriaxon")
#> [1] "J01DD04" "QJ01DD04"
ab_atc("cephtriaxone")
#> [1] "J01DD04" "QJ01DD04"
ab_atc("cephthriaxone")
#> [1] "J01DD04" "QJ01DD04"
ab_atc("seephthriaaksone")
#> [1] "J01DD04" "QJ01DD04"
# use set_ab_names() for renaming columns
colnames(example_isolates)
#> [1] "date" "patient" "age" "gender" "ward" "mo" "PEN"
#> [8] "OXA" "FLC" "AMX" "AMC" "AMP" "TZP" "CZO"
#> [15] "FEP" "CXM" "FOX" "CTX" "CAZ" "CRO" "GEN"
#> [22] "TOB" "AMK" "KAN" "TMP" "SXT" "NIT" "FOS"
#> [29] "LNZ" "CIP" "MFX" "VAN" "TEC" "TCY" "TGC"
#> [36] "DOX" "ERY" "CLI" "AZM" "IPM" "MEM" "MTR"
#> [43] "CHL" "COL" "MUP" "RIF"
colnames(set_ab_names(example_isolates))
#> [1] "date" "patient"
#> [3] "age" "gender"
#> [5] "ward" "mo"
#> [7] "benzylpenicillin" "oxacillin"
#> [9] "flucloxacillin" "amoxicillin"
#> [11] "amoxicillin_clavulanic_acid" "ampicillin"
#> [13] "piperacillin_tazobactam" "cefazolin"
#> [15] "cefepime" "cefuroxime"
#> [17] "cefoxitin" "cefotaxime"
#> [19] "ceftazidime" "ceftriaxone"
#> [21] "gentamicin" "tobramycin"
#> [23] "amikacin" "kanamycin"
#> [25] "trimethoprim" "trimethoprim_sulfamethoxazole"
#> [27] "nitrofurantoin" "fosfomycin"
#> [29] "linezolid" "ciprofloxacin"
#> [31] "moxifloxacin" "vancomycin"
#> [33] "teicoplanin" "tetracycline"
#> [35] "tigecycline" "doxycycline"
#> [37] "erythromycin" "clindamycin"
#> [39] "azithromycin" "imipenem"
#> [41] "meropenem" "metronidazole"
#> [43] "chloramphenicol" "colistin"
#> [45] "mupirocin" "rifampicin"
colnames(set_ab_names(example_isolates, NIT:VAN))
#> [1] "date" "patient" "age" "gender"
#> [5] "ward" "mo" "PEN" "OXA"
#> [9] "FLC" "AMX" "AMC" "AMP"
#> [13] "TZP" "CZO" "FEP" "CXM"
#> [17] "FOX" "CTX" "CAZ" "CRO"
#> [21] "GEN" "TOB" "AMK" "KAN"
#> [25] "TMP" "SXT" "nitrofurantoin" "fosfomycin"
#> [29] "linezolid" "ciprofloxacin" "moxifloxacin" "vancomycin"
#> [33] "TEC" "TCY" "TGC" "DOX"
#> [37] "ERY" "CLI" "AZM" "IPM"
#> [41] "MEM" "MTR" "CHL" "COL"
#> [45] "MUP" "RIF"
# \donttest{
if (require("dplyr")) {
example_isolates %>%
set_ab_names()
# this does the same:
example_isolates %>%
rename_with(set_ab_names)
# set_ab_names() works with any AB property:
example_isolates %>%
set_ab_names(property = "atc")
example_isolates %>%
set_ab_names(where(is.sir)) %>%
colnames()
example_isolates %>%
set_ab_names(NIT:VAN) %>%
colnames()
}
#> [1] "date" "patient" "age" "gender"
#> [5] "ward" "mo" "PEN" "OXA"
#> [9] "FLC" "AMX" "AMC" "AMP"
#> [13] "TZP" "CZO" "FEP" "CXM"
#> [17] "FOX" "CTX" "CAZ" "CRO"
#> [21] "GEN" "TOB" "AMK" "KAN"
#> [25] "TMP" "SXT" "nitrofurantoin" "fosfomycin"
#> [29] "linezolid" "ciprofloxacin" "moxifloxacin" "vancomycin"
#> [33] "TEC" "TCY" "TGC" "DOX"
#> [37] "ERY" "CLI" "AZM" "IPM"
#> [41] "MEM" "MTR" "CHL" "COL"
#> [45] "MUP" "RIF"
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,193 @@
# Add Custom Antimicrobials
With `add_custom_antimicrobials()` you can add your own custom
antimicrobial drug names and codes.
## Usage
``` r
add_custom_antimicrobials(x)
clear_custom_antimicrobials()
```
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) resembling the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set, at least containing columns "ab" and "name".
## Details
**Important:** Due to how R works, the `add_custom_antimicrobials()`
function has to be run in every R session - added antimicrobials are not
stored between sessions and are thus lost when R is exited.
There are two ways to circumvent this and automate the process of adding
antimicrobials:
**Method 1:** Using the package option
[`AMR_custom_ab`](https://amr-for-r.org/reference/AMR-options.md), which
is the preferred method. To use this method:
1. Create a data set in the structure of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set (containing at the very least columns "ab" and "name") and
save it with [`saveRDS()`](https://rdrr.io/r/base/readRDS.html) to a
location of choice, e.g. `"~/my_custom_ab.rds"`, or any remote
location.
2. Set the file location to the package option
[`AMR_custom_ab`](https://amr-for-r.org/reference/AMR-options.md):
`options(AMR_custom_ab = "~/my_custom_ab.rds")`. This can even be a
remote file location, such as an https URL. Since options are not
saved between R sessions, it is best to save this option to the
`.Rprofile` file so that it will be loaded on start-up of R. To do
this, open the `.Rprofile` file using e.g.
`utils::file.edit("~/.Rprofile")`, add this text and save the file:
# Add custom antimicrobial codes:
options(AMR_custom_ab = "~/my_custom_ab.rds")
Upon package load, this file will be loaded and run through the
`add_custom_antimicrobials()` function.
**Method 2:** Loading the antimicrobial additions directly from your
`.Rprofile` file. Note that the definitions will be stored in a
user-specific R file, which is a suboptimal workflow. To use this
method:
1. Edit the `.Rprofile` file using e.g.
`utils::file.edit("~/.Rprofile")`.
2. Add a text like below and save the file:
# Add custom antibiotic drug codes:
AMR::add_custom_antimicrobials(
data.frame(ab = "TESTAB",
name = "Test Antibiotic",
group = "Test Group")
)
Use `clear_custom_antimicrobials()` to clear the previously added
antimicrobials.
## See also
[`add_custom_microorganisms()`](https://amr-for-r.org/reference/add_custom_microorganisms.md)
to add custom microorganisms.
## Examples
``` r
# \donttest{
# returns a wildly guessed result:
as.ab("testab")
#> Class 'ab'
#> [1] THA
# now add a custom entry - it will be considered by as.ab() and
# all ab_*() functions
add_custom_antimicrobials(
data.frame(
ab = "TESTAB",
name = "Test Antibiotic",
# you can add any property present in the
# 'antimicrobials' data set, such as 'group':
group = "Test Group"
)
)
#> Added one record to the internal `antimicrobials` data set.
# "testab" is now a new antibiotic:
as.ab("testab")
#> Class 'ab'
#> [1] TESTAB
ab_name("testab")
#> [1] "Test Antibiotic"
ab_group("testab")
#> [1] "Test Group"
ab_info("testab")
#> $ab
#> [1] "TESTAB"
#>
#> $cid
#> [1] NA
#>
#> $name
#> [1] "Test Antibiotic"
#>
#> $group
#> [1] "Test Group"
#>
#> $atc
#> [1] NA
#>
#> $atc_group1
#> [1] NA
#>
#> $atc_group2
#> [1] NA
#>
#> $tradenames
#> [1] NA
#>
#> $loinc
#> [1] NA
#>
#> $ddd
#> $ddd$oral
#> $ddd$oral$amount
#> [1] NA
#>
#> $ddd$oral$units
#> [1] NA
#>
#>
#> $ddd$iv
#> $ddd$iv$amount
#> [1] NA
#>
#> $ddd$iv$units
#> [1] NA
#>
#>
#>
# Add Co-fluampicil, which is one of the many J01CR50 codes, see
# https://atcddd.fhi.no/ddd/list_of_ddds_combined_products/
add_custom_antimicrobials(
data.frame(
ab = "COFLU",
name = "Co-fluampicil",
atc = "J01CR50",
group = "Beta-lactams/penicillins"
)
)
#> Added one record to the internal `antimicrobials` data set.
ab_atc("Co-fluampicil")
#> [1] "J01CR50"
ab_name("J01CR50")
#> [1] "Co-fluampicil"
# even antimicrobial selectors work
# see ?amr_selector
x <- data.frame(
random_column = "some value",
coflu = as.sir("S"),
ampicillin = as.sir("R")
)
x
#> random_column coflu ampicillin
#> 1 some value S R
x[, betalactams()]
#> For `betalactams()` using columns 'coflu' (co-fluampicil) and
#> 'ampicillin'
#> coflu ampicillin
#> 1 S R
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,225 @@
# Add Custom Microorganisms
With `add_custom_microorganisms()` you can add your own custom
microorganisms, such the non-taxonomic outcome of laboratory analysis.
## Usage
``` r
add_custom_microorganisms(x)
clear_custom_microorganisms()
```
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) resembling the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set, at least containing column "genus" (case-insensitive).
## Details
This function will fill in missing taxonomy for you, if specific
taxonomic columns are missing, see *Examples*.
**Important:** Due to how R works, the `add_custom_microorganisms()`
function has to be run in every R session - added microorganisms are not
stored between sessions and are thus lost when R is exited.
There are two ways to circumvent this and automate the process of adding
microorganisms:
**Method 1:** Using the package option
[`AMR_custom_mo`](https://amr-for-r.org/reference/AMR-options.md), which
is the preferred method. To use this method:
1. Create a data set in the structure of the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set (containing at the very least column "genus") and save it
with [`saveRDS()`](https://rdrr.io/r/base/readRDS.html) to a
location of choice, e.g. `"~/my_custom_mo.rds"`, or any remote
location.
2. Set the file location to the package option
[`AMR_custom_mo`](https://amr-for-r.org/reference/AMR-options.md):
`options(AMR_custom_mo = "~/my_custom_mo.rds")`. This can even be a
remote file location, such as an https URL. Since options are not
saved between R sessions, it is best to save this option to the
`.Rprofile` file so that it will be loaded on start-up of R. To do
this, open the `.Rprofile` file using e.g.
`utils::file.edit("~/.Rprofile")`, add this text and save the file:
# Add custom microorganism codes:
options(AMR_custom_mo = "~/my_custom_mo.rds")
Upon package load, this file will be loaded and run through the
`add_custom_microorganisms()` function.
**Method 2:** Loading the microorganism directly from your `.Rprofile`
file. Note that the definitions will be stored in a user-specific R
file, which is a suboptimal workflow. To use this method:
1. Edit the `.Rprofile` file using e.g.
`utils::file.edit("~/.Rprofile")`.
2. Add a text like below and save the file:
# Add custom antibiotic drug codes:
AMR::add_custom_microorganisms(
data.frame(genus = "Enterobacter",
species = "asburiae/cloacae")
)
Use `clear_custom_microorganisms()` to clear the previously added
microorganisms.
## See also
[`add_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md)
to add custom antimicrobials.
## Examples
``` r
# \donttest{
# a combination of species is not formal taxonomy, so
# this will result in "Enterobacter cloacae cloacae",
# since it resembles the input best:
mo_name("Enterobacter asburiae/cloacae")
#> [1] "Enterobacter asburiae"
# now add a custom entry - it will be considered by as.mo() and
# all mo_*() functions
add_custom_microorganisms(
data.frame(
genus = "Enterobacter",
species = "asburiae/cloacae"
)
)
#> Added Enterobacter asburiae/cloacae to the internal `microorganisms` data
#> set.
# E. asburiae/cloacae is now a new microorganism:
mo_name("Enterobacter asburiae/cloacae")
#> [1] "Enterobacter asburiae/cloacae"
# its code:
as.mo("Enterobacter asburiae/cloacae")
#> Class 'mo'
#> [1] CUSTOM1_ENTRB_ASB/
# all internal algorithms will work as well:
mo_name("Ent asburia cloacae")
#> [1] "Enterobacter asburiae/cloacae"
# and even the taxonomy was added based on the genus!
mo_family("E. asburiae/cloacae")
#> [1] "Enterobacteriaceae"
mo_gramstain("Enterobacter asburiae/cloacae")
#> [1] "Gram-negative"
mo_info("Enterobacter asburiae/cloacae")
#> $mo
#> [1] "CUSTOM1_ENTRB_ASB/"
#>
#> $rank
#> [1] "species"
#>
#> $kingdom
#> [1] "Bacteria"
#>
#> $phylum
#> [1] "Pseudomonadota"
#>
#> $class
#> [1] "Gammaproteobacteria"
#>
#> $order
#> [1] "Enterobacterales"
#>
#> $family
#> [1] "Enterobacteriaceae"
#>
#> $genus
#> [1] "Enterobacter"
#>
#> $species
#> [1] "asburiae/cloacae"
#>
#> $subspecies
#> [1] ""
#>
#> $status
#> [1] "accepted"
#>
#> $synonyms
#> NULL
#>
#> $gramstain
#> [1] "Gram-negative"
#>
#> $oxygen_tolerance
#> [1] NA
#>
#> $url
#> [1] ""
#>
#> $ref
#> [1] "Self-added, 2025"
#>
#> $snomed
#> [1] NA
#>
#> $lpsn
#> [1] NA
#>
#> $mycobank
#> [1] NA
#>
#> $gbif
#> [1] NA
#>
#> $group_members
#> character(0)
#>
# the function tries to be forgiving:
add_custom_microorganisms(
data.frame(
GENUS = "BACTEROIDES / PARABACTEROIDES SLASHLINE",
SPECIES = "SPECIES"
)
)
#> Added Bacteroides/Parabacteroides to the internal `microorganisms` data
#> set.
mo_name("BACTEROIDES / PARABACTEROIDES")
#> [1] "Bacteroides/Parabacteroides"
mo_rank("BACTEROIDES / PARABACTEROIDES")
#> [1] "genus"
# taxonomy still works, even though a slashline genus was given as input:
mo_family("Bacteroides/Parabacteroides")
#> [1] "Bacteroidaceae"
# for groups and complexes, set them as species or subspecies:
add_custom_microorganisms(
data.frame(
genus = "Citrobacter",
species = c("freundii", "braakii complex"),
subspecies = c("complex", "")
)
)
#> Added Citrobacter braakii complex and Citrobacter freundii complex to the
#> internal `microorganisms` data set.
mo_name(c("C. freundii complex", "C. braakii complex"))
#> [1] "Citrobacter freundii complex" "Citrobacter braakii complex"
mo_species(c("C. freundii complex", "C. braakii complex"))
#> [1] "freundii complex" "braakii complex"
mo_gramstain(c("C. freundii complex", "C. braakii complex"))
#> [1] "Gram-negative" "Gram-negative"
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -112,16 +112,16 @@
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="va">df</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> birth_date age age_exact age_at_y2k</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 1 1980-02-27 45 45.62466 19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 2 1953-07-26 72 72.21644 46</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 3 1949-09-02 76 76.11233 50</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 4 1986-08-03 39 39.19452 13</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 5 1932-11-19 92 92.89863 67</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 6 1949-03-30 76 76.53973 50</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 7 1996-06-23 29 29.30685 3</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 8 1963-09-16 62 62.07397 36</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 9 1952-05-16 73 73.41096 47</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 10 1952-11-14 72 72.91233 47</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 1 1980-02-27 45 45.73973 19</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 2 1953-07-26 72 72.33151 46</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 3 1949-09-02 76 76.22740 50</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 4 1986-08-03 39 39.30959 13</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 5 1932-11-19 93 93.01370 67</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 6 1949-03-30 76 76.65479 50</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 7 1996-06-23 29 29.42192 3</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 8 1963-09-16 62 62.18904 36</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 9 1952-05-16 73 73.52603 47</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> 10 1952-11-14 73 73.02740 47</span>
</code></pre></div>
</div>
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>

94
reference/age.md Normal file
View File

@@ -0,0 +1,94 @@
# Age in Years of Individuals
Calculates age in years based on a reference date, which is the system
date at default.
## Usage
``` r
age(x, reference = Sys.Date(), exact = FALSE, na.rm = FALSE, ...)
```
## Arguments
- x:
Date(s), [character](https://rdrr.io/r/base/character.html) (vectors)
will be coerced with
[`as.POSIXlt()`](https://rdrr.io/r/base/as.POSIXlt.html).
- reference:
Reference date(s) (default is today),
[character](https://rdrr.io/r/base/character.html) (vectors) will be
coerced with [`as.POSIXlt()`](https://rdrr.io/r/base/as.POSIXlt.html).
- exact:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
age calculation should be exact, i.e. with decimals. It divides the
number of days of
[year-to-date](https://en.wikipedia.org/wiki/Year-to-date) (YTD) of
`x` by the number of days in the year of `reference` (either 365 or
366).
- na.rm:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
missing values should be removed.
- ...:
Arguments passed on to
[`as.POSIXlt()`](https://rdrr.io/r/base/as.POSIXlt.html), such as
`origin`.
## Value
An [integer](https://rdrr.io/r/base/integer.html) (no decimals) if
`exact = FALSE`, a [double](https://rdrr.io/r/base/double.html) (with
decimals) otherwise
## Details
Ages below 0 will be returned as `NA` with a warning. Ages above 120
will only give a warning.
This function vectorises over both `x` and `reference`, meaning that
either can have a length of 1 while the other argument has a larger
length.
## See also
To split ages into groups, use the
[`age_groups()`](https://amr-for-r.org/reference/age_groups.md)
function.
## Examples
``` r
# 10 random pre-Y2K birth dates
df <- data.frame(birth_date = as.Date("2000-01-01") - runif(10) * 25000)
# add ages
df$age <- age(df$birth_date)
# add exact ages
df$age_exact <- age(df$birth_date, exact = TRUE)
# add age at millenium switch
df$age_at_y2k <- age(df$birth_date, "2000-01-01")
df
#> birth_date age age_exact age_at_y2k
#> 1 1980-02-27 45 45.73973 19
#> 2 1953-07-26 72 72.33151 46
#> 3 1949-09-02 76 76.22740 50
#> 4 1986-08-03 39 39.30959 13
#> 5 1932-11-19 93 93.01370 67
#> 6 1949-03-30 76 76.65479 50
#> 7 1996-06-23 29 29.42192 3
#> 8 1963-09-16 62 62.18904 36
#> 9 1952-05-16 73 73.52603 47
#> 10 1952-11-14 73 73.02740 47
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

129
reference/age_groups.md Normal file
View File

@@ -0,0 +1,129 @@
# Split Ages into Age Groups
Split ages into age groups defined by the `split` argument. This allows
for easier demographic (antimicrobial resistance) analysis. The function
returns an ordered [factor](https://rdrr.io/r/base/factor.html).
## Usage
``` r
age_groups(x, split_at = c(0, 12, 25, 55, 75), names = NULL,
na.rm = FALSE)
```
## Arguments
- x:
Age, e.g. calculated with
[`age()`](https://amr-for-r.org/reference/age.md).
- split_at:
Values to split `x` at - the default is age groups 0-11, 12-24, 25-54,
55-74 and 75+. See *Details*.
- names:
Optional names to be given to the various age groups.
- na.rm:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
missing values should be removed.
## Value
Ordered [factor](https://rdrr.io/r/base/factor.html)
## Details
To split ages, the input for the `split_at` argument can be:
- A [numeric](https://rdrr.io/r/base/numeric.html) vector. A value of
e.g. `c(10, 20)` will split `x` on 0-9, 10-19 and 20+. A value of only
`50` will split `x` on 0-49 and 50+. The default is to split on young
children (0-11), youth (12-24), young adults (25-54), middle-aged
adults (55-74) and elderly (75+).
- A character:
- `"children"` or `"kids"`, equivalent of: `c(0, 1, 2, 4, 6, 13, 18)`.
This will split on 0, 1, 2-3, 4-5, 6-12, 13-17 and 18+.
- `"elderly"` or `"seniors"`, equivalent of: `c(65, 75, 85)`. This
will split on 0-64, 65-74, 75-84, 85+.
- `"fives"`, equivalent of: `1:20 * 5`. This will split on 0-4, 5-9,
..., 95-99, 100+.
- `"tens"`, equivalent of: `1:10 * 10`. This will split on 0-9, 10-19,
..., 90-99, 100+.
## See also
To determine ages, based on one or more reference dates, use the
[`age()`](https://amr-for-r.org/reference/age.md) function.
## Examples
``` r
ages <- c(3, 8, 16, 54, 31, 76, 101, 43, 21)
# split into 0-49 and 50+
age_groups(ages, 50)
#> [1] 0-49 0-49 0-49 50+ 0-49 50+ 50+ 0-49 0-49
#> Levels: 0-49 < 50+
# split into 0-19, 20-49 and 50+
age_groups(ages, c(20, 50))
#> [1] 0-19 0-19 0-19 50+ 20-49 50+ 50+ 20-49 20-49
#> Levels: 0-19 < 20-49 < 50+
age_groups(ages, c(20, 50), names = c("Under 20 years", "20 to 50 years", "Over 50 years"))
#> [1] Under 20 years Under 20 years Under 20 years Over 50 years 20 to 50 years
#> [6] Over 50 years Over 50 years 20 to 50 years 20 to 50 years
#> Levels: Under 20 years < 20 to 50 years < Over 50 years
# split into groups of ten years
age_groups(ages, 1:10 * 10)
#> [1] 0-9 0-9 10-19 50-59 30-39 70-79 100+ 40-49 20-29
#> 11 Levels: 0-9 < 10-19 < 20-29 < 30-39 < 40-49 < 50-59 < 60-69 < ... < 100+
age_groups(ages, split_at = "tens")
#> [1] 0-9 0-9 10-19 50-59 30-39 70-79 100+ 40-49 20-29
#> 11 Levels: 0-9 < 10-19 < 20-29 < 30-39 < 40-49 < 50-59 < 60-69 < ... < 100+
# split into groups of five years
age_groups(ages, 1:20 * 5)
#> [1] 0-4 5-9 15-19 50-54 30-34 75-79 100+ 40-44 20-24
#> 21 Levels: 0-4 < 5-9 < 10-14 < 15-19 < 20-24 < 25-29 < 30-34 < ... < 100+
age_groups(ages, split_at = "fives")
#> [1] 0-4 5-9 15-19 50-54 30-34 75-79 100+ 40-44 20-24
#> 21 Levels: 0-4 < 5-9 < 10-14 < 15-19 < 20-24 < 25-29 < 30-34 < ... < 100+
# split specifically for children
age_groups(ages, c(1, 2, 4, 6, 13, 18))
#> [1] 2-3 6-12 13-17 18+ 18+ 18+ 18+ 18+ 18+
#> Levels: 0 < 1 < 2-3 < 4-5 < 6-12 < 13-17 < 18+
age_groups(ages, "children")
#> [1] 2-3 6-12 13-17 18+ 18+ 18+ 18+ 18+ 18+
#> Levels: 0 < 1 < 2-3 < 4-5 < 6-12 < 13-17 < 18+
# \donttest{
# resistance of ciprofloxacin per age group
if (require("dplyr") && require("ggplot2")) {
example_isolates %>%
filter_first_isolate() %>%
filter(mo == as.mo("Escherichia coli")) %>%
group_by(age_group = age_groups(age)) %>%
select(age_group, CIP) %>%
ggplot_sir(
x = "age_group",
minimum = 0,
x.title = "Age Group",
title = "Ciprofloxacin resistance per age group"
)
}
#> Loading required package: ggplot2
# }
```

View File

@@ -9,7 +9,7 @@ Adhering to previously described approaches (see Source) and especially the Baye
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

838
reference/antibiogram.md Normal file
View File

@@ -0,0 +1,838 @@
# Generate Traditional, Combination, Syndromic, or WISCA Antibiograms
Create detailed antibiograms with options for traditional, combination,
syndromic, and Bayesian WISCA methods.
Adhering to previously described approaches (see *Source*) and
especially the Bayesian WISCA model (Weighted-Incidence Syndromic
Combination Antibiogram) by Bielicki *et al.*, these functions provide
flexible output formats including plots and tables, ideal for
integration with R Markdown and Quarto reports.
## Usage
``` r
antibiogram(x, antimicrobials = where(is.sir), mo_transform = "shortname",
ab_transform = "name", syndromic_group = NULL, add_total_n = FALSE,
only_all_tested = FALSE, digits = ifelse(wisca, 1, 0),
formatting_type = getOption("AMR_antibiogram_formatting_type",
ifelse(wisca, 14, 18)), col_mo = NULL, language = get_AMR_locale(),
minimum = 30, combine_SI = TRUE, sep = " + ", sort_columns = TRUE,
wisca = FALSE, simulations = 1000, conf_interval = 0.95,
interval_side = "two-tailed", info = interactive(), ...)
wisca(x, antimicrobials = where(is.sir), ab_transform = "name",
syndromic_group = NULL, only_all_tested = FALSE, digits = 1,
formatting_type = getOption("AMR_antibiogram_formatting_type", 14),
col_mo = NULL, language = get_AMR_locale(), combine_SI = TRUE,
sep = " + ", sort_columns = TRUE, simulations = 1000,
conf_interval = 0.95, interval_side = "two-tailed",
info = interactive(), ...)
retrieve_wisca_parameters(wisca_model, ...)
# S3 method for class 'antibiogram'
plot(x, ...)
# S3 method for class 'antibiogram'
autoplot(object, ...)
# S3 method for class 'antibiogram'
knit_print(x, italicise = TRUE,
na = getOption("knitr.kable.NA", default = ""), ...)
```
## Source
- Bielicki JA *et al.* (2016). **Selecting appropriate empirical
antibiotic regimens for paediatric bloodstream infections: application
of a Bayesian decision model to local and pooled antimicrobial
resistance surveillance data** *Journal of Antimicrobial Chemotherapy*
71(3); [doi:10.1093/jac/dkv397](https://doi.org/10.1093/jac/dkv397)
- Bielicki JA *et al.* (2020). **Evaluation of the coverage of 3
antibiotic regimens for neonatal sepsis in the hospital setting across
Asian countries** *JAMA Netw Open.* 3(2):e1921124;
[doi:10.1001/jamanetworkopen.2019.21124](https://doi.org/10.1001/jamanetworkopen.2019.21124)
- Klinker KP *et al.* (2021). **Antimicrobial stewardship and
antibiograms: importance of moving beyond traditional antibiograms**.
*Therapeutic Advances in Infectious Disease*, May
5;8:20499361211011373;
[doi:10.1177/20499361211011373](https://doi.org/10.1177/20499361211011373)
- Barbieri E *et al.* (2021). **Development of a Weighted-Incidence
Syndromic Combination Antibiogram (WISCA) to guide the choice of the
empiric antibiotic treatment for urinary tract infection in paediatric
patients: a Bayesian approach** *Antimicrobial Resistance & Infection
Control* May 1;10(1):74;
[doi:10.1186/s13756-021-00939-2](https://doi.org/10.1186/s13756-021-00939-2)
- **M39 Analysis and Presentation of Cumulative Antimicrobial
Susceptibility Test Data, 5th Edition**, 2022, *Clinical and
Laboratory Standards Institute (CLSI)*.
<https://clsi.org/standards/products/microbiology/documents/m39/>.
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) containing at
least a column with microorganisms and columns with antimicrobial
results (class 'sir', see
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)).
- antimicrobials:
A vector specifying the antimicrobials containing SIR values to
include in the antibiogram (see *Examples*). Will be evaluated using
[`guess_ab_col()`](https://amr-for-r.org/reference/guess_ab_col.md).
This can be:
- Any antimicrobial name or code that could match (see
[`guess_ab_col()`](https://amr-for-r.org/reference/guess_ab_col.md))
to any column in `x`
- Any [antimicrobial
selector](https://amr-for-r.org/reference/antimicrobial_selectors.md),
such as
[`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
or
[`carbapenems()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
- A combination of the above, using
[`c()`](https://rdrr.io/r/base/c.html), e.g.:
- `c(aminoglycosides(), "AMP", "AMC")`
- `c(aminoglycosides(), carbapenems())`
- Column indices using numbers
- Combination therapy, indicated by using `"+"`, with or without
[antimicrobial
selectors](https://amr-for-r.org/reference/antimicrobial_selectors.md),
e.g.:
- `"cipro + genta"`
- `"TZP+TOB"`
- `c("TZP", "TZP+GEN", "TZP+TOB")`
- `carbapenems() + "GEN"`
- `carbapenems() + c("", "GEN")`
- `carbapenems() + c("", aminoglycosides())`
- mo_transform:
A character to transform microorganism input - must be `"name"`,
`"shortname"` (default), `"gramstain"`, or one of the column names of
the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set: "mo", "fullname", "status", "kingdom", "phylum", "class",
"order", "family", "genus", "species", "subspecies", "rank", "ref",
"oxygen_tolerance", "source", "lpsn", "lpsn_parent",
"lpsn_renamed_to", "mycobank", "mycobank_parent",
"mycobank_renamed_to", "gbif", "gbif_parent", "gbif_renamed_to",
"prevalence", or "snomed". Can also be `NULL` to not transform the
input or `NA` to consider all microorganisms 'unknown'.
- ab_transform:
A character to transform antimicrobial input - must be one of the
column names of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set (defaults to `"name"`): "ab", "cid", "name", "group", "atc",
"atc_group1", "atc_group2", "abbreviations", "synonyms", "oral_ddd",
"oral_units", "iv_ddd", "iv_units", or "loinc". Can also be `NULL` to
not transform the input.
- syndromic_group:
A column name of `x`, or values calculated to split rows of `x`, e.g.
by using [`ifelse()`](https://rdrr.io/r/base/ifelse.html) or
[`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html).
See *Examples*.
- add_total_n:
*(deprecated in favour of `formatting_type`)* A
[logical](https://rdrr.io/r/base/logical.html) to indicate whether
`n_tested` available numbers per pathogen should be added to the table
(default is `TRUE`). This will add the lowest and highest number of
available isolates per antimicrobial (e.g, if for *E. coli* 200
isolates are available for ciprofloxacin and 150 for amoxicillin, the
returned number will be "150-200"). This option is unavailable when
`wisca = TRUE`; in that case, use `retrieve_wisca_parameters()` to get
the parameters used for WISCA.
- only_all_tested:
(for combination antibiograms): a
[logical](https://rdrr.io/r/base/logical.html) to indicate that
isolates must be tested for all antimicrobials, see *Details*.
- digits:
Number of digits to use for rounding the antimicrobial coverage,
defaults to 1 for WISCA and 0 otherwise.
- formatting_type:
Numeric value (122 for WISCA, 1-12 for non-WISCA) indicating how the
'cells' of the antibiogram table should be formatted. See *Details* \>
*Formatting Type* for a list of options.
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- language:
Language to translate text, which defaults to the system language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md)).
- minimum:
The minimum allowed number of available (tested) isolates. Any isolate
count lower than `minimum` will return `NA` with a warning. The
default number of `30` isolates is advised by the Clinical and
Laboratory Standards Institute (CLSI) as best practice, see *Source*.
- combine_SI:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
all susceptibility should be determined by results of either S, SDD,
or I, instead of only S (default is `TRUE`).
- sep:
A separating character for antimicrobial columns in combination
antibiograms.
- sort_columns:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the antimicrobial columns must be sorted on name.
- wisca:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
Weighted-Incidence Syndromic Combination Antibiogram (WISCA) must be
generated (default is `FALSE`). This will use a Bayesian decision
model to estimate regimen coverage probabilities using [Monte Carlo
simulations](https://en.wikipedia.org/wiki/Monte_Carlo_method). Set
`simulations`, `conf_interval`, and `interval_side` to adjust.
- simulations:
(for WISCA) a numerical value to set the number of Monte Carlo
simulations.
- conf_interval:
A numerical value to set confidence interval (default is `0.95`).
- interval_side:
The side of the confidence interval, either `"two-tailed"` (default),
`"left"` or `"right"`.
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate info
should be printed - the default is `TRUE` only in interactive mode.
- ...:
When used in [R Markdown or
Quarto](https://rdrr.io/pkg/knitr/man/kable.html): arguments passed on
to [`knitr::kable()`](https://rdrr.io/pkg/knitr/man/kable.html)
(otherwise, has no use).
- wisca_model:
The outcome of `wisca()` or `antibiogram(..., wisca = TRUE)`.
- object:
An `antibiogram()` object.
- italicise:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the microorganism names in the
[knitr](https://rdrr.io/pkg/knitr/man/kable.html) table should be made
italic, using
[`italicise_taxonomy()`](https://amr-for-r.org/reference/italicise_taxonomy.md).
- na:
Character to use for showing `NA` values.
## Details
These functions return a table with values between 0 and 100 for
*susceptibility*, not resistance.
**Remember that you should filter your data to let it contain only first
isolates!** This is needed to exclude duplicates and to reduce selection
bias. Use
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md) to
determine them with one of the four available algorithms: isolate-based,
patient-based, episode-based, or phenotype-based.
For estimating antimicrobial coverage, especially when creating a WISCA,
the outcome might become more reliable by only including the top *n*
species encountered in the data. You can filter on this top *n* using
[`top_n_microorganisms()`](https://amr-for-r.org/reference/top_n_microorganisms.md).
For example, use `top_n_microorganisms(your_data, n = 10)` as a
pre-processing step to only include the top 10 species in the data.
The numeric values of an antibiogram are stored in a long format as the
[attribute](https://rdrr.io/r/base/attributes.html) `long_numeric`. You
can retrieve them using `attributes(x)$long_numeric`, where `x` is the
outcome of `antibiogram()` or `wisca()`. This is ideal for e.g. advanced
plotting.
### Formatting Type
The formatting of the 'cells' of the table can be set with the argument
`formatting_type`. In these examples, `5` indicates the antimicrobial
coverage (`4-6` the confidence level), `15` the number of susceptible
isolates, and `300` the number of tested (i.e., available) isolates:
1. 5
2. 15
3. 300
4. 15/300
5. 5 (300)
6. 5% (300)
7. 5 (N=300)
8. 5% (N=300)
9. 5 (15/300)
10. 5% (15/300)
11. 5 (N=15/300)
12. 5% (N=15/300)
13. 5 (4-6)
14. 5% (4-6%) - **default for WISCA**
15. 5 (4-6,300)
16. 5% (4-6%,300)
17. 5 (4-6,N=300)
18. 5% (4-6%,N=300) - **default for non-WISCA**
19. 5 (4-6,15/300)
20. 5% (4-6%,15/300)
21. 5 (4-6,N=15/300)
22. 5% (4-6%,N=15/300)
The default can be set globally with the package option
[`AMR_antibiogram_formatting_type`](https://amr-for-r.org/reference/AMR-options.md),
e.g. `options(AMR_antibiogram_formatting_type = 5)`. Do note that for
WISCA, the total numbers of tested and susceptible isolates are less
useful to report, since these are included in the Bayesian model and
apparent from the susceptibility and its confidence level.
Set `digits` (defaults to `0`) to alter the rounding of the
susceptibility percentages.
### Antibiogram Types
There are various antibiogram types, as summarised by Klinker *et al.*
(2021,
[doi:10.1177/20499361211011373](https://doi.org/10.1177/20499361211011373)
), and they are all supported by `antibiogram()`.
For clinical coverage estimations, **use WISCA whenever possible**,
since it provides more precise coverage estimates by accounting for
pathogen incidence and antimicrobial susceptibility, as has been shown
by Bielicki *et al.* (2020,
[doi:10.1001/jamanetworkopen.2019.21124](https://doi.org/10.1001/jamanetworkopen.2019.21124)
). See the section *Explaining WISCA* on this page. Do note that WISCA
is pathogen-agnostic, meaning that the outcome is not stratied by
pathogen, but rather by syndrome.
1. **Traditional Antibiogram**
Case example: Susceptibility of *Pseudomonas aeruginosa* to
piperacillin/tazobactam (TZP)
Code example:
antibiogram(your_data,
antimicrobials = "TZP")
2. **Combination Antibiogram**
Case example: Additional susceptibility of *Pseudomonas aeruginosa*
to TZP + tobramycin versus TZP alone
Code example:
antibiogram(your_data,
antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"))
3. **Syndromic Antibiogram**
Case example: Susceptibility of *Pseudomonas aeruginosa* to TZP
among respiratory specimens (obtained among ICU patients only)
Code example:
antibiogram(your_data,
antimicrobials = penicillins(),
syndromic_group = "ward")
4. **Weighted-Incidence Syndromic Combination Antibiogram (WISCA)**
WISCA can be applied to any antibiogram, see the section *Explaining
WISCA* on this page for more information.
Code example:
antibiogram(your_data,
antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"),
wisca = TRUE)
# this is equal to:
wisca(your_data,
antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"))
WISCA uses a sophisticated Bayesian decision model to combine both
local and pooled antimicrobial resistance data. This approach not
only evaluates local patterns but can also draw on multi-centre
datasets to improve regimen accuracy, even in low-incidence
infections like paediatric bloodstream infections (BSIs).
### Grouped tibbles
For any type of antibiogram, grouped
[tibbles](https://tibble.tidyverse.org/reference/tibble.html) can also
be used to calculate susceptibilities over various groups.
Code example:
library(dplyr)
your_data %>%
group_by(has_sepsis, is_neonate, sex) %>%
wisca(antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"))
### Stepped Approach for Clinical Insight
In clinical practice, antimicrobial coverage decisions evolve as more
microbiological data becomes available. This theoretical stepped
approach ensures empirical coverage can continuously assessed to improve
patient outcomes:
1. **Initial Empirical Therapy (Admission / Pre-Culture Data)**
At admission, no pathogen information is available.
- Action: broad-spectrum coverage is based on local resistance
patterns and syndromic antibiograms. Using the pathogen-agnostic
yet incidence-weighted WISCA is preferred.
- Code example:
antibiogram(your_data,
antimicrobials = selected_regimens,
mo_transform = NA) # all pathogens set to `NA`
# preferred: use WISCA
wisca(your_data,
antimicrobials = selected_regimens)
2. **Refinement with Gram Stain Results**
When a blood culture becomes positive, the Gram stain provides an
initial and crucial first stratification (Gram-positive vs.
Gram-negative).
- Action: narrow coverage based on Gram stain-specific resistance
patterns.
- Code example:
antibiogram(your_data,
antimicrobials = selected_regimens,
mo_transform = "gramstain") # all pathogens set to Gram-pos/Gram-neg
3. **Definitive Therapy Based on Species Identification**
After cultivation of the pathogen, full pathogen identification
allows precise targeting of therapy.
- Action: adjust treatment to pathogen-specific antibiograms,
minimizing resistance risks.
- Code example:
antibiogram(your_data,
antimicrobials = selected_regimens,
mo_transform = "shortname") # all pathogens set to 'G. species', e.g., E. coli
By structuring antibiograms around this stepped approach, clinicians can
make data-driven adjustments at each stage, ensuring optimal empirical
and targeted therapy while reducing unnecessary broad-spectrum
antimicrobial use.
### Inclusion in Combination Antibiograms
Note that for combination antibiograms, it is important to realise that
susceptibility can be calculated in two ways, which can be set with the
`only_all_tested` argument (default is `FALSE`). See this example for
two antimicrobials, Drug A and Drug B, about how `antibiogram()` works
to calculate the %SI:
--------------------------------------------------------------------
only_all_tested = FALSE only_all_tested = TRUE
----------------------- -----------------------
Drug A Drug B considered considered considered considered
susceptible tested susceptible tested
-------- -------- ----------- ---------- ----------- ----------
S or I S or I X X X X
R S or I X X X X
<NA> S or I X X - -
S or I R X X X X
R R - X - X
<NA> R - - - -
S or I <NA> X X - -
R <NA> - - - -
<NA> <NA> - - - -
--------------------------------------------------------------------
### Plotting
All types of antibiograms as listed above can be plotted (using
[`ggplot2::autoplot()`](https://ggplot2.tidyverse.org/reference/autoplot.html)
or base R's [`plot()`](https://amr-for-r.org/reference/plot.md) and
[`barplot()`](https://rdrr.io/r/graphics/barplot.html)). As mentioned
above, the numeric values of an antibiogram are stored in a long format
as the [attribute](https://rdrr.io/r/base/attributes.html)
`long_numeric`. You can retrieve them using
`attributes(x)$long_numeric`, where `x` is the outcome of
`antibiogram()` or `wisca()`.
The outcome of `antibiogram()` can also be used directly in R Markdown /
Quarto (i.e., `knitr`) for reports. In this case,
[`knitr::kable()`](https://rdrr.io/pkg/knitr/man/kable.html) will be
applied automatically and microorganism names will even be printed in
italics at default (see argument `italicise`).
You can also use functions from specific 'table reporting' packages to
transform the output of `antibiogram()` to your needs, e.g. with
`flextable::as_flextable()` or `gt::gt()`.
## Explaining WISCA
WISCA (Weighted-Incidence Syndromic Combination Antibiogram) estimates
the probability of empirical coverage for combination regimens.
It weights susceptibility by pathogen prevalence within a clinical
syndrome and provides credible intervals around the expected coverage.
For more background, interpretation, and examples, see [the WISCA
vignette](https://amr-for-r.org/articles/WISCA.html).
## Author
Implementation: Dr. Larisse Bolton and Dr. Matthijs Berends
## Examples
``` r
# example_isolates is a data set available in the AMR package.
# run ?example_isolates for more info.
example_isolates
#> # A tibble: 2,000 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> # 1,990 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
# \donttest{
# Traditional antibiogram ----------------------------------------------
antibiogram(example_isolates,
antimicrobials = c(aminoglycosides(), carbapenems())
)
#> For `aminoglycosides()` using columns 'GEN' (gentamicin), 'TOB'
#> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)
#> For `carbapenems()` using columns 'IPM' (imipenem) and 'MEM' (meropenem)
#> # An Antibiogram: 10 × 7
#> # Type: Non-WISCA with 95% CI
#> Pathogen Amikacin Gentamicin Imipenem Kanamycin Meropenem Tobramycin
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 CoNS 0% (0-8%,N… 86% (82-9… 52% (37… 0% (0-8%… 52% (37-… 22% (12-3…
#> 2 E. coli 100% (98-1… 98% (96-9… 100% (9… NA 100% (99… 97% (96-9…
#> 3 E. faecalis 0% (0-9%,N… 0% (0-9%,… 100% (9… 0% (0-9%… NA 0% (0-9%,…
#> 4 K. pneumoniae NA 90% (79-9… 100% (9… NA 100% (93… 90% (79-9…
#> 5 P. aeruginosa NA 100% (88-… NA 0% (0-12… NA 100% (88-…
#> 6 P. mirabilis NA 94% (80-9… 94% (79… NA NA 94% (80-9…
#> 7 S. aureus NA 99% (97-1… NA NA NA 98% (92-1…
#> 8 S. epidermidis 0% (0-8%,N… 79% (71-8… NA 0% (0-8%… NA 51% (40-6…
#> 9 S. hominis NA 92% (84-9… NA NA NA 85% (74-9…
#> 10 S. pneumoniae 0% (0-3%,N… 0% (0-3%,… NA 0% (0-3%… NA 0% (0-3%,…
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
antibiogram(example_isolates,
antimicrobials = aminoglycosides(),
ab_transform = "atc",
mo_transform = "gramstain"
)
#> For `aminoglycosides()` using columns 'GEN' (gentamicin), 'TOB'
#> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)
#> # An Antibiogram: 2 × 5
#> # Type: Non-WISCA with 95% CI
#> Pathogen J01GB01 J01GB03 J01GB04 J01GB06
#> <chr> <chr> <chr> <chr> <chr>
#> 1 Gram-negative 96% (94-97%,N=686) 96% (95-98%,N=684) 0% (0-10%,N=35) 98% (96-…
#> 2 Gram-positive 34% (31-38%,N=665) 63% (60-66%,N=1170) 0% (0-1%,N=436) 0% (0-1%…
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
antibiogram(example_isolates,
antimicrobials = carbapenems(),
ab_transform = "name",
mo_transform = "name"
)
#> For `carbapenems()` using columns 'IPM' (imipenem) and 'MEM' (meropenem)
#> # An Antibiogram: 5 × 3
#> # Type: Non-WISCA with 95% CI
#> Pathogen Imipenem Meropenem
#> <chr> <chr> <chr>
#> 1 Coagulase-negative Staphylococcus (CoNS) 52% (37-67%,N=48) 52% (37-67%,N=4…
#> 2 Enterococcus faecalis 100% (91-100%,N=38) NA
#> 3 Escherichia coli 100% (99-100%,N=422) 100% (99-100%,N…
#> 4 Klebsiella pneumoniae 100% (93-100%,N=51) 100% (93-100%,N…
#> 5 Proteus mirabilis 94% (79-99%,N=32) NA
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# Combined antibiogram -------------------------------------------------
# combined antimicrobials yield higher empiric coverage
antibiogram(example_isolates,
antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"),
mo_transform = "gramstain"
)
#> # An Antibiogram: 2 × 4
#> # Type: Non-WISCA with 95% CI
#> Pathogen Piperacillin/tazobac…¹ Piperacillin/tazobac…² Piperacillin/tazobac…³
#> <chr> <chr> <chr> <chr>
#> 1 Gram-neg… 88% (85-91%,N=641) 99% (97-99%,N=691) 98% (97-99%,N=693)
#> 2 Gram-pos… 86% (82-89%,N=345) 98% (96-98%,N=1044) 95% (93-97%,N=550)
#> # abbreviated names: ¹​`Piperacillin/tazobactam`,
#> # ²​`Piperacillin/tazobactam + Gentamicin`,
#> # ³​`Piperacillin/tazobactam + Tobramycin`
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# you can use any antimicrobial selector with `+` too:
antibiogram(example_isolates,
antimicrobials = ureidopenicillins() + c("", "GEN", "tobra"),
mo_transform = "gramstain"
)
#> For `ureidopenicillins()` using column 'TZP' (piperacillin/tazobactam)
#> # An Antibiogram: 2 × 4
#> # Type: Non-WISCA with 95% CI
#> Pathogen Piperacillin/tazobac…¹ Piperacillin/tazobac…² Piperacillin/tazobac…³
#> <chr> <chr> <chr> <chr>
#> 1 Gram-neg… 88% (85-91%,N=641) 99% (97-99%,N=691) 98% (97-99%,N=693)
#> 2 Gram-pos… 86% (82-89%,N=345) 98% (96-98%,N=1044) 95% (93-97%,N=550)
#> # abbreviated names: ¹​`Piperacillin/tazobactam`,
#> # ²​`Piperacillin/tazobactam + Gentamicin`,
#> # ³​`Piperacillin/tazobactam + Tobramycin`
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# names of antimicrobials do not need to resemble columns exactly:
antibiogram(example_isolates,
antimicrobials = c("Cipro", "cipro + genta"),
mo_transform = "gramstain",
ab_transform = "name",
sep = " & "
)
#> # An Antibiogram: 2 × 3
#> # Type: Non-WISCA with 95% CI
#> Pathogen Ciprofloxacin `Ciprofloxacin & Gentamicin`
#> <chr> <chr> <chr>
#> 1 Gram-negative 91% (88-93%,N=684) 99% (97-99%,N=694)
#> 2 Gram-positive 77% (74-80%,N=724) 93% (91-94%,N=847)
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# Syndromic antibiogram ------------------------------------------------
# the data set could contain a filter for e.g. respiratory specimens
antibiogram(example_isolates,
antimicrobials = c(aminoglycosides(), carbapenems()),
syndromic_group = "ward"
)
#> For `aminoglycosides()` using columns 'GEN' (gentamicin), 'TOB'
#> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)
#> For `carbapenems()` using columns 'IPM' (imipenem) and 'MEM' (meropenem)
#> # An Antibiogram: 14 × 8
#> # Type: Non-WISCA with 95% CI
#> `Syndromic Group` Pathogen Amikacin Gentamicin Imipenem Kanamycin Meropenem
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 Clinical CoNS NA 89% (84-9… 57% (39… NA 57% (39-…
#> 2 ICU CoNS NA 79% (68-8… NA NA NA
#> 3 Outpatient CoNS NA 84% (66-9… NA NA NA
#> 4 Clinical E. coli 100% (9… 98% (96-9… 100% (9… NA 100% (99…
#> 5 ICU E. coli 100% (9… 99% (95-1… 100% (9… NA 100% (97…
#> 6 Clinical K. pneumo… NA 92% (81-9… 100% (9… NA 100% (92…
#> 7 Clinical P. mirabi… NA 100% (88-… NA NA NA
#> 8 Clinical S. aureus NA 99% (95-1… NA NA NA
#> 9 ICU S. aureus NA 100% (95-… NA NA NA
#> 10 Clinical S. epider… NA 82% (72-9… NA NA NA
#> 11 ICU S. epider… NA 72% (60-8… NA NA NA
#> 12 Clinical S. hominis NA 96% (85-9… NA NA NA
#> 13 Clinical S. pneumo… 0% (0-5… 0% (0-5%,… NA 0% (0-5%… NA
#> 14 ICU S. pneumo… 0% (0-1… 0% (0-12%… NA 0% (0-12… NA
#> # 1 more variable: Tobramycin <chr>
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# now define a data set with only E. coli
ex1 <- example_isolates[which(mo_genus() == "Escherichia"), ]
#> Using column 'mo' as input for `mo_genus()`
# with a custom language, though this will be determined automatically
# (i.e., this table will be in Spanish on Spanish systems)
antibiogram(ex1,
antimicrobials = aminoglycosides(),
ab_transform = "name",
syndromic_group = ifelse(ex1$ward == "ICU",
"UCI", "No UCI"
),
language = "es"
)
#> For `aminoglycosides()` using columns 'GEN' (gentamicin), 'TOB'
#> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)
#> # An Antibiogram: 2 × 5
#> # Type: Non-WISCA with 95% CI
#> `Grupo sindrómico` Patógeno Amikacina Gentamicina Tobramicina
#> <chr> <chr> <chr> <chr> <chr>
#> 1 No UCI E. coli 100% (97-100%,N=119) 98% (96-99%,N=32… 98% (96-99…
#> 2 UCI E. coli 100% (93-100%,N=52) 99% (95-100%,N=1… 96% (92-99…
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# WISCA antibiogram ----------------------------------------------------
# WISCA are not stratified by species, but rather on syndromes
antibiogram(example_isolates,
antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"),
syndromic_group = "ward",
wisca = TRUE
)
#> # An Antibiogram: 3 × 4
#> # Type: WISCA with 95% CI
#> `Syndromic Group` `Piperacillin/tazobactam` Piperacillin/tazobactam + Gentam…¹
#> <chr> <chr> <chr>
#> 1 Clinical 73.4% (67.6-78.6%) 92.4% (90.6-93.7%)
#> 2 ICU 57.4% (49.7-65.6%) 85% (82.1-87.6%)
#> 3 Outpatient 56.9% (46.9-66.7%) 74.4% (69-79.7%)
#> # abbreviated name: ¹​`Piperacillin/tazobactam + Gentamicin`
#> # 1 more variable: `Piperacillin/tazobactam + Tobramycin` <chr>
#> # Use `ggplot2::autoplot()` or base R `plot()` to create a plot of this antibiogram,
#> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram
# Print the output for R Markdown / Quarto -----------------------------
ureido <- antibiogram(example_isolates,
antimicrobials = ureidopenicillins(),
syndromic_group = "ward",
wisca = TRUE
)
#> For `ureidopenicillins()` using column 'TZP' (piperacillin/tazobactam)
# in an Rmd file, you would just need to return `ureido` in a chunk,
# but to be explicit here:
if (requireNamespace("knitr")) {
cat(knitr::knit_print(ureido))
}
#>
#>
#> |Syndromic Group |Piperacillin/tazobactam |
#> |:---------------|:-----------------------|
#> |Clinical |73.6% (68.4-79%) |
#> |ICU |57.4% (49.7-65.4%) |
#> |Outpatient |57% (47.2-66.7%) |
# Generate plots with ggplot2 or base R --------------------------------
ab1 <- antibiogram(example_isolates,
antimicrobials = c("AMC", "CIP", "TZP", "TZP+TOB"),
mo_transform = "gramstain"
)
ab2 <- antibiogram(example_isolates,
antimicrobials = c("AMC", "CIP", "TZP", "TZP+TOB"),
mo_transform = "gramstain",
syndromic_group = "ward"
)
if (requireNamespace("ggplot2")) {
ggplot2::autoplot(ab1)
}
if (requireNamespace("ggplot2")) {
ggplot2::autoplot(ab2)
}
plot(ab1)
plot(ab2)
# }
```

View File

@@ -17,7 +17,7 @@ my_data_with_all_these_columns %&amp;gt;%
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -217,14 +217,14 @@ my_data_with_all_these_columns %&amp;gt;%
<li><p><code>aminopenicillins()</code> can select: <br> amoxicillin (AMX) and ampicillin (AMP)</p></li>
<li><p><code>antifungals()</code> can select: <br> amorolfine (AMO), amphotericin B (AMB), amphotericin B-high (AMH), anidulafungin (ANI), butoconazole (BUT), caspofungin (CAS), ciclopirox (CIX), clotrimazole (CTR), econazole (ECO), fluconazole (FLU), flucytosine (FCT), fosfluconazole (FFL), griseofulvin (GRI), hachimycin (HCH), ibrexafungerp (IBX), isavuconazole (ISV), isoconazole (ISO), itraconazole (ITR), ketoconazole (KET), manogepix (MGX), micafungin (MIF), miconazole (MCZ), nystatin (NYS), oteseconazole (OTE), pimaricin (PMR), posaconazole (POS), rezafungin (RZF), ribociclib (RBC), sulconazole (SUC), terbinafine (TRB), terconazole (TRC), and voriconazole (VOR)</p></li>
<li><p><code>antimycobacterials()</code> can select: <br> 4-aminosalicylic acid (AMA), calcium aminosalicylate (CLA), capreomycin (CAP), clofazimine (CLF), delamanid (DLM), enviomycin (ENV), ethambutol (ETH), ethambutol/isoniazid (ETI), ethionamide (ETI1), isoniazid (INH), isoniazid/sulfamethoxazole/trimethoprim/pyridoxine (IST), morinamide (MRN), p-aminosalicylic acid (PAS), pretomanid (PMD), protionamide (PTH), pyrazinamide (PZA), rifabutin (RIB), rifampicin (RIF), rifampicin/ethambutol/isoniazid (REI), rifampicin/isoniazid (RFI), rifampicin/pyrazinamide/ethambutol/isoniazid (RPEI), rifampicin/pyrazinamide/isoniazid (RPI), rifamycin (RFM), rifapentine (RFP), sodium aminosalicylate (SDA), streptomycin/isoniazid (STI), terizidone (TRZ), thioacetazone (TAT), thioacetazone/isoniazid (THI1), tiocarlide (TCR), and viomycin (VIO)</p></li>
<li><p><code>betalactams()</code> can select: <br> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin (AMP), ampicillin/sulbactam (SAM), apalcillin (APL), aspoxicillin (APX), azidocillin (AZD), azlocillin (AZL), aztreonam (ATM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), bacampicillin (BAM), benzathine benzylpenicillin (BNB), benzathine phenoxymethylpenicillin (BNP), benzylpenicillin (PEN), benzylpenicillin screening test (PEN-S), biapenem (BIA), carbenicillin (CRB), carindacillin (CRN), carumonam (CAR), cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime screening test (CTX-S), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening test (FOX-S), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), ciclacillin (CIC), clometocillin (CLM), cloxacillin (CLO), dicloxacillin (DIC), doripenem (DOR), epicillin (EPC), ertapenem (ETP), flucloxacillin (FLC), hetacillin (HET), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), latamoxef (LTM), lenampicillin (LEN), loracarbef (LOR), mecillinam (MEC), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), metampicillin (MTM), meticillin (MET), mezlocillin (MEZ), mezlocillin/sulbactam (MSU), nafcillin (NAF), oxacillin (OXA), oxacillin screening test (OXA-S), panipenem (PAN), penamecillin (PNM), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), pheneticillin (PHE), phenoxymethylpenicillin (PHN), piperacillin (PIP), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), piridicillin (PRC), pivampicillin (PVM), pivmecillinam (PME), procaine benzylpenicillin (PRB), propicillin (PRP), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), sarmoxicillin (SRX), sulbenicillin (SBC), sultamicillin (SLT6), talampicillin (TAL), tebipenem (TBP), temocillin (TEM), ticarcillin (TIC), ticarcillin/clavulanic acid (TCC), and tigemonam (TMN)</p></li>
<li><p><code>betalactams_with_inhibitor()</code> can select: <br> amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin/sulbactam (SAM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefoperazone/sulbactam (CSL), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefpodoxime/clavulanic acid (CDC), ceftaroline/avibactam (CPA), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), ceftolozane/tazobactam (CZT), ceftriaxone/beta-lactamase inhibitor (CEB), imipenem/relebactam (IMR), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), mezlocillin/sulbactam (MSU), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), and ticarcillin/clavulanic acid (TCC)</p></li>
<li><p><code>carbapenems()</code> can select: <br> biapenem (BIA), doripenem (DOR), ertapenem (ETP), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), panipenem (PAN), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), and tebipenem (TBP)</p></li>
<li><p><code>cephalosporins()</code> can select: <br> cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime screening test (CTX-S), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening test (FOX-S), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), latamoxef (LTM), and loracarbef (LOR)</p></li>
<li><p><code>betalactams()</code> can select: <br> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin (AMP), ampicillin/sulbactam (SAM), apalcillin (APL), aspoxicillin (APX), azidocillin (AZD), azlocillin (AZL), aztreonam (ATM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), bacampicillin (BAM), benzathine benzylpenicillin (BNB), benzathine phenoxymethylpenicillin (BNP), benzylpenicillin (PEN), benzylpenicillin screening test (PEN-S), biapenem (BIA), carbenicillin (CRB), carindacillin (CRN), carumonam (CAR), cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/taniborbactam (FTA), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime screening test (CTX-S), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening test (FOX-S), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), ciclacillin (CIC), clometocillin (CLM), cloxacillin (CLO), dicloxacillin (DIC), doripenem (DOR), epicillin (EPC), ertapenem (ETP), flucloxacillin (FLC), hetacillin (HET), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), latamoxef (LTM), lenampicillin (LEN), loracarbef (LOR), mecillinam (MEC), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), metampicillin (MTM), meticillin (MET), mezlocillin (MEZ), mezlocillin/sulbactam (MSU), nafcillin (NAF), oxacillin (OXA), oxacillin screening test (OXA-S), panipenem (PAN), penamecillin (PNM), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), pheneticillin (PHE), phenoxymethylpenicillin (PHN), piperacillin (PIP), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), piridicillin (PRC), pivampicillin (PVM), pivmecillinam (PME), procaine benzylpenicillin (PRB), propicillin (PRP), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), sarmoxicillin (SRX), sulbenicillin (SBC), sultamicillin (SLT6), talampicillin (TAL), taniborbactam (TAN), tebipenem (TBP), temocillin (TEM), ticarcillin (TIC), ticarcillin/clavulanic acid (TCC), and tigemonam (TMN)</p></li>
<li><p><code>betalactams_with_inhibitor()</code> can select: <br> amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin/sulbactam (SAM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/taniborbactam (FTA), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefoperazone/sulbactam (CSL), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefpodoxime/clavulanic acid (CDC), ceftaroline/avibactam (CPA), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), ceftolozane/tazobactam (CZT), ceftriaxone/beta-lactamase inhibitor (CEB), imipenem/relebactam (IMR), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), mezlocillin/sulbactam (MSU), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), and ticarcillin/clavulanic acid (TCC)</p></li>
<li><p><code>carbapenems()</code> can select: <br> biapenem (BIA), doripenem (DOR), ertapenem (ETP), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), panipenem (PAN), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), taniborbactam (TAN), and tebipenem (TBP)</p></li>
<li><p><code>cephalosporins()</code> can select: <br> cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/taniborbactam (FTA), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime screening test (CTX-S), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening test (FOX-S), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), latamoxef (LTM), and loracarbef (LOR)</p></li>
<li><p><code>cephalosporins_1st()</code> can select: <br> cefacetrile (CAC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefroxadine (CRD), ceftezole (CTL), and cephradine (CED)</p></li>
<li><p><code>cephalosporins_2nd()</code> can select: <br> cefaclor (CEC), cefamandole (MAN), cefmetazole (CMZ), cefonicid (CID), ceforanide (CND), cefotetan (CTT), cefotiam (CTF), cefoxitin (FOX), cefoxitin screening test (FOX-S), cefprozil (CPR), cefuroxime (CXM), cefuroxime axetil (CXA), and loracarbef (LOR)</p></li>
<li><p><code>cephalosporins_3rd()</code> can select: <br> cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefetamet (CAT), cefetamet pivoxil (CPI), cefixime (CFM), cefmenoxime (CMX), cefodizime (DIZ), cefoperazone (CFP), cefoperazone/sulbactam (CSL), cefotaxime (CTX), cefotaxime screening test (CTX-S), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotiam hexetil (CHE), cefovecin (FOV), cefpimizole (CFZ), cefpiramide (CPM), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefsulodin (CFS), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), and latamoxef (LTM)</p></li>
<li><p><code>cephalosporins_4th()</code> can select: <br> cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetecol (CCL), cefoselis (CSE), cefozopran (ZOP), cefpirome (CPO), and cefquinome (CEQ)</p></li>
<li><p><code>cephalosporins_4th()</code> can select: <br> cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/enmetazobactam (FPE), cefepime/nacubactam (FNC), cefepime/taniborbactam (FTA), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetecol (CCL), cefoselis (CSE), cefozopran (ZOP), cefpirome (CPO), and cefquinome (CEQ)</p></li>
<li><p><code>cephalosporins_5th()</code> can select: <br> ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), and ceftolozane/tazobactam (CZT)</p></li>
<li><p><code>fluoroquinolones()</code> can select: <br> besifloxacin (BES), ciprofloxacin (CIP), ciprofloxacin/metronidazole (CIM), ciprofloxacin/ornidazole (CIO), ciprofloxacin/tinidazole (CIT), clinafloxacin (CLX), danofloxacin (DAN), delafloxacin (DFX), difloxacin (DIF), enoxacin (ENX), enrofloxacin (ENR), finafloxacin (FIN), fleroxacin (FLE), garenoxacin (GRN), gatifloxacin (GAT), gemifloxacin (GEM), grepafloxacin (GRX), lascufloxacin (LSC), levofloxacin (LVX), levofloxacin/ornidazole (LEO), levonadifloxacin (LND), lomefloxacin (LOM), marbofloxacin (MAR), metioxate (MXT), miloxacin (MIL), moxifloxacin (MFX), nadifloxacin (NAD), nemonoxacin (NEM), nifuroquine (NIF), nitroxoline (NTR), norfloxacin (NOR), norfloxacin screening test (NOR-S), norfloxacin/metronidazole (NME), norfloxacin/tinidazole (NTI), ofloxacin (OFX), ofloxacin/ornidazole (OOR), orbifloxacin (ORB), pazufloxacin (PAZ), pefloxacin (PEF), pefloxacin screening test (PEF-S), pradofloxacin (PRA), premafloxacin (PRX), prulifloxacin (PRU), rufloxacin (RFL), sarafloxacin (SAR), sitafloxacin (SIT), sparfloxacin (SPX), temafloxacin (TMX), tilbroquinol (TBQ), tioxacin (TXC), tosufloxacin (TFX), and trovafloxacin (TVA)</p></li>
<li><p><code>glycopeptides()</code> can select: <br> avoparcin (AVO), bleomycin (BLM), dalbavancin (DAL), norvancomycin (NVA), oritavancin (ORI), ramoplanin (RAM), teicoplanin (TEC), teicoplanin-macromethod (TCM), telavancin (TLV), vancomycin (VAN), and vancomycin-macromethod (VAM)</p></li>
@@ -294,7 +294,7 @@ my_data_with_all_these_columns %&amp;gt;%
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;"> • your_data[, carbapenems()]</span></span>
<span class="r-msg co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;"> • your_data[, c("column_a", "column_b", carbapenems())]</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> Class 'ab'</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1] BIA DOR ETP IMR IPM MEM MEV PAN RIA RIT RZM TBP</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> [1] BIA DOR ETP IMR IPM MEM MEV PAN RIA RIT RZM TAN TBP</span>
<span class="r-in"><span></span></span>
<span class="r-in"><span></span></span>
<span class="r-in"><span><span class="co"># Though they are primarily intended to use for selections and filters.</span></span></span>

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Data Sets with 616 Antimicrobial Drugs — antimicrobials • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="../favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png"><link rel="icon" sizes="any" href="../favicon.ico"><link rel="manifest" href="../site.webmanifest"><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><script src="../extra.js"></script><meta property="og:title" content="Data Sets with 616 Antimicrobial Drugs — antimicrobials"><meta name="description" content="Two data sets containing all antimicrobials and antivirals. Use as.ab() or one of the ab_* functions to retrieve values from the antimicrobials data set. Three identifiers are included in this data set: an antimicrobial ID (ab, primarily used in this package) as defined by WHONET/EARS-Net, an ATC code (atc) as defined by the WHO, and a Compound ID (cid) as found in PubChem. Other properties in this data set are derived from one or more of these codes. Note that some drugs have multiple ATC codes.
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Data Sets with 618 Antimicrobial Drugs — antimicrobials • AMR (for R)</title><!-- favicons --><link rel="icon" type="image/png" sizes="96x96" href="../favicon-96x96.png"><link rel="icon" type="”image/svg+xml”" href="../favicon.svg"><link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon.png"><link rel="icon" sizes="any" href="../favicon.ico"><link rel="manifest" href="../site.webmanifest"><script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><link href="../deps/bootstrap-5.3.1/bootstrap.min.css" rel="stylesheet"><script src="../deps/bootstrap-5.3.1/bootstrap.bundle.min.js"></script><link href="../deps/Lato-0.4.10/font.css" rel="stylesheet"><link href="../deps/Fira_Code-0.4.10/font.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"><link href="../deps/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"><script src="../deps/headroom-0.11.0/headroom.min.js"></script><script src="../deps/headroom-0.11.0/jQuery.headroom.min.js"></script><script src="../deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js"></script><script src="../deps/clipboard.js-2.0.11/clipboard.min.js"></script><script src="../deps/search-1.0.0/autocomplete.jquery.min.js"></script><script src="../deps/search-1.0.0/fuse.min.js"></script><script src="../deps/search-1.0.0/mark.min.js"></script><!-- pkgdown --><script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet"><script src="../extra.js"></script><meta property="og:title" content="Data Sets with 618 Antimicrobial Drugs — antimicrobials"><meta name="description" content="Two data sets containing all antimicrobials and antivirals. Use as.ab() or one of the ab_* functions to retrieve values from the antimicrobials data set. Three identifiers are included in this data set: an antimicrobial ID (ab, primarily used in this package) as defined by WHONET/EARS-Net, an ATC code (atc) as defined by the WHO, and a Compound ID (cid) as found in PubChem. Other properties in this data set are derived from one or more of these codes. Note that some drugs have multiple ATC codes.
The antibiotics data set has been renamed to antimicrobials. The old name will be removed in a future version."><meta property="og:description" content="Two data sets containing all antimicrobials and antivirals. Use as.ab() or one of the ab_* functions to retrieve values from the antimicrobials data set. Three identifiers are included in this data set: an antimicrobial ID (ab, primarily used in this package) as defined by WHONET/EARS-Net, an ATC code (atc) as defined by the WHO, and a Compound ID (cid) as found in PubChem. Other properties in this data set are derived from one or more of these codes. Note that some drugs have multiple ATC codes.
The antibiotics data set has been renamed to antimicrobials. The old name will be removed in a future version."><meta property="og:image" content="https://amr-for-r.org/logo.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/contrib/auto-render.min.js" integrity="sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin="anonymous" onload="renderMathInElement(document.body);"></script></head><body>
<a href="#main" class="visually-hidden-focusable">Skip to contents</a>
@@ -9,7 +9,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -46,7 +46,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
</nav><div class="container template-reference-topic">
<div class="row">
<main id="main" class="col-md-9"><div class="page-header">
<img src="../logo.svg" class="logo" alt=""><h1>Data Sets with 616 Antimicrobial Drugs</h1>
<img src="../logo.svg" class="logo" alt=""><h1>Data Sets with 618 Antimicrobial Drugs</h1>
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/R/data.R" class="external-link"><code>R/data.R</code></a></small>
<div class="d-none name"><code>antimicrobials.Rd</code></div>
</div>
@@ -69,7 +69,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
<h2 id="format">Format<a class="anchor" aria-label="anchor" href="#format"></a></h2>
<div class="section">
<h3 id="for-the-antimicrobials-data-set-a-tibble-with-observations-and-variables-">For the antimicrobials data set: a <a href="https://tibble.tidyverse.org/reference/tibble.html" class="external-link">tibble</a> with 496 observations and 14 variables:<a class="anchor" aria-label="anchor" href="#for-the-antimicrobials-data-set-a-tibble-with-observations-and-variables-"></a></h3>
<h3 id="for-the-antimicrobials-data-set-a-tibble-with-observations-and-variables-">For the antimicrobials data set: a <a href="https://tibble.tidyverse.org/reference/tibble.html" class="external-link">tibble</a> with 498 observations and 14 variables:<a class="anchor" aria-label="anchor" href="#for-the-antimicrobials-data-set-a-tibble-with-observations-and-variables-"></a></h3>
<ul><li><p><code>ab</code><br> antimicrobial ID as used in this package (such as <code>AMC</code>), using the official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes where available. <em><strong>This is a unique identifier.</strong></em></p></li>
<li><p><code>cid</code><br> Compound ID as found in PubChem. <em><strong>This is a unique identifier.</strong></em></p></li>
@@ -103,7 +103,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
<li><p><code>loinc</code><br> All codes associated with the name of the antiviral drug from Logical Observation Identifiers Names and Codes (LOINC), Version 2.76 (18 September, 2023). Use <code><a href="av_property.html">av_loinc()</a></code> to retrieve them quickly, see <code><a href="av_property.html">av_property()</a></code>.</p></li>
</ul></div>
<p>An object of class <code>deprecated_amr_dataset</code> (inherits from <code>tbl_df</code>, <code>tbl</code>, <code>data.frame</code>) with 496 rows and 14 columns.</p>
<p>An object of class <code>deprecated_amr_dataset</code> (inherits from <code>tbl_df</code>, <code>tbl</code>, <code>data.frame</code>) with 498 rows and 14 columns.</p>
<p>An object of class <code>tbl_df</code> (inherits from <code>tbl</code>, <code>data.frame</code>) with 120 rows and 11 columns.</p>
</div>
<div class="section level2">
@@ -145,7 +145,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
<div class="section level2">
<h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">antimicrobials</span></span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 496 × 14</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 498 × 14</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> ab cid name group atc atc_group1 atc_group2 abbreviations synonyms</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;ab&gt;</span> <span style="color: #949494; font-style: italic;">&lt;dbl&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;lis&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;list&gt;</span> <span style="color: #949494; font-style: italic;">&lt;named &gt;</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 1</span> AMA <span style="text-decoration: underline;">4</span>649 4-ami… Anti… <span style="color: #949494;">&lt;chr&gt;</span> Drugs for… Aminosali… <span style="color: #949494;">&lt;chr [1]&gt;</span> <span style="color: #949494;">&lt;chr&gt;</span> </span>
@@ -158,7 +158,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 8</span> AMX <span style="text-decoration: underline;">33</span>613 Amoxi… Beta… <span style="color: #949494;">&lt;chr&gt;</span> Beta-lact… Penicilli… <span style="color: #949494;">&lt;chr [4]&gt;</span> <span style="color: #949494;">&lt;chr&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 9</span> AMC 23<span style="text-decoration: underline;">665</span>637 Amoxi… Beta… <span style="color: #949494;">&lt;chr&gt;</span> Beta-lact… Combinati… <span style="color: #949494;">&lt;chr [6]&gt;</span> <span style="color: #949494;">&lt;chr&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">10</span> AXS <span style="text-decoration: underline;">465</span>441 Amoxi… Beta… <span style="color: #949494;">&lt;chr&gt;</span> <span style="color: #BB0000;">NA</span> <span style="color: #BB0000;">NA</span> <span style="color: #949494;">&lt;chr [1]&gt;</span> <span style="color: #949494;">&lt;chr&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># 486 more rows</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># 488 more rows</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># 5 more variables: oral_ddd &lt;dbl&gt;, oral_units &lt;chr&gt;, iv_ddd &lt;dbl&gt;,</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># iv_units &lt;chr&gt;, loinc &lt;list&gt;</span></span>
<span class="r-in"><span><span class="va">antivirals</span></span></span>

253
reference/antimicrobials.md Normal file
View File

@@ -0,0 +1,253 @@
# Data Sets with 618 Antimicrobial Drugs
Two data sets containing all antimicrobials and antivirals. Use
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md) or one of the
[`ab_*`](https://amr-for-r.org/reference/ab_property.md) functions to
retrieve values from the antimicrobials data set. Three identifiers are
included in this data set: an antimicrobial ID (`ab`, primarily used in
this package) as defined by WHONET/EARS-Net, an ATC code (`atc`) as
defined by the WHO, and a Compound ID (`cid`) as found in PubChem. Other
properties in this data set are derived from one or more of these codes.
Note that some drugs have multiple ATC codes.
**The `antibiotics` data set has been renamed to `antimicrobials`. The
old name will be removed in a future version.**
## Usage
``` r
antimicrobials
antibiotics
antivirals
```
## Format
### For the antimicrobials data set: a [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 498 observations and 14 variables:
- `ab`
antimicrobial ID as used in this package (such as `AMC`), using the
official EARS-Net (European Antimicrobial Resistance Surveillance
Network) codes where available. ***This is a unique identifier.***
- `cid`
Compound ID as found in PubChem. ***This is a unique identifier.***
- `name`
Official name as used by WHONET/EARS-Net or the WHO. ***This is a
unique identifier.***
- `group`
A short and concise group name, based on WHONET and WHOCC definitions
- `atc`
ATC codes (Anatomical Therapeutic Chemical) as defined by the WHOCC,
like `J01CR02` (last updated May 4th, 2025):
- `atc_group1`
Official pharmacological subgroup (3rd level ATC code) as defined by
the WHOCC, like `"Macrolides, lincosamides and streptogramins"`
- `atc_group2`
Official chemical subgroup (4th level ATC code) as defined by the
WHOCC, like `"Macrolides"`
- `abbr`
List of abbreviations as used in many countries, also for
antimicrobial susceptibility testing (AST)
- `synonyms`
Synonyms (often trade names) of a drug, as found in PubChem based on
their compound ID
ATC properties (last updated May 4th, 2025):
- `oral_ddd`
Defined Daily Dose (DDD), oral treatment, currently available for 180
drugs
- `oral_units`
Units of `oral_ddd`
- `iv_ddd`
Defined Daily Dose (DDD), parenteral (intravenous) treatment,
currently available for 153 drugs
- `iv_units`
Units of `iv_ddd`
LOINC:
- `loinc`
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
[`ab_loinc()`](https://amr-for-r.org/reference/ab_property.md) to
retrieve them quickly, see
[`ab_property()`](https://amr-for-r.org/reference/ab_property.md).
### For the antivirals data set: a [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 120 observations and 11 variables:
- `av`
Antiviral ID as used in this package (such as `ACI`), using the
official EARS-Net (European Antimicrobial Resistance Surveillance
Network) codes where available. ***This is a unique identifier.***
Combinations are codes that contain a `+` to indicate this, such as
`ATA+COBI` for atazanavir/cobicistat.
- `name`
Official name as used by WHONET/EARS-Net or the WHO. ***This is a
unique identifier.***
- `atc`
ATC codes (Anatomical Therapeutic Chemical) as defined by the WHOCC,
see *Details*
- `cid`
Compound ID as found in PubChem. ***This is a unique identifier.***
- `atc_group`
Official pharmacological subgroup (3rd level ATC code) as defined by
the WHOCC
- `synonyms`
Synonyms (often trade names) of a drug, as found in PubChem based on
their compound ID
- `oral_ddd`
Defined Daily Dose (DDD), oral treatment
- `oral_units`
Units of `oral_ddd`
- `iv_ddd`
Defined Daily Dose (DDD), parenteral treatment
- `iv_units`
Units of `iv_ddd`
- `loinc`
All codes associated with the name of the antiviral drug from Logical
Observation Identifiers Names and Codes (LOINC), Version 2.76 (18
September, 2023). Use
[`av_loinc()`](https://amr-for-r.org/reference/av_property.md) to
retrieve them quickly, see
[`av_property()`](https://amr-for-r.org/reference/av_property.md).
An object of class `deprecated_amr_dataset` (inherits from `tbl_df`,
`tbl`, `data.frame`) with 498 rows and 14 columns.
An object of class `tbl_df` (inherits from `tbl`, `data.frame`) with 120
rows and 11 columns.
## Source
- WHO Collaborating Centre for Drug Statistics Methodology, Guidelines
for ATC classification and DDD assignment, Oslo Accessed from
<https://atcddd.fhi.no/atc_ddd_index/> on May 4th, 2025.
- Logical Observation Identifiers Names and Codes (LOINC), Version 2.76
(18 September, 2023). Accessed from <https://loinc.org> on October
19th, 2023.
- European Commission Public Health PHARMACEUTICALS - COMMUNITY
REGISTER:
<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>
## Details
Properties that are based on an ATC code are only available when an ATC
is available. These properties are: `atc_group1`, `atc_group2`,
`oral_ddd`, `oral_units`, `iv_ddd` and `iv_units`. Do note that ATC
codes are not unique. For example, J01CR02 is officially the ATC code
for "amoxicillin and beta-lactamase inhibitor". Consequently, these two
items from the antimicrobials data set both return `"J01CR02"`:
ab_atc("amoxicillin/clavulanic acid")
ab_atc("amoxicillin/sulbactam")
Synonyms (i.e. trade names) were derived from the PubChem Compound ID
(column `cid`) and are consequently only available where a CID is
available.
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## WHOCC
This package contains **all ~550 antibiotic, antimycotic and antiviral
drugs** and their Anatomical Therapeutic Chemical (ATC) codes, ATC
groups and Defined Daily Dose (DDD) from the World Health Organization
Collaborating Centre for Drug Statistics Methodology (WHOCC,
<https://atcddd.fhi.no>) and the Pharmaceuticals Community Register of
the European Commission
(<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>).
These have become the gold standard for international drug utilisation
monitoring and research.
The WHOCC is located in Oslo at the Norwegian Institute of Public Health
and funded by the Norwegian government. The European Commission is the
executive of the European Union and promotes its general interest.
**NOTE: The WHOCC copyright does not allow use for commercial purposes,
unlike any other info from this package.** See
<https://atcddd.fhi.no/copyright_disclaimer/.>
## See also
[microorganisms](https://amr-for-r.org/reference/microorganisms.md),
[intrinsic_resistant](https://amr-for-r.org/reference/intrinsic_resistant.md)
## Examples
``` r
antimicrobials
#> # A tibble: 498 × 14
#> ab cid name group atc atc_group1 atc_group2 abbreviations synonyms
#> <ab> <dbl> <chr> <chr> <lis> <chr> <chr> <list> <named >
#> 1 AMA 4649 4-ami… Anti… <chr> Drugs for… Aminosali… <chr [1]> <chr>
#> 2 ACM 6450012 Acety… Macr… <chr> NA NA <chr [1]> <chr>
#> 3 ASP 49787020 Acety… Macr… <chr> NA NA <chr [1]> <chr>
#> 4 ALS 8954 Aldes… Othe… <chr> Drugs for… Drugs for… <chr [1]> <chr>
#> 5 AMK 37768 Amika… Amin… <chr> Aminoglyc… Other ami… <chr [6]> <chr>
#> 6 AKF NA Amika… Amin… <chr> NA NA <chr [1]> <chr>
#> 7 AMO 54260 Amoro… Anti… <chr> Antifunga… Other ant… <chr [1]> <chr>
#> 8 AMX 33613 Amoxi… Beta… <chr> Beta-lact… Penicilli… <chr [4]> <chr>
#> 9 AMC 23665637 Amoxi… Beta… <chr> Beta-lact… Combinati… <chr [6]> <chr>
#> 10 AXS 465441 Amoxi… Beta… <chr> NA NA <chr [1]> <chr>
#> # 488 more rows
#> # 5 more variables: oral_ddd <dbl>, oral_units <chr>, iv_ddd <dbl>,
#> # iv_units <chr>, loinc <list>
antivirals
#> # A tibble: 120 × 11
#> av name atc cid atc_group synonyms oral_ddd oral_units iv_ddd
#> <av> <chr> <chr> <dbl> <chr> <list> <dbl> <chr> <dbl>
#> 1 ABA Abacavir J05A… 4.41e5 Nucleosi… <chr> 0.6 g NA
#> 2 ACI Aciclovir J05A… 1.35e8 Nucleosi… <chr> 4 g 4
#> 3 ADD Adefovir… J05A… 6.09e4 Nucleosi… <chr> 10 mg NA
#> 4 AME Amenamev… J05A… 1.14e7 Other an… <chr> 0.4 g NA
#> 5 AMP Amprenav… J05A… 6.50e4 Protease… <chr> 1.2 g NA
#> 6 ASU Asunapre… J05A… 1.61e7 Antivira… <chr> 0.2 g NA
#> 7 ATA Atazanav… J05A… 1.48e5 Protease… <chr> 0.3 g NA
#> 8 ATA+COBI Atazanav… J05A… 8.66e7 Antivira… <chr> NA NA NA
#> 9 ATA+RIT Atazanav… J05A… 2.51e7 Antivira… <chr> 0.3 g NA
#> 10 BAM Baloxavi… J05A… 1.24e8 Other an… <chr> 40 mg NA
#> # 110 more rows
#> # 2 more variables: iv_units <chr>, loinc <list>
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

222
reference/as.ab.md Normal file
View File

@@ -0,0 +1,222 @@
# Transform Input to an Antibiotic ID
Use this function to determine the antimicrobial drug code of one or
more antimicrobials. The data set
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md) will
be searched for abbreviations, official names and synonyms (brand
names).
## Usage
``` r
as.ab(x, flag_multiple_results = TRUE, language = get_AMR_locale(),
info = interactive(), ...)
is.ab(x)
ab_reset_session()
```
## Arguments
- x:
A [character](https://rdrr.io/r/base/character.html) vector to
determine to antibiotic ID.
- flag_multiple_results:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
note should be printed to the console that probably more than one
antibiotic drug code or name can be retrieved from a single input
value.
- language:
Language to coerce input values from any of the 28 supported
languages - default to the system language if supported (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md)).
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
progress bar should be printed - the default is `TRUE` only in
interactive mode.
- ...:
Arguments passed on to internal functions.
## Value
A [character](https://rdrr.io/r/base/character.html)
[vector](https://rdrr.io/r/base/vector.html) with additional class `ab`
## Details
All entries in the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md) data
set have three different identifiers: a human readable EARS-Net code
(column `ab`, used by ECDC and WHONET), an ATC code (column `atc`, used
by WHO), and a CID code (column `cid`, Compound ID, used by PubChem).
The data set contains more than 5,000 official brand names from many
different countries, as found in PubChem. Not that some drugs contain
multiple ATC codes.
All these properties will be searched for the user input. The `as.ab()`
can correct for different forms of misspelling:
- Wrong spelling of drug names (such as "tobramicin" or "gentamycin"),
which corrects for most audible similarities such as f/ph, x/ks,
c/z/s, t/th, etc.
- Too few or too many vowels or consonants
- Switching two characters (such as "mreopenem", often the case in
clinical data, when doctors typed too fast)
- Digitalised paper records, leaving artefacts like 0/o/O (zero and
O's), B/8, n/r, etc.
Use the [`ab_*`](https://amr-for-r.org/reference/ab_property.md)
functions to get properties based on the returned antibiotic ID, see
*Examples*.
Note: the `as.ab()` and
[`ab_*`](https://amr-for-r.org/reference/ab_property.md) functions may
use very long regular expression to match brand names of antimicrobial
drugs. This may fail on some systems.
You can add your own manual codes to be considered by `as.ab()` and all
[`ab_*`](https://amr-for-r.org/reference/ab_property.md) functions, see
[`add_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md).
## Source
World Health Organization (WHO) Collaborating Centre for Drug Statistics
Methodology: <https://atcddd.fhi.no/atc_ddd_index/>
European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER:
<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>
## WHOCC
This package contains **all ~550 antibiotic, antimycotic and antiviral
drugs** and their Anatomical Therapeutic Chemical (ATC) codes, ATC
groups and Defined Daily Dose (DDD) from the World Health Organization
Collaborating Centre for Drug Statistics Methodology (WHOCC,
<https://atcddd.fhi.no>) and the Pharmaceuticals Community Register of
the European Commission
(<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>).
These have become the gold standard for international drug utilisation
monitoring and research.
The WHOCC is located in Oslo at the Norwegian Institute of Public Health
and funded by the Norwegian government. The European Commission is the
executive of the European Union and promotes its general interest.
**NOTE: The WHOCC copyright does not allow use for commercial purposes,
unlike any other info from this package.** See
<https://atcddd.fhi.no/copyright_disclaimer/.>
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
- [antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
for the [data.frame](https://rdrr.io/r/base/data.frame.html) that is
being used to determine ATCs
- [`ab_from_text()`](https://amr-for-r.org/reference/ab_from_text.md)
for a function to retrieve antimicrobial drugs from clinical text
(from health care records)
## Examples
``` r
# these examples all return "ERY", the ID of erythromycin:
as.ab("J01FA01")
#> Class 'ab'
#> [1] ERY
as.ab("J 01 FA 01")
#> Class 'ab'
#> [1] ERY
as.ab("Erythromycin")
#> Class 'ab'
#> [1] ERY
as.ab("eryt")
#> Class 'ab'
#> [1] ERY
as.ab("ERYT")
#> Class 'ab'
#> [1] ERY
as.ab("ERY")
#> Class 'ab'
#> [1] ERY
as.ab("eritromicine") # spelled wrong, yet works
#> Class 'ab'
#> [1] ERY
as.ab("Erythrocin") # trade name
#> Class 'ab'
#> [1] ERY
# spelling from different languages and dyslexia are no problem
ab_atc("ceftriaxon")
#> [1] "J01DD04" "QJ01DD04"
ab_atc("cephtriaxone") # small spelling error
#> [1] "J01DD04" "QJ01DD04"
ab_atc("cephthriaxone") # or a bit more severe
#> [1] "J01DD04" "QJ01DD04"
ab_atc("seephthriaaksone") # and even this works
#> [1] "J01DD04" "QJ01DD04"
# use ab_* functions to get a specific properties (see ?ab_property);
# they use as.ab() internally:
ab_name("J01FA01")
#> [1] "Erythromycin"
ab_name("eryt")
#> [1] "Erythromycin"
# \donttest{
if (require("dplyr")) {
# you can quickly rename 'sir' columns using set_ab_names() with dplyr:
example_isolates %>%
set_ab_names(where(is.sir), property = "atc")
}
#> # A tibble: 2,000 × 46
#> date patient age gender ward mo J01CE01 J01CF04 J01CF05
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S
#> # 1,990 more rows
#> # 37 more variables: J01CA04 <sir>, J01CR02 <sir>, J01CA01 <sir>,
#> # J01CR05 <sir>, J01DB04 <sir>, J01DE01 <sir>, J01DC02 <sir>, J01DC01 <sir>,
#> # J01DD01 <sir>, J01DD02 <sir>, J01DD04 <sir>, J01GB03 <sir>, J01GB01 <sir>,
#> # J01GB06 <sir>, J01GB04 <sir>, J01EA01 <sir>, J01EE01 <sir>, J01XE01 <sir>,
#> # J01XX01 <sir>, J01XX08 <sir>, J01MA02 <sir>, J01MA14 <sir>, J01XA01 <sir>,
#> # J01XA02 <sir>, J01AA07 <sir>, J01AA12 <sir>, J01AA02 <sir>, …
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

177
reference/as.av.md Normal file
View File

@@ -0,0 +1,177 @@
# Transform Input to an Antiviral Drug ID
Use this function to determine the antiviral drug code of one or more
antiviral drugs. The data set
[antivirals](https://amr-for-r.org/reference/antimicrobials.md) will be
searched for abbreviations, official names and synonyms (brand names).
## Usage
``` r
as.av(x, flag_multiple_results = TRUE, info = interactive(), ...)
is.av(x)
```
## Arguments
- x:
A [character](https://rdrr.io/r/base/character.html) vector to
determine to antiviral drug ID.
- flag_multiple_results:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
note should be printed to the console that probably more than one
antiviral drug code or name can be retrieved from a single input
value.
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
progress bar should be printed - the default is `TRUE` only in
interactive mode.
- ...:
Arguments passed on to internal functions.
## Value
A [character](https://rdrr.io/r/base/character.html)
[vector](https://rdrr.io/r/base/vector.html) with additional class
[`ab`](https://amr-for-r.org/reference/as.ab.md)
## Details
All entries in the
[antivirals](https://amr-for-r.org/reference/antimicrobials.md) data set
have three different identifiers: a human readable EARS-Net code (column
`ab`, used by ECDC and WHONET), an ATC code (column `atc`, used by WHO),
and a CID code (column `cid`, Compound ID, used by PubChem). The data
set contains more than 5,000 official brand names from many different
countries, as found in PubChem. Not that some drugs contain multiple ATC
codes.
All these properties will be searched for the user input. The `as.av()`
can correct for different forms of misspelling:
- Wrong spelling of drug names (such as "acyclovir"), which corrects for
most audible similarities such as f/ph, x/ks, c/z/s, t/th, etc.
- Too few or too many vowels or consonants
- Switching two characters (such as "aycclovir", often the case in
clinical data, when doctors typed too fast)
- Digitalised paper records, leaving artefacts like 0/o/O (zero and
O's), B/8, n/r, etc.
Use the [`av_*`](https://amr-for-r.org/reference/av_property.md)
functions to get properties based on the returned antiviral drug ID, see
*Examples*.
Note: the `as.av()` and
[`av_*`](https://amr-for-r.org/reference/av_property.md) functions may
use very long regular expression to match brand names of antimicrobial
drugs. This may fail on some systems.
## Source
World Health Organization (WHO) Collaborating Centre for Drug Statistics
Methodology: <https://atcddd.fhi.no/atc_ddd_index/>
European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER:
<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>
## WHOCC
This package contains **all ~550 antibiotic, antimycotic and antiviral
drugs** and their Anatomical Therapeutic Chemical (ATC) codes, ATC
groups and Defined Daily Dose (DDD) from the World Health Organization
Collaborating Centre for Drug Statistics Methodology (WHOCC,
<https://atcddd.fhi.no>) and the Pharmaceuticals Community Register of
the European Commission
(<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>).
These have become the gold standard for international drug utilisation
monitoring and research.
The WHOCC is located in Oslo at the Norwegian Institute of Public Health
and funded by the Norwegian government. The European Commission is the
executive of the European Union and promotes its general interest.
**NOTE: The WHOCC copyright does not allow use for commercial purposes,
unlike any other info from this package.** See
<https://atcddd.fhi.no/copyright_disclaimer/.>
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
- [antivirals](https://amr-for-r.org/reference/antimicrobials.md) for
the [data.frame](https://rdrr.io/r/base/data.frame.html) that is being
used to determine ATCs
- [`av_from_text()`](https://amr-for-r.org/reference/av_from_text.md)
for a function to retrieve antimicrobial drugs from clinical text
(from health care records)
## Examples
``` r
# these examples all return "ACI", the ID of aciclovir:
as.av("J05AB01")
#> Class 'av'
#> [1] ACI
as.av("J 05 AB 01")
#> Class 'av'
#> [1] ACI
as.av("Aciclovir")
#> Class 'av'
#> [1] ACI
as.av("aciclo")
#> Class 'av'
#> [1] ACI
as.av(" aciclo 123")
#> Class 'av'
#> [1] ACI
as.av("ACICL")
#> Class 'av'
#> [1] ACI
as.av("ACI")
#> Class 'av'
#> [1] ACI
as.av("Virorax") # trade name
#> Class 'av'
#> [1] ACI
as.av("Zovirax") # trade name
#> Class 'av'
#> [1] ACI
as.av("acyklofir") # severe spelling error, yet works
#> Class 'av'
#> [1] ACI
# use av_* functions to get a specific properties (see ?av_property);
# they use as.av() internally:
av_name("J05AB01")
#> [1] "Aciclovir"
av_name("acicl")
#> [1] "Aciclovir"
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

96
reference/as.disk.md Normal file
View File

@@ -0,0 +1,96 @@
# Transform Input to Disk Diffusion Diameters
This transforms a vector to a new class `disk`, which is a disk
diffusion growth zone size (around an antibiotic disk) in millimetres
between 0 and 50.
## Usage
``` r
as.disk(x, na.rm = FALSE)
NA_disk_
is.disk(x)
```
## Format
An object of class `disk` (inherits from `integer`) of length 1.
## Arguments
- x:
Vector.
- na.rm:
A [logical](https://rdrr.io/r/base/logical.html) indicating whether
missing values should be removed.
## Value
An [integer](https://rdrr.io/r/base/integer.html) with additional class
`disk`
## Details
Interpret disk values as SIR values with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md). It supports
guidelines from EUCAST and CLSI.
Disk diffusion growth zone sizes must be between 0 and 50 millimetres.
Values higher than 50 but lower than 100 will be maximised to 50. All
others input values outside the 0-50 range will return `NA`.
`NA_disk_` is a missing value of the new `disk` class.
## See also
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
## Examples
``` r
# transform existing disk zones to the `disk` class (using base R)
df <- data.frame(
microorganism = "Escherichia coli",
AMP = 20,
CIP = 14,
GEN = 18,
TOB = 16
)
df[, 2:5] <- lapply(df[, 2:5], as.disk)
str(df)
#> 'data.frame': 1 obs. of 5 variables:
#> $ microorganism: chr "Escherichia coli"
#> $ AMP : 'disk' int 20
#> $ CIP : 'disk' int 14
#> $ GEN : 'disk' int 18
#> $ TOB : 'disk' int 16
# \donttest{
# transforming is easier with dplyr:
if (require("dplyr")) {
df %>% mutate(across(AMP:TOB, as.disk))
}
#> microorganism AMP CIP GEN TOB
#> 1 Escherichia coli 20 14 18 16
# }
# interpret disk values, see ?as.sir
as.sir(
x = as.disk(18),
mo = "Strep pneu", # `mo` will be coerced with as.mo()
ab = "ampicillin", # and `ab` with as.ab()
guideline = "EUCAST"
)
#> Class 'sir'
#> [1] R
# interpret whole data set, pretend to be all from urinary tract infections:
as.sir(df, uti = TRUE)
#> microorganism AMP CIP GEN TOB
#> 1 Escherichia coli S <NA> S S
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

232
reference/as.mic.md Normal file
View File

@@ -0,0 +1,232 @@
# Transform Input to Minimum Inhibitory Concentrations (MIC)
This transforms vectors to a new class `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.
## Usage
``` r
as.mic(x, na.rm = FALSE, keep_operators = "all")
is.mic(x)
NA_mic_
rescale_mic(x, mic_range, keep_operators = "edges", as.mic = TRUE)
mic_p50(x, na.rm = FALSE, ...)
mic_p90(x, na.rm = FALSE, ...)
# S3 method for class 'mic'
droplevels(x, as.mic = FALSE, ...)
```
## Arguments
- x:
A [character](https://rdrr.io/r/base/character.html) or
[numeric](https://rdrr.io/r/base/numeric.html) vector.
- na.rm:
A [logical](https://rdrr.io/r/base/logical.html) indicating whether
missing values should be removed.
- keep_operators:
A [character](https://rdrr.io/r/base/character.html) specifying how to
handle operators (such as `>` and `<=`) in the input. Accepts one of
three values: `"all"` (or `TRUE`) to keep all operators, `"none"` (or
`FALSE`) to remove all operators, or `"edges"` to keep operators only
at both ends of the range.
- mic_range:
A manual range to rescale the MIC values, e.g.,
`mic_range = c(0.001, 32)`. Use `NA` to prevent rescaling on one side,
e.g., `mic_range = c(NA, 32)`.
- as.mic:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the `mic` class should be kept - the default is `TRUE` for
`rescale_mic()` and `FALSE` for
[`droplevels()`](https://rdatatable.gitlab.io/data.table/reference/fdroplevels.html).
When setting this to `FALSE` in `rescale_mic()`, the output will have
factor levels that acknowledge `mic_range`.
- ...:
Arguments passed on to methods.
## Value
Ordered [factor](https://rdrr.io/r/base/factor.html) with additional
class `mic`, that in mathematical operations acts as a
[numeric](https://rdrr.io/r/base/numeric.html) vector. Bear in mind that
the outcome of any mathematical operation on MICs will return a
[numeric](https://rdrr.io/r/base/numeric.html) value.
## Details
To interpret MIC values as SIR values, use
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) on MIC values.
It supports guidelines from EUCAST (2011-2025) and CLSI (2011-2025).
This class for MIC values is a quite a special data type: formally it is
an ordered [factor](https://rdrr.io/r/base/factor.html) with valid MIC
values as [factor](https://rdrr.io/r/base/factor.html) levels (to make
sure only valid MIC values are retained), but for any mathematical
operation it acts as decimal numbers:
x <- random_mic(10)
x
#> Class 'mic'
#> [1] 16 1 8 8 64 >=128 0.0625 32 32 16
is.factor(x)
#> [1] TRUE
x[1] * 2
#> [1] 32
median(x)
#> [1] 26
This makes it possible to maintain operators that often come with MIC
values, such "\>=" and "\<=", even when filtering using
[numeric](https://rdrr.io/r/base/numeric.html) values in data analysis,
e.g.:
x[x > 4]
#> Class 'mic'
#> [1] 16 8 8 64 >=128 32 32 16
df <- data.frame(x, hospital = "A")
subset(df, x > 4) # or with dplyr: df %>% filter(x > 4)
#> x hospital
#> 1 16 A
#> 5 64 A
#> 6 >=128 A
#> 8 32 A
#> 9 32 A
#> 10 16 A
All so-called [group generic
functions](https://rdrr.io/r/base/groupGeneric.html) are implemented for
the MIC class (such as `!`, `!=`, `<`, `>=`,
[`exp()`](https://rdrr.io/r/base/Log.html),
[`log2()`](https://rdrr.io/r/base/Log.html)). Some mathematical
functions are also implemented (such as
[`quantile()`](https://rdrr.io/r/stats/quantile.html),
[`median()`](https://rdrr.io/r/stats/median.html),
[`fivenum()`](https://rdrr.io/r/stats/fivenum.html)). Since
[`sd()`](https://rdrr.io/r/stats/sd.html) and
[`var()`](https://rdrr.io/r/stats/cor.html) are non-generic functions,
these could not be extended. Use
[`mad()`](https://rdrr.io/r/stats/mad.html) as an alternative, or use
e.g. `sd(as.numeric(x))` where `x` is your vector of MIC values.
Using [`as.double()`](https://rdrr.io/r/base/double.html) or
[`as.numeric()`](https://rdrr.io/r/base/numeric.html) on MIC values will
remove the operators and return a numeric vector. Do **not** use
[`as.integer()`](https://rdrr.io/r/base/integer.html) on MIC values as
by the R convention on [factor](https://rdrr.io/r/base/factor.html)s, it
will return the index of the factor levels (which is often useless for
regular users).
The function `is.mic()` detects if the input contains class `mic`. If
the input is a [data.frame](https://rdrr.io/r/base/data.frame.html) or
[list](https://rdrr.io/r/base/list.html), it iterates over all
columns/items and returns a
[logical](https://rdrr.io/r/base/logical.html) vector.
Use
[`droplevels()`](https://rdatatable.gitlab.io/data.table/reference/fdroplevels.html)
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 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()`](https://amr-for-r.org/reference/plot.md) functions to
plot MIC values. They allows custom MIC ranges and to plot intermediate
log2 levels for missing MIC values.
`NA_mic_` is a missing value of the new `mic` class, analogous to e.g.
base R's [`NA_character_`](https://rdrr.io/r/base/NA.html).
Use `mic_p50()` and `mic_p90()` to get the 50th and 90th percentile of
MIC values. They return 'normal'
[numeric](https://rdrr.io/r/base/numeric.html) values.
## See also
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
## Examples
``` r
mic_data <- as.mic(c(">=32", "1.0", "1", "1.00", 8, "<=0.128", "8", "16", "16"))
mic_data
#> Class 'mic'
#> [1] >=32 1 1 1 8 <=0.128 8 16 16
is.mic(mic_data)
#> [1] TRUE
# this can also coerce combined MIC/SIR values:
as.mic("<=0.002; S")
#> Class 'mic'
#> [1] <=0.002
# mathematical processing treats MICs as numeric values
fivenum(mic_data)
#> [1] 0.128 1.000 8.000 16.000 32.000
quantile(mic_data)
#> 0% 25% 50% 75% 100%
#> 0.128 1.000 8.000 16.000 32.000
all(mic_data < 512)
#> [1] TRUE
# rescale MICs using rescale_mic()
rescale_mic(mic_data, mic_range = c(4, 16))
#> Class 'mic'
#> [1] >=16 <=4 <=4 <=4 8 <=4 8 >=16 >=16
# interpret MIC values
as.sir(
x = as.mic(2),
mo = as.mo("Streptococcus pneumoniae"),
ab = "AMX",
guideline = "EUCAST"
)
#> Class 'sir'
#> [1] R
as.sir(
x = as.mic(c(0.01, 2, 4, 8)),
mo = as.mo("Streptococcus pneumoniae"),
ab = "AMX",
guideline = "EUCAST"
)
#> Class 'sir'
#> [1] S R R R
# plot MIC values, see ?plot
plot(mic_data)
plot(mic_data, mo = "E. coli", ab = "cipro")
if (require("ggplot2")) {
autoplot(mic_data, mo = "E. coli", ab = "cipro")
}
if (require("ggplot2")) {
autoplot(mic_data, mo = "E. coli", ab = "cipro", language = "nl") # Dutch
}
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

599
reference/as.mo.md Normal file
View File

@@ -0,0 +1,599 @@
# Transform Arbitrary Input to Valid Microbial Taxonomy
Use this function to get a valid microorganism code (`mo`) based on
arbitrary user input. Determination is done using intelligent rules and
the complete taxonomic tree of the kingdoms Animalia, Archaea, Bacteria,
Chromista, and Protozoa, and most microbial species from the kingdom
Fungi (see *Source*). The input can be almost anything: a full name
(like `"Staphylococcus aureus"`), an abbreviated name (such as
`"S. aureus"`), an abbreviation known in the field (such as `"MRSA"`),
or just a genus. See *Examples*.
## Usage
``` r
as.mo(x, Becker = FALSE, Lancefield = FALSE,
minimum_matching_score = NULL,
keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
reference_df = get_mo_source(),
ignore_pattern = getOption("AMR_ignore_pattern", NULL),
cleaning_regex = getOption("AMR_cleaning_regex", mo_cleaning_regex()),
only_fungi = getOption("AMR_only_fungi", FALSE),
language = get_AMR_locale(), info = interactive(), ...)
is.mo(x)
mo_uncertainties()
mo_renamed()
mo_failures()
mo_reset_session()
mo_cleaning_regex()
```
## Arguments
- x:
A [character](https://rdrr.io/r/base/character.html) vector or a
[data.frame](https://rdrr.io/r/base/data.frame.html) with one or two
columns.
- Becker:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
staphylococci should be categorised into coagulase-negative
staphylococci ("CoNS") and coagulase-positive staphylococci ("CoPS")
instead of their own species, according to Karsten Becker *et al.*
(see *Source*). Please see *Details* for a full list of staphylococcal
species that will be converted.
This excludes *Staphylococcus aureus* at default, use `Becker = "all"`
to also categorise *S. aureus* as "CoPS".
- Lancefield:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
beta-haemolytic *Streptococcus* should be categorised into Lancefield
groups instead of their own species, according to Rebecca C.
Lancefield (see *Source*). These streptococci will be categorised in
their first group, e.g. *Streptococcus dysgalactiae* will be group C,
although officially it was also categorised into groups G and L. .
Please see *Details* for a full list of streptococcal species that
will be converted.
This excludes enterococci at default (who are in group D), use
`Lancefield = "all"` to also categorise all enterococci as group D.
- minimum_matching_score:
A numeric value to set as the lower limit for the [MO matching
score](https://amr-for-r.org/reference/mo_matching_score.md). When
left blank, this will be determined automatically based on the
character length of `x`, its [taxonomic
kingdom](https://amr-for-r.org/reference/microorganisms.md) and [human
pathogenicity](https://amr-for-r.org/reference/mo_matching_score.md).
- keep_synonyms:
A [logical](https://rdrr.io/r/base/logical.html) to indicate if old,
previously valid taxonomic names must be preserved and not be
corrected to currently accepted names. The default is `FALSE`, which
will return a note if old taxonomic names were processed. The default
can be set with the package option
[`AMR_keep_synonyms`](https://amr-for-r.org/reference/AMR-options.md),
i.e. `options(AMR_keep_synonyms = TRUE)` or
`options(AMR_keep_synonyms = FALSE)`.
- reference_df:
A [data.frame](https://rdrr.io/r/base/data.frame.html) to be used for
extra reference when translating `x` to a valid `mo`. See
[`set_mo_source()`](https://amr-for-r.org/reference/mo_source.md) and
[`get_mo_source()`](https://amr-for-r.org/reference/mo_source.md) to
automate the usage of your own codes (e.g. used in your analysis or
organisation).
- ignore_pattern:
A Perl-compatible [regular
expression](https://rdrr.io/r/base/regex.html) (case-insensitive) of
which all matches in `x` must return `NA`. This can be convenient to
exclude known non-relevant input and can also be set with the package
option
[`AMR_ignore_pattern`](https://amr-for-r.org/reference/AMR-options.md),
e.g.
`options(AMR_ignore_pattern = "(not reported|contaminated flora)")`.
- cleaning_regex:
A Perl-compatible [regular
expression](https://rdrr.io/r/base/regex.html) (case-insensitive) to
clean the input of `x`. Every matched part in `x` will be removed. At
default, this is the outcome of `mo_cleaning_regex()`, which removes
texts between brackets and texts such as "species" and "serovar". The
default can be set with the package option
[`AMR_cleaning_regex`](https://amr-for-r.org/reference/AMR-options.md).
- only_fungi:
A [logical](https://rdrr.io/r/base/logical.html) to indicate if only
fungi must be found, making sure that e.g. misspellings always return
records from the kingdom of Fungi. This can be set globally for [all
microorganism
functions](https://amr-for-r.org/reference/mo_property.md) with the
package option
[`AMR_only_fungi`](https://amr-for-r.org/reference/AMR-options.md),
i.e. `options(AMR_only_fungi = TRUE)`.
- language:
Language to translate text like "no growth", which defaults to the
system language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md)).
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate that info
must be printed, e.g. a progress bar when more than 25 items are to be
coerced, or a list with old taxonomic names. The default is `TRUE`
only in interactive mode.
- ...:
Other arguments passed on to functions.
## Value
A [character](https://rdrr.io/r/base/character.html)
[vector](https://rdrr.io/r/base/vector.html) with additional class `mo`
## Details
A microorganism (MO) code from this package (class: `mo`) is
human-readable and typically looks like these examples:
Code Full name
--------------- --------------------------------------
B_KLBSL Klebsiella
B_KLBSL_PNMN Klebsiella pneumoniae
B_KLBSL_PNMN_RHNS Klebsiella pneumoniae rhinoscleromatis
| | | |
| | | |
| | | \---> subspecies, a 3-5 letter acronym
| | \----> species, a 3-6 letter acronym
| \----> genus, a 4-8 letter acronym
\----> kingdom: A (Archaea), AN (Animalia), B (Bacteria),
C (Chromista), F (Fungi), PL (Plantae),
P (Protozoa)
Values that cannot be coerced will be considered 'unknown' and will
return the MO code `UNKNOWN` with a warning.
Use the [`mo_*`](https://amr-for-r.org/reference/mo_property.md)
functions to get properties based on the returned code, see *Examples*.
The `as.mo()` function uses a novel and scientifically validated
([doi:10.18637/jss.v104.i03](https://doi.org/10.18637/jss.v104.i03) )
matching score algorithm (see *Matching Score for Microorganisms* below)
to match input against the [available microbial
taxonomy](https://amr-for-r.org/reference/microorganisms.md) in this
package. This implicates that e.g. `"E. coli"` (a microorganism highly
prevalent in humans) will return the microbial ID of *Escherichia coli*
and not *Entamoeba coli* (a microorganism less prevalent in humans),
although the latter would alphabetically come first.
### Coping with Uncertain Results
Results of non-exact taxonomic input are based on their [matching
score](https://amr-for-r.org/reference/mo_matching_score.md). The lowest
allowed score can be set with the `minimum_matching_score` argument. At
default this will be determined based on the character length of the
input, the [taxonomic
kingdom](https://amr-for-r.org/reference/microorganisms.md), and the
[human
pathogenicity](https://amr-for-r.org/reference/mo_matching_score.md) of
the taxonomic outcome. If values are matched with uncertainty, a message
will be shown to suggest the user to inspect the results with
`mo_uncertainties()`, which returns a
[data.frame](https://rdrr.io/r/base/data.frame.html) with all
specifications.
To increase the quality of matching, the `cleaning_regex` argument is
used to clean the input. This must be a [regular
expression](https://rdrr.io/r/base/regex.html) that matches parts of the
input that should be removed before the input is matched against the
[available microbial
taxonomy](https://amr-for-r.org/reference/microorganisms.md). It will be
matched Perl-compatible and case-insensitive. The default value of
`cleaning_regex` is the outcome of the helper function
`mo_cleaning_regex()`.
There are three helper functions that can be run after using the
`as.mo()` function:
- Use `mo_uncertainties()` to get a
[data.frame](https://rdrr.io/r/base/data.frame.html) that prints in a
pretty format with all taxonomic names that were guessed. The output
contains the matching score for all matches (see *Matching Score for
Microorganisms* below).
- Use `mo_failures()` to get a
[character](https://rdrr.io/r/base/character.html)
[vector](https://rdrr.io/r/base/vector.html) with all values that
could not be coerced to a valid value.
- Use `mo_renamed()` to get a
[data.frame](https://rdrr.io/r/base/data.frame.html) with all values
that could be coerced based on old, previously accepted taxonomic
names.
### For Mycologists
The [matching score
algorithm](https://amr-for-r.org/reference/mo_matching_score.md) gives
precedence to bacteria over fungi. If you are only analysing fungi, be
sure to use `only_fungi = TRUE`, or better yet, add this to your code
and run it once every session:
options(AMR_only_fungi = TRUE)
This will make sure that no bacteria or other 'non-fungi' will be
returned by `as.mo()`, or any of the
[`mo_*`](https://amr-for-r.org/reference/mo_property.md) functions.
### Coagulase-negative and Coagulase-positive Staphylococci
With `Becker = TRUE`, the following staphylococci will be converted to
their corresponding coagulase group:
- Coagulase-negative: *S. americanisciuri*, *S. argensis*, *S.
arlettae*, *S. auricularis*, *S. borealis*, *S. brunensis*, *S.
caeli*, *S. caledonicus*, *S. canis*, *S. capitis*, *S. capitis
capitis*, *S. capitis urealyticus*, *S. capitis ureolyticus*, *S.
caprae*, *S. carnosus*, *S. carnosus carnosus*, *S. carnosus utilis*,
*S. casei*, *S. caseolyticus*, *S. chromogenes*, *S. cohnii*, *S.
cohnii cohnii*, *S. cohnii urealyticum*, *S. cohnii urealyticus*, *S.
condimenti*, *S. croceilyticus*, *S. debuckii*, *S. devriesei*, *S.
durrellii*, *S. edaphicus*, *S. epidermidis*, *S. equorum*, *S.
equorum equorum*, *S. equorum linens*, *S. felis*, *S. fleurettii*,
*S. gallinarum*, *S. haemolyticus*, *S. hominis*, *S. hominis
hominis*, *S. hominis novobiosepticus*, *S. jettensis*, *S. kloosii*,
*S. lentus*, *S. lloydii*, *S. lugdunensis*, *S. marylandisciuri*, *S.
massiliensis*, *S. microti*, *S. muscae*, *S. nepalensis*, *S.
pasteuri*, *S. petrasii*, *S. petrasii croceilyticus*, *S. petrasii
jettensis*, *S. petrasii petrasii*, *S. petrasii pragensis*, *S.
pettenkoferi*, *S. piscifermentans*, *S. pragensis*, *S.
pseudoxylosus*, *S. pulvereri*, *S. ratti*, *S. rostri*, *S.
saccharolyticus*, *S. saprophyticus*, *S. saprophyticus bovis*, *S.
saprophyticus saprophyticus*, *S. schleiferi*, *S. schleiferi
schleiferi*, *S. sciuri*, *S. sciuri carnaticus*, *S. sciuri lentus*,
*S. sciuri rodentium*, *S. sciuri sciuri*, *S. shinii*, *S. simulans*,
*S. stepanovicii*, *S. succinus*, *S. succinus casei*, *S. succinus
succinus*, *S. taiwanensis*, *S. urealyticus*, *S. ureilyticus*, *S.
veratri*, *S. vitulinus*, *S. vitulus*, *S. warneri*, and *S. xylosus*
- Coagulase-positive: *S. agnetis*, *S. argenteus*, *S. coagulans*, *S.
cornubiensis*, *S. delphini*, *S. hyicus*, *S. hyicus chromogenes*,
*S. hyicus hyicus*, *S. intermedius*, *S. lutrae*, *S.
pseudintermedius*, *S. roterodami*, *S. schleiferi coagulans*, *S.
schweitzeri*, *S. simiae*, and *S. singaporensis*
This is based on:
- Becker K *et al.* (2014). **Coagulase-Negative Staphylococci.** *Clin
Microbiol Rev.* 27(4): 870-926;
[doi:10.1128/CMR.00109-13](https://doi.org/10.1128/CMR.00109-13)
- Becker K *et al.* (2019). **Implications of identifying the recently
defined members of the *S. aureus* complex, *S. argenteus* and *S.
schweitzeri*: A position paper of members of the ESCMID Study Group
for staphylococci and Staphylococcal Diseases (ESGS).** *Clin
Microbiol Infect*;
[doi:10.1016/j.cmi.2019.02.028](https://doi.org/10.1016/j.cmi.2019.02.028)
- Becker K *et al.* (2020). **Emergence of coagulase-negative
staphylococci.** *Expert Rev Anti Infect Ther.* 18(4):349-366;
[doi:10.1080/14787210.2020.1730813](https://doi.org/10.1080/14787210.2020.1730813)
For newly named staphylococcal species, such as *S. brunensis* (2024)
and *S. shinii* (2023), we looked up the scientific reference to make
sure the species are considered for the correct coagulase group.
### Lancefield Groups in Streptococci
With `Lancefield = TRUE`, the following streptococci will be converted
to their corresponding Lancefield group:
- Streptococcus Group A: *S. pyogenes*
- Streptococcus Group B: *S. agalactiae*
- Streptococcus Group C: *S. dysgalactiae*, *S. dysgalactiae
dysgalactiae*, *S. dysgalactiae equisimilis*, *S. equi*, *S. equi
equi*, *S. equi ruminatorum*, and *S. equi zooepidemicus*
- Streptococcus Group F: *S. anginosus*, *S. anginosus anginosus*, *S.
anginosus whileyi*, *S. constellatus*, *S. constellatus constellatus*,
*S. constellatus pharyngis*, *S. constellatus viborgensis*, and *S.
intermedius*
- Streptococcus Group G: *S. canis*, *S. dysgalactiae*, *S. dysgalactiae
dysgalactiae*, and *S. dysgalactiae equisimilis*
- Streptococcus Group H: *S. sanguinis*
- Streptococcus Group K: *S. salivarius*, *S. salivarius salivarius*,
and *S. salivarius thermophilus*
- Streptococcus Group L: *S. dysgalactiae*, *S. dysgalactiae
dysgalactiae*, and *S. dysgalactiae equisimilis*
This is based on:
- Lancefield RC (1933). **A serological differentiation of human and
other groups of hemolytic streptococci.** *J Exp Med.* 57(4): 571-95;
[doi:10.1084/jem.57.4.571](https://doi.org/10.1084/jem.57.4.571)
## Source
- Berends MS *et al.* (2022). **AMR: An R Package for Working with
Antimicrobial Resistance Data**. *Journal of Statistical Software*,
104(3), 1-31;
[doi:10.18637/jss.v104.i03](https://doi.org/10.18637/jss.v104.i03)
- Parte, AC *et al.* (2020). **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](https://doi.org/10.1099/ijsem.0.004332) .
Accessed from <https://lpsn.dsmz.de> on June 24th, 2024.
- Vincent, R *et al* (2013). **MycoBank gearing up for new horizons.**
IMA Fungus, 4(2), 371-9;
[doi:10.5598/imafungus.2013.04.02.16](https://doi.org/10.5598/imafungus.2013.04.02.16)
. Accessed from <https://www.mycobank.org> on June 24th, 2024.
- GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset
[doi:10.15468/39omei](https://doi.org/10.15468/39omei) . Accessed from
<https://www.gbif.org> on June 24th, 2024.
- Reimer, LC *et al.* (2022). ***BacDive* in 2022: the knowledge base
for standardized bacterial and archaeal data.** Nucleic Acids Res.,
50(D1):D741-D74;
[doi:10.1093/nar/gkab961](https://doi.org/10.1093/nar/gkab961) .
Accessed from <https://bacdive.dsmz.de> on July 16th, 2024.
- 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: <https://www.cdc.gov/phin/php/phinvads/>
- Bartlett A *et al.* (2022). **A comprehensive list of bacterial
pathogens infecting humans** *Microbiology* 168:001269;
[doi:10.1099/mic.0.001269](https://doi.org/10.1099/mic.0.001269)
## Matching Score for Microorganisms
With ambiguous user input in `as.mo()` and all the
[`mo_*`](https://amr-for-r.org/reference/mo_property.md) functions, the
returned results are chosen based on their matching score using
[`mo_matching_score()`](https://amr-for-r.org/reference/mo_matching_score.md).
This matching score \\m\\, is calculated as:
\$\$m\_{(x, n)} = \frac{l\_{n} - 0.5 \cdot \min \begin{cases}l\_{n} \\
\textrm{lev}(x, n)\end{cases}}{l\_{n} \cdot p\_{n} \cdot k\_{n}}\$\$
where:
- \\x\\ is the user input;
- \\n\\ is a taxonomic name (genus, species, and subspecies);
- \\l_n\\ is the length of \\n\\;
- \\lev\\ is the [Levenshtein distance
function](https://en.wikipedia.org/wiki/Levenshtein_distance)
(counting any insertion as 1, and any deletion or substitution as 2)
that is needed to change \\x\\ into \\n\\;
- \\p_n\\ is the human pathogenic prevalence group of \\n\\, as
described below;
- \\k_n\\ is the taxonomic kingdom of \\n\\, set as Bacteria = 1, Fungi
= 1.25, Protozoa = 1.5, Chromista = 1.75, Archaea = 2, others = 3.
The grouping into human pathogenic prevalence \\p\\ is based on recent
work from Bartlett *et al.* (2022,
[doi:10.1099/mic.0.001269](https://doi.org/10.1099/mic.0.001269) ) who
extensively studied medical-scientific literature to categorise all
bacterial species into these groups:
- **Established**, if a taxonomic species has infected at least three
persons in three or more references. These records have
`prevalence = 1.15` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set;
- **Putative**, if a taxonomic species has fewer than three known cases.
These records have `prevalence = 1.25` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set.
Furthermore,
- Genera from the World Health Organization's (WHO) Priority Pathogen
List have `prevalence = 1.0` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set;
- Any genus present in the **established** list also has
`prevalence = 1.15` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set;
- Any other genus present in the **putative** list has
`prevalence = 1.25` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set;
- Any other species or subspecies of which the genus is present in the
two aforementioned groups, has `prevalence = 1.5` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set;
- Any *non-bacterial* genus, species or subspecies of which the genus is
present in the following list, has `prevalence = 1.25` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set: *Absidia*, *Acanthamoeba*, *Acremonium*, *Actinomucor*,
*Aedes*, *Alternaria*, *Amoeba*, *Ancylostoma*, *Angiostrongylus*,
*Anisakis*, *Anopheles*, *Apophysomyces*, *Arthroderma*,
*Aspergillus*, *Aureobasidium*, *Basidiobolus*, *Beauveria*,
*Bipolaris*, *Blastobotrys*, *Blastocystis*, *Blastomyces*, *Candida*,
*Capillaria*, *Chaetomium*, *Chilomastix*, *Chrysonilia*,
*Chrysosporium*, *Cladophialophora*, *Cladosporium*, *Clavispora*,
*Coccidioides*, *Cokeromyces*, *Conidiobolus*, *Coniochaeta*,
*Contracaecum*, *Cordylobia*, *Cryptococcus*, *Cryptosporidium*,
*Cunninghamella*, *Curvularia*, *Cyberlindnera*, *Debaryozyma*,
*Demodex*, *Dermatobia*, *Dientamoeba*, *Diphyllobothrium*,
*Dirofilaria*, *Echinostoma*, *Entamoeba*, *Enterobius*,
*Epidermophyton*, *Exidia*, *Exophiala*, *Exserohilum*, *Fasciola*,
*Fonsecaea*, *Fusarium*, *Geotrichum*, *Giardia*, *Graphium*,
*Haloarcula*, *Halobacterium*, *Halococcus*, *Hansenula*,
*Hendersonula*, *Heterophyes*, *Histomonas*, *Histoplasma*, *Hortaea*,
*Hymenolepis*, *Hypomyces*, *Hysterothylacium*, *Kloeckera*,
*Kluyveromyces*, *Kodamaea*, *Lacazia*, *Leishmania*, *Lichtheimia*,
*Lodderomyces*, *Lomentospora*, *Madurella*, *Malassezia*,
*Malbranchea*, *Metagonimus*, *Meyerozyma*, *Microsporidium*,
*Microsporum*, *Millerozyma*, *Mortierella*, *Mucor*,
*Mycocentrospora*, *Nannizzia*, *Necator*, *Nectria*, *Ochroconis*,
*Oesophagostomum*, *Oidiodendron*, *Opisthorchis*, *Paecilomyces*,
*Paracoccidioides*, *Pediculus*, *Penicillium*, *Phaeoacremonium*,
*Phaeomoniella*, *Phialophora*, *Phlebotomus*, *Phoma*, *Pichia*,
*Piedraia*, *Pithomyces*, *Pityrosporum*, *Pneumocystis*,
*Pseudallescheria*, *Pseudoscopulariopsis*, *Pseudoterranova*,
*Pulex*, *Purpureocillium*, *Quambalaria*, *Rhinocladiella*,
*Rhizomucor*, *Rhizopus*, *Rhodotorula*, *Saccharomyces*, *Saksenaea*,
*Saprochaete*, *Sarcoptes*, *Scedosporium*, *Schistosoma*,
*Schizosaccharomyces*, *Scolecobasidium*, *Scopulariopsis*,
*Scytalidium*, *Spirometra*, *Sporobolomyces*, *Sporopachydermia*,
*Sporothrix*, *Sporotrichum*, *Stachybotrys*, *Strongyloides*,
*Syncephalastrum*, *Syngamus*, *Taenia*, *Talaromyces*, *Teleomorph*,
*Toxocara*, *Trichinella*, *Trichobilharzia*, *Trichoderma*,
*Trichomonas*, *Trichophyton*, *Trichosporon*, *Trichostrongylus*,
*Trichuris*, *Tritirachium*, *Trombicula*, *Trypanosoma*, *Tunga*,
*Ulocladium*, *Ustilago*, *Verticillium*, *Wallemia*, *Wangiella*,
*Wickerhamomyces*, *Wuchereria*, *Yarrowia*, or *Zygosaccharomyces*;
- All other records have `prevalence = 2.0` in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set.
When calculating the matching score, all characters in \\x\\ and \\n\\
are ignored that are other than A-Z, a-z, 0-9, spaces and parentheses.
All matches are sorted descending on their matching score and for all
user input values, the top match will be returned. This will lead to the
effect that e.g., `"E. coli"` will return the microbial ID of
*Escherichia coli* (\\m = 0.688\\, a highly prevalent microorganism
found in humans) and not *Entamoeba coli* (\\m = 0.381\\, a less
prevalent microorganism in humans), although the latter would
alphabetically come first.
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
[microorganisms](https://amr-for-r.org/reference/microorganisms.md) for
the [data.frame](https://rdrr.io/r/base/data.frame.html) that is being
used to determine ID's.
The [`mo_*`](https://amr-for-r.org/reference/mo_property.md) functions
(such as [`mo_genus()`](https://amr-for-r.org/reference/mo_property.md),
[`mo_gramstain()`](https://amr-for-r.org/reference/mo_property.md)) to
get properties based on the returned code.
## Examples
``` r
# \donttest{
# These examples all return "B_STPHY_AURS", the ID of S. aureus:
as.mo(c(
"sau", # WHONET code
"stau",
"STAU",
"staaur",
"S. aureus",
"S aureus",
"Sthafilokkockus aureus", # handles incorrect spelling
"Staphylococcus aureus (MRSA)",
"MRSA", # Methicillin Resistant S. aureus
"VISA", # Vancomycin Intermediate S. aureus
"VRSA", # Vancomycin Resistant S. aureus
115329001 # SNOMED CT code
))
#> Class 'mo'
#> [1] B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS
#> [6] B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS
#> [11] B_STPHY_AURS B_STPHY_AURS
# Dyslexia is no problem - these all work:
as.mo(c(
"Ureaplasma urealyticum",
"Ureaplasma urealyticus",
"Ureaplasmium urealytica",
"Ureaplazma urealitycium"
))
#> Class 'mo'
#> [1] B_URPLS_URLY B_URPLS_URLY B_URPLS_URLY B_URPLS_URLY
# input will get cleaned up with the input given in the `cleaning_regex` argument,
# which defaults to `mo_cleaning_regex()`:
cat(mo_cleaning_regex(), "\n")
#> ([^A-Za-z- \(\)\[\]{}]+|([({]|\[).+([})]|\])|(^| )( ?[a-z-]+[-](resistant|susceptible) ?|e?spp([^a-z]+|$)|e?ssp([^a-z]+|$)|serogr.?up[a-z]*|e?ss([^a-z]+|$)|e?sp([^a-z]+|$)|var([^a-z]+|$)|serovar[a-z]*|sube?species|biovar[a-z]*|e?species|Ig[ADEGM]|e?subsp|biotype|titer|dummy))
as.mo("Streptococcus group A")
#> Class 'mo'
#> [1] B_STRPT_GRPA
as.mo("S. epidermidis") # will remain species: B_STPHY_EPDR
#> Class 'mo'
#> [1] B_STPHY_EPDR
as.mo("S. epidermidis", Becker = TRUE) # will not remain species: B_STPHY_CONS
#> Class 'mo'
#> [1] B_STPHY_CONS
as.mo("S. pyogenes") # will remain species: B_STRPT_PYGN
#> Class 'mo'
#> [1] B_STRPT_PYGN
as.mo("S. pyogenes", Lancefield = TRUE) # will not remain species: B_STRPT_GRPA
#> Class 'mo'
#> [1] B_STRPT_GRPA
# All mo_* functions use as.mo() internally too (see ?mo_property):
mo_genus("E. coli")
#> [1] "Escherichia"
mo_gramstain("ESCO")
#> [1] "Gram-negative"
mo_is_intrinsic_resistant("ESCCOL", ab = "vanco")
#> Determining intrinsic resistance based on 'EUCAST Expected Resistant
#> Phenotypes' v1.2 (2023). This note will be shown once per session.
#> [1] TRUE
# }
```

View File

@@ -9,7 +9,7 @@ Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI 2011-2025,
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -415,10 +415,10 @@ Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI 2011-2025,
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 4 × 18</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> datetime index method ab_given mo_given host_given input_given</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494; font-style: italic;">&lt;dttm&gt;</span> <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span> </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 2025-10-13 <span style="color: #949494;">20:19:03</span> 1 MIC amoxicillin Escherich… human 8 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 2025-10-13 <span style="color: #949494;">20:19:03</span> 1 MIC cipro Escherich… human 0.256 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span> 2025-10-13 <span style="color: #949494;">20:19:03</span> 1 DISK tobra Escherich… human 16 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">4</span> 2025-10-13 <span style="color: #949494;">20:19:03</span> 1 DISK genta Escherich… human 18 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">1</span> 2025-11-24 <span style="color: #949494;">10:38:56</span> 1 MIC amoxicillin Escherich… human 8 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">2</span> 2025-11-24 <span style="color: #949494;">10:38:56</span> 1 MIC cipro Escherich… human 0.256 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">3</span> 2025-11-24 <span style="color: #949494;">10:38:56</span> 1 DISK tobra Escherich… human 16 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">4</span> 2025-11-24 <span style="color: #949494;">10:38:56</span> 1 DISK genta Escherich… human 18 </span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># 11 more variables: ab &lt;ab&gt;, mo &lt;mo&gt;, host &lt;chr&gt;, input &lt;chr&gt;,</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># outcome &lt;sir&gt;, notes &lt;chr&gt;, guideline &lt;chr&gt;, ref_table &lt;chr&gt;, uti &lt;lgl&gt;,</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># breakpoint_S_R &lt;chr&gt;, site &lt;chr&gt;</span></span>

916
reference/as.sir.md Normal file
View File

@@ -0,0 +1,916 @@
# Interpret MIC and Disk Diffusion as SIR, or Clean Existing SIR Data
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](https://rdrr.io/r/base/factor.html)
containing the levels `S`, `SDD`, `I`, `R`, `NI`.
Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI
2011-2025, see *Details*. All breakpoints used for interpretation are
available in our
[clinical_breakpoints](https://amr-for-r.org/reference/clinical_breakpoints.md)
data set.
## Usage
``` r
as.sir(x, ...)
NA_sir_
is.sir(x)
is_sir_eligible(x, threshold = 0.05)
# Default S3 method
as.sir(x, S = "^(S|U)+$", I = "^(I)+$", R = "^(R)+$",
NI = "^(N|NI|V)+$", SDD = "^(SDD|D|H)+$", info = interactive(), ...)
# S3 method for class 'mic'
as.sir(x, mo = NULL, ab = deparse(substitute(x)),
guideline = getOption("AMR_guideline", "EUCAST"), uti = NULL,
capped_mic_handling = getOption("AMR_capped_mic_handling", "standard"),
add_intrinsic_resistance = FALSE,
reference_data = AMR::clinical_breakpoints,
substitute_missing_r_breakpoint = getOption("AMR_substitute_missing_r_breakpoint",
FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL,
language = get_AMR_locale(), verbose = FALSE, info = interactive(),
conserve_capped_values = NULL, ...)
# S3 method for class 'disk'
as.sir(x, mo = NULL, ab = deparse(substitute(x)),
guideline = getOption("AMR_guideline", "EUCAST"), uti = NULL,
add_intrinsic_resistance = FALSE,
reference_data = AMR::clinical_breakpoints,
substitute_missing_r_breakpoint = getOption("AMR_substitute_missing_r_breakpoint",
FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL,
language = get_AMR_locale(), verbose = FALSE, info = interactive(),
...)
# S3 method for class 'data.frame'
as.sir(x, ..., col_mo = NULL,
guideline = getOption("AMR_guideline", "EUCAST"), uti = NULL,
capped_mic_handling = getOption("AMR_capped_mic_handling", "standard"),
add_intrinsic_resistance = FALSE,
reference_data = AMR::clinical_breakpoints,
substitute_missing_r_breakpoint = getOption("AMR_substitute_missing_r_breakpoint",
FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL,
language = get_AMR_locale(), verbose = FALSE, info = interactive(),
parallel = FALSE, max_cores = -1, conserve_capped_values = NULL)
sir_interpretation_history(clean = FALSE)
```
## Source
For interpretations of minimum inhibitory concentration (MIC) values and
disk diffusion diameters:
- **CLSI M39: Analysis and Presentation of Cumulative Antimicrobial
Susceptibility Test Data**, 2011-2025, *Clinical and Laboratory
Standards Institute* (CLSI).
<https://clsi.org/standards/products/microbiology/documents/m39/>.
- **CLSI M100: Performance Standard for Antimicrobial Susceptibility
Testing**, 2011-2025, *Clinical and Laboratory Standards Institute*
(CLSI).
<https://clsi.org/standards/products/microbiology/documents/m100/>.
- **CLSI VET01: Performance Standards for Antimicrobial Disk and
Dilution Susceptibility Tests for Bacteria Isolated From Animals**,
2019-2025, *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**, 2011-2025, *European Committee on Antimicrobial
Susceptibility Testing* (EUCAST).
<https://www.eucast.org/clinical_breakpoints>.
- **WHONET** as a source for machine-reading the clinical breakpoints
([read more
here](https://amr-for-r.org/reference/clinical_breakpoints.html#imported-from-whonet)),
1989-2025, *WHO Collaborating Centre for Surveillance of Antimicrobial
Resistance*. <https://whonet.org/>.
## Arguments
- x:
Vector of values (for class
[`mic`](https://amr-for-r.org/reference/as.mic.md): MIC values in
mg/L, for class [`disk`](https://amr-for-r.org/reference/as.disk.md):
a disk diffusion radius in millimetres).
- ...:
For using on a [data.frame](https://rdrr.io/r/base/data.frame.html):
selection of columns to apply `as.sir()` to. Supports [tidyselect
language](https://tidyselect.r-lib.org/reference/starts_with.html)
such as `where(is.mic)`, `starts_with(...)`, or `column1:column4`, and
can thus also be [antimicrobial
selectors](https://amr-for-r.org/reference/antimicrobial_selectors.md)
such as `as.sir(df, penicillins())`.
Otherwise: arguments passed on to methods.
- threshold:
Maximum fraction of invalid antimicrobial interpretations of `x`, see
*Examples*.
- S, I, R, NI, SDD:
A case-independent [regular
expression](https://rdrr.io/r/base/regex.html) to translate input to
this result. This regular expression will be run *after* all
non-letters and whitespaces are removed from the input.
- info:
A [logical](https://rdrr.io/r/base/logical.html) to print information
about the process, defaults to `TRUE` only in [interactive
sessions](https://rdrr.io/r/base/interactive.html).
- mo:
A vector (or column name) with
[character](https://rdrr.io/r/base/character.html)s that can be
coerced to valid microorganism codes with
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md), can be left
empty to determine it automatically.
- ab:
A vector (or column name) with
[character](https://rdrr.io/r/base/character.html)s that can be
coerced to a valid antimicrobial drug code with
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md).
- guideline:
A guideline name (or column name) to use for SIR interpretation.
Defaults to EUCAST 2025 (the latest implemented EUCAST guideline in
the
[clinical_breakpoints](https://amr-for-r.org/reference/clinical_breakpoints.md)
data set), but can be set with the package option
[`AMR_guideline`](https://amr-for-r.org/reference/AMR-options.md).
Currently supports EUCAST (2011-2025) and CLSI (2011-2025), see
*Details*. Using a column name allows for straightforward
interpretation of historical data, which must be analysed in the
context of, for example, different years.
- uti:
(Urinary Tract Infection) a vector (or column name) with
[logical](https://rdrr.io/r/base/logical.html)s (`TRUE` or `FALSE`) to
specify whether a UTI specific interpretation from the guideline
should be chosen. For using `as.sir()` on a
[data.frame](https://rdrr.io/r/base/data.frame.html), this can also be
a column containing [logical](https://rdrr.io/r/base/logical.html)s or
when left blank, the data set will be searched for a column
'specimen', and rows within this column containing 'urin' (such as
'urine', 'urina') will be regarded isolates from a UTI. See
*Examples*.
- capped_mic_handling:
A [character](https://rdrr.io/r/base/character.html) string that
controls how MIC values with a cap (i.e., starting with `<`, `<=`,
`>`, or `>=`) are interpreted. Supports the following options:
`"none"`
- `<=` and `>=` are treated as-is.
- `<` and `>` are treated as-is.
`"conservative"`
- `<=` and `>=` return `"NI"` (non-interpretable) if the MIC is within
the breakpoint guideline range.
- `<` always returns `"S"`, and `>` always returns `"R"`.
`"standard"` (default)
- `<=` and `>=` return `"NI"` (non-interpretable) if the MIC is within
the breakpoint guideline range.
- `<` and `>` are treated as-is.
`"inverse"`
- `<=` and `>=` are treated as-is.
- `<` always returns `"S"`, and `>` always returns `"R"`.
The default `"standard"` setting ensures cautious handling of
uncertain values while preserving interpretability. This option can
also be set with the package option
[`AMR_capped_mic_handling`](https://amr-for-r.org/reference/AMR-options.md).
- add_intrinsic_resistance:
*(only useful when using a EUCAST guideline)* a
[logical](https://rdrr.io/r/base/logical.html) 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](https://amr-for-r.org/reference/intrinsic_resistant.md)
data set, that itself is based on ['EUCAST Expert Rules' and 'EUCAST
Intrinsic Resistance and Unusual Phenotypes'
v3.3](https://www.eucast.org/expert_rules_and_expected_phenotypes)
(2021).
- reference_data:
A [data.frame](https://rdrr.io/r/base/data.frame.html) to be used for
interpretation, which defaults to the
[clinical_breakpoints](https://amr-for-r.org/reference/clinical_breakpoints.md)
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](https://amr-for-r.org/reference/clinical_breakpoints.md)
data set (same column names and column types). Please note that the
`guideline` argument will be ignored when `reference_data` is manually
set.
- substitute_missing_r_breakpoint:
A [logical](https://rdrr.io/r/base/logical.html) to indicate that a
missing clinical breakpoints for R (resistant) must be substituted
with R - the default is `FALSE`. Some (especially CLSI) breakpoints
only have a breakpoint for S, meaning that the outcome can only be
`"S"` or `NA`. Setting this to `TRUE` will convert the `NA`s in these
cases to `"R"`. Can also be set with the package option
[`AMR_substitute_missing_r_breakpoint`](https://amr-for-r.org/reference/AMR-options.md).
- include_screening:
A [logical](https://rdrr.io/r/base/logical.html) to indicate that
clinical breakpoints for screening are allowed - the default is
`FALSE`. Can also be set with the package option
[`AMR_include_screening`](https://amr-for-r.org/reference/AMR-options.md).
- include_PKPD:
A [logical](https://rdrr.io/r/base/logical.html) 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_include_PKPD`](https://amr-for-r.org/reference/AMR-options.md).
- breakpoint_type:
The type of breakpoints to use, either "ECOFF", "animal", or "human".
ECOFF stands for Epidemiological Cut-Off values. The default is
`"human"`, which can also be set with the package option
[`AMR_breakpoint_type`](https://amr-for-r.org/reference/AMR-options.md).
If `host` is set to values of veterinary species, this will
automatically be set to `"animal"`.
- host:
A vector (or column name) with
[character](https://rdrr.io/r/base/character.html)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 28 supported languages of this
package. For foreign languages, be sure to set the language with
[`set_AMR_locale()`](https://amr-for-r.org/reference/translate.md)
(though it will be automatically guessed based on the system
language).
- language:
Language to convert values set in `host` when using animal
breakpoints. Use one of these supported language names or [ISO 639-1
codes](https://en.wikipedia.org/wiki/ISO_639-1): English (en), Arabic
(ar), Bengali (bn), Chinese (zh), Czech (cs), Danish (da), Dutch (nl),
Finnish (fi), French (fr), German (de), Greek (el), Hindi (hi),
Indonesian (id), Italian (it), Japanese (ja), Korean (ko), Norwegian
(no), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru),
Spanish (es), Swahili (sw), Swedish (sv), Turkish (tr), Ukrainian
(uk), Urdu (ur), or Vietnamese (vi).
- verbose:
A [logical](https://rdrr.io/r/base/logical.html) to indicate that all
notes should be printed during interpretation of MIC values or disk
diffusion values.
- conserve_capped_values:
Deprecated, use `capped_mic_handling` instead.
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- parallel:
A [logical](https://rdrr.io/r/base/logical.html) to indicate if
parallel computing must be used, defaults to `FALSE`. This requires no
additional packages, as the used `parallel` package is part of base R.
On Windows and on R \< 4.0.0
[`parallel::parLapply()`](https://rdrr.io/r/parallel/clusterApply.html)
will be used, in all other cases the more efficient
[`parallel::mclapply()`](https://rdrr.io/r/parallel/mclapply.html)
will be used.
- max_cores:
Maximum number of cores to use if `parallel = TRUE`. Use a negative
value to subtract that number from the available number of cores, e.g.
a value of `-2` on an 8-core machine means that at most 6 cores will
be used. Defaults to `-1`. There will never be used more cores than
variables to analyse. The available number of cores are detected using
[`parallelly::availableCores()`](https://parallelly.futureverse.org/reference/availableCores.html)
if that package is installed, and base R's
[`parallel::detectCores()`](https://rdrr.io/r/parallel/detectCores.html)
otherwise.
- clean:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
previously stored results should be forgotten after returning the
'logbook' with results.
## Value
Ordered [factor](https://rdrr.io/r/base/factor.html) with new class
`sir`
## Details
*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](https://amr-for-r.org/reference/clinical_breakpoints.md)
for more information.*
### How it Works
The `as.sir()` function can work in four ways:
1. For **cleaning raw / untransformed data**. The data will be cleaned
to only contain valid values, namely: **S** for susceptible, **I**
for intermediate or 'susceptible, increased exposure', **R** for
resistant, **NI** for non-interpretable, and **SDD** for susceptible
dose-dependent. Each of these can be set using a [regular
expression](https://rdrr.io/r/base/regex.html). Furthermore,
`as.sir()` will try its best to clean 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 invalid.
2. For **interpreting minimum inhibitory concentration (MIC) values**
according to EUCAST or CLSI. You must clean your MIC values first
using [`as.mic()`](https://amr-for-r.org/reference/as.mic.md), that
also gives your columns the new data class
[`mic`](https://amr-for-r.org/reference/as.mic.md). 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.
- Example to apply using `dplyr`:
your_data %>% mutate_if(is.mic, as.sir)
your_data %>% mutate(across(where(is.mic), as.sir))
your_data %>% mutate_if(is.mic, as.sir, ab = "column_with_antibiotics", mo = "column_with_microorganisms")
your_data %>% mutate_if(is.mic, as.sir, ab = c("cipro", "ampicillin", ...), mo = c("E. coli", "K. pneumoniae", ...))
# for veterinary breakpoints, also set `host`:
your_data %>% mutate_if(is.mic, as.sir, host = "column_with_animal_species", guideline = "CLSI")
# fast processing with parallel computing:
as.sir(your_data, ..., parallel = TRUE)
- Operators like "\<=" will be stripped before interpretation. When
using `capped_mic_handling = "conservative"`, 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
(`capped_mic_handling = "standard"`) considers "\>2" to be lower
than "\>=4" and might in this case return "S" or "I".
- **Note:** When using CLSI as the guideline, MIC values must be
log2-based doubling dilutions. Values not in this format, will be
automatically rounded up to the nearest log2 level as CLSI
instructs, and a warning will be thrown.
3. For **interpreting disk diffusion diameters** according to EUCAST or
CLSI. You must clean your disk zones first using
[`as.disk()`](https://amr-for-r.org/reference/as.disk.md), that also
gives your columns the new data class
[`disk`](https://amr-for-r.org/reference/as.disk.md). 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.
- Example to apply using `dplyr`:
your_data %>% mutate_if(is.disk, as.sir)
your_data %>% mutate(across(where(is.disk), as.sir))
your_data %>% mutate_if(is.disk, as.sir, ab = "column_with_antibiotics", mo = "column_with_microorganisms")
your_data %>% mutate_if(is.disk, as.sir, ab = c("cipro", "ampicillin", ...), mo = c("E. coli", "K. pneumoniae", ...))
# for veterinary breakpoints, also set `host`:
your_data %>% mutate_if(is.disk, as.sir, host = "column_with_animal_species", guideline = "CLSI")
# fast processing with parallel computing:
as.sir(your_data, ..., parallel = TRUE)
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)`.
**For points 2, 3 and 4: Use `sir_interpretation_history()`** to
retrieve a [data.frame](https://rdrr.io/r/base/data.frame.html) with all
results of all previous `as.sir()` calls. It also contains notes about
interpretation, and the exact input and output values.
### Supported Guidelines
For interpreting MIC values as well as disk diffusion diameters,
currently implemented guidelines are:
- For **clinical microbiology**: EUCAST 2011-2025 and CLSI 2011-2025;
- For **veterinary microbiology**: EUCAST 2021-2025 and CLSI 2019-2025;
- For **ECOFFs** (Epidemiological Cut-off Values): EUCAST 2020-2025 and
CLSI 2022-2025.
The `guideline` argument must be set to e.g., `"EUCAST 2025"` or
`"CLSI 2025"`. By simply using `"EUCAST"` (the default) or `"CLSI"` as
input, the latest included version of that guideline will automatically
be selected. Importantly, using a column name of your data instead,
allows for straightforward interpretation of historical data that must
be analysed in the context of, for example, different years.
You can set your own data set using the `reference_data` argument. The
`guideline` argument will then be ignored.
It is also possible to set the default guideline with the package option
[`AMR_guideline`](https://amr-for-r.org/reference/AMR-options.md) (e.g.
in your `.Rprofile` file), such as:
options(AMR_guideline = "CLSI")
options(AMR_guideline = "CLSI 2018")
options(AMR_guideline = "EUCAST 2020")
# or to reset:
options(AMR_guideline = NULL)
### Working with Veterinary Breakpoints
When using veterinary breakpoints (i.e., setting
`breakpoint_type = "animal"`), a column with animal species must be
available or set manually using the `host` argument. The column must
contain names like "dogs", "cats", "cattle", "swine", "horses",
"poultry", or "aquatic". Other animal names like "goats", "rabbits", or
"monkeys" are also recognised but may not be available in all
guidelines. Matching is case-insensitive and accepts Latin-based
synonyms (e.g., "bovine" for cattle and "canine" for dogs).
Regarding choice of veterinary guidelines, these might be the best
options to set before analysis:
options(AMR_guideline = "CLSI")
options(AMR_breakpoint_type = "animal")
### After Interpretation
After using `as.sir()`, you can use the
[`eucast_rules()`](https://amr-for-r.org/reference/eucast_rules.md)
defined by EUCAST to (1) apply inferred susceptibility and resistance
based on results of other antimicrobials and (2) apply intrinsic
resistance based on taxonomic properties of a microorganism.
To determine which isolates are multi-drug resistant, be sure to run
[`mdro()`](https://amr-for-r.org/reference/mdro.md) (which applies the
MDR/PDR/XDR guideline from 2012 at default) on a data set that contains
S/I/R values. Read more about [interpreting multidrug-resistant
organisms here](https://amr-for-r.org/reference/mdro.md).
### Other
The function `is.sir()` detects if the input contains class `sir`. If
the input is a [data.frame](https://rdrr.io/r/base/data.frame.html) or
[list](https://rdrr.io/r/base/list.html), it iterates over all
columns/items and returns a
[logical](https://rdrr.io/r/base/logical.html) vector.
The base R function [`as.double()`](https://rdrr.io/r/base/double.html)
can be used to retrieve quantitative values from a `sir` object: `"S"` =
1, `"I"`/`"SDD"` = 2, `"R"` = 3. All other values are rendered `NA`.
**Note:** Do not use
[`as.integer()`](https://rdrr.io/r/base/integer.html), since that
(because of how R works internally) will return the factor level
indices, and not these aforementioned quantitative values.
The function `is_sir_eligible()` returns `TRUE` when a column contains
at most 5% potentially invalid antimicrobial interpretations, and
`FALSE` otherwise. The threshold of 5% can be set with the `threshold`
argument. If the input is a
[data.frame](https://rdrr.io/r/base/data.frame.html), it iterates over
all columns and returns a [logical](https://rdrr.io/r/base/logical.html)
vector.
`NA_sir_` is a missing value of the new `sir` class, analogous to e.g.
base R's [`NA_character_`](https://rdrr.io/r/base/NA.html).
## Interpretation of SIR
In 2019, the European Committee on Antimicrobial Susceptibility Testing
(EUCAST) has decided to change the definitions of susceptibility testing
categories S, I, and R (<https://www.eucast.org/newsiandr>).
This AMR package follows insight; use
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
(equal to
[`proportion_SI()`](https://amr-for-r.org/reference/proportion.md)) to
determine antimicrobial susceptibility and
[`count_susceptible()`](https://amr-for-r.org/reference/count.md) (equal
to [`count_SI()`](https://amr-for-r.org/reference/count.md)) to count
susceptible isolates.
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
[`as.mic()`](https://amr-for-r.org/reference/as.mic.md),
[`as.disk()`](https://amr-for-r.org/reference/as.disk.md),
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)
## Examples
``` r
example_isolates
#> # A tibble: 2,000 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> # 1,990 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
summary(example_isolates[, 1:10]) # see all SIR results at a glance
#> date patient age gender
#> Min. :2002-01-02 Length:2000 Min. : 0.00 Length:2000
#> 1st Qu.:2005-07-31 Class :character 1st Qu.:63.00 Class :character
#> Median :2009-07-31 Mode :character Median :74.00 Mode :character
#> Mean :2009-11-20 Mean :70.69
#> 3rd Qu.:2014-05-30 3rd Qu.:82.00
#> Max. :2017-12-28 Max. :97.00
#> ward mo PEN
#> Length:2000 Class :mo Class:sir
#> Class :character <NA> :0 %S :25.6% (n=417)
#> Mode :character Unique:90 %SDD : 0.0% (n=0)
#> #1 :B_ESCHR_COLI %I : 0.7% (n=11)
#> #2 :B_STPHY_CONS %R :73.7% (n=1201)
#> #3 :B_STPHY_AURS %NI : 0.0% (n=0)
#> OXA FLC AMX
#> Class:sir Class:sir Class:sir
#> %S :68.8% (n=251) %S :70.5% (n=665) %S :40.2% (n=543)
#> %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) %SDD : 0.0% (n=0)
#> %I : 0.0% (n=0) %I : 0.0% (n=0) %I : 0.2% (n=3)
#> %R :31.2% (n=114) %R :29.5% (n=278) %R :59.6% (n=804)
#> %NI : 0.0% (n=0) %NI : 0.0% (n=0) %NI : 0.0% (n=0)
# create some example data sets, with combined MIC values and disk zones
df_wide <- data.frame(
microorganism = "Escherichia coli",
amoxicillin = as.mic(8),
cipro = as.mic(0.256),
tobra = as.disk(16),
genta = as.disk(18),
ERY = "R"
)
df_long <- data.frame(
bacteria = rep("Escherichia coli", 4),
antibiotic = c("amoxicillin", "cipro", "tobra", "genta"),
mics = as.mic(c(0.01, 1, 4, 8)),
disks = as.disk(c(6, 10, 14, 18)),
guideline = c("EUCAST 2021", "EUCAST 2022", "EUCAST 2023", "EUCAST 2024")
)
# and clean previous SIR interpretation logs
x <- sir_interpretation_history(clean = TRUE)
# For INTERPRETING disk diffusion and MIC values -----------------------
# most basic application:
as.sir(df_wide)
#> microorganism amoxicillin cipro tobra genta ERY
#> 1 Escherichia coli S I S S R
# return a 'logbook' about the results:
sir_interpretation_history()
#> # A tibble: 4 × 18
#> datetime index method ab_given mo_given host_given input_given
#> <dttm> <int> <chr> <chr> <chr> <chr> <chr>
#> 1 2025-11-24 10:38:56 1 MIC amoxicillin Escherich… human 8
#> 2 2025-11-24 10:38:56 1 MIC cipro Escherich… human 0.256
#> 3 2025-11-24 10:38:56 1 DISK tobra Escherich… human 16
#> 4 2025-11-24 10:38:56 1 DISK genta Escherich… human 18
#> # 11 more variables: ab <ab>, mo <mo>, host <chr>, input <chr>,
#> # outcome <sir>, notes <chr>, guideline <chr>, ref_table <chr>, uti <lgl>,
#> # breakpoint_S_R <chr>, site <chr>
# \donttest{
# using parallel computing, which is available in base R:
as.sir(df_wide, parallel = TRUE, info = TRUE)
#> Returning previously coerced values for various antimicrobials. Run
#> `ab_reset_session()` to reset this. This note will be shown once per
#> session.
#>
#> Running in parallel mode using 3 out of 4 cores, on columns 'amoxicillin',
#> 'cipro', 'tobra', 'genta', and 'ERY'...
#> DONE
#>
#>
#> Run `sir_interpretation_history()` to retrieve a logbook with all details
#> of the breakpoint interpretations.
#> microorganism amoxicillin cipro tobra genta ERY
#> 1 Escherichia coli S I S S R
## Using dplyr -------------------------------------------------
if (require("dplyr")) {
# approaches that all work without additional arguments:
df_wide %>% mutate_if(is.mic, as.sir)
df_wide %>% mutate_if(function(x) is.mic(x) | is.disk(x), as.sir)
df_wide %>% mutate(across(where(is.mic), as.sir))
df_wide %>% mutate_at(vars(amoxicillin:tobra), as.sir)
df_wide %>% mutate(across(amoxicillin:tobra, as.sir))
df_wide %>% mutate(across(aminopenicillins(), as.sir))
# approaches that all work with additional arguments:
df_long %>%
# given a certain data type, e.g. MIC values
mutate_if(is.mic, as.sir,
mo = "bacteria",
ab = "antibiotic",
guideline = "guideline"
)
df_long %>%
mutate(across(
where(is.mic),
function(x) {
as.sir(x,
mo = "bacteria",
ab = "antibiotic",
guideline = "CLSI"
)
}
))
df_wide %>%
# given certain columns, e.g. from 'cipro' to 'genta'
mutate_at(vars(cipro:genta), as.sir,
mo = "bacteria",
guideline = "CLSI"
)
df_wide %>%
mutate(across(
cipro:genta,
function(x) {
as.sir(x,
mo = "bacteria",
guideline = "CLSI"
)
}
))
# for veterinary breakpoints, add 'host':
df_long$animal_species <- c("cats", "dogs", "horses", "cattle")
df_long %>%
# given a certain data type, e.g. MIC values
mutate_if(is.mic, as.sir,
mo = "bacteria",
ab = "antibiotic",
host = "animal_species",
guideline = "CLSI"
)
df_long %>%
mutate(across(
where(is.mic),
function(x) {
as.sir(x,
mo = "bacteria",
ab = "antibiotic",
host = "animal_species",
guideline = "CLSI"
)
}
))
df_wide %>%
mutate_at(vars(cipro:genta), as.sir,
mo = "bacteria",
ab = "antibiotic",
host = "animal_species",
guideline = "CLSI"
)
df_wide %>%
mutate(across(
cipro:genta,
function(x) {
as.sir(x,
mo = "bacteria",
host = "animal_species",
guideline = "CLSI"
)
}
))
# to include information about urinary tract infections (UTI)
data.frame(
mo = "E. coli",
nitrofuratoin = c("<= 2", 32),
from_the_bladder = c(TRUE, FALSE)
) %>%
as.sir(uti = "from_the_bladder")
data.frame(
mo = "E. coli",
nitrofuratoin = c("<= 2", 32),
specimen = c("urine", "blood")
) %>%
as.sir() # automatically determines urine isolates
df_wide %>%
mutate_at(vars(cipro:genta), as.sir, mo = "E. coli", uti = TRUE)
}
#> For `aminopenicillins()` using column 'amoxicillin'
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `across(...)`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `cipro = (function (x, ...) ...`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `across(...)`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `mics = (function (x, ...) ...`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `across(...)`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> Interpreting MIC values: 'antibiotic' (ASP, acetylspiramycin), CLSI 2025...
#> Interpreting disk diffusion zones: 'antibiotic' (ASP, acetylspiramycin),
#> CLSI 2025...
#> Interpreting disk diffusion zones: 'antibiotic' (ASP, acetylspiramycin),
#> CLSI 2025...
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `cipro = (function (x, ...) ...`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `across(...)`.
#> Caused by warning:
#> ! Some MICs were converted to the nearest higher log2 level, following the
#> CLSI interpretation guideline.
#> microorganism amoxicillin cipro tobra genta ERY
#> 1 Escherichia coli 8 <NA> S S R
## Using base R ------------------------------------------------
# for single values
as.sir(
x = as.mic(2),
mo = as.mo("S. pneumoniae"),
ab = "AMP",
guideline = "EUCAST"
)
#> Class 'sir'
#> [1] R
as.sir(
x = as.disk(18),
mo = "Strep pneu", # `mo` will be coerced with as.mo()
ab = "ampicillin", # and `ab` with as.ab()
guideline = "EUCAST"
)
#> Class 'sir'
#> [1] R
# For CLEANING existing SIR values -------------------------------------
as.sir(c("S", "SDD", "I", "R", "NI", "A", "B", "C"))
#> Warning: in `as.sir()`: 3 results in index '20' truncated (38%) that were invalid
#> antimicrobial interpretations: "A", "B", and "C"
#> Class 'sir'
#> [1] S SDD I R NI <NA> <NA> <NA>
as.sir("<= 0.002; S") # will return "S"
#> Class 'sir'
#> [1] S
sir_data <- as.sir(c(rep("S", 474), rep("I", 36), rep("R", 370)))
is.sir(sir_data)
#> [1] TRUE
plot(sir_data) # for percentages
barplot(sir_data) # for frequencies
# as common in R, you can use as.integer() to return factor indices:
as.integer(as.sir(c("S", "SDD", "I", "R", "NI", NA)))
#> [1] 1 2 3 4 5 NA
# but for computational use, as.double() will return 1 for S, 2 for I/SDD, and 3 for R:
as.double(as.sir(c("S", "SDD", "I", "R", "NI", NA)))
#> [1] 1 2 2 3 NA NA
# the dplyr way
if (require("dplyr")) {
example_isolates %>%
mutate_at(vars(PEN:RIF), as.sir)
# same:
example_isolates %>%
as.sir(PEN:RIF)
# fastest way to transform all columns with already valid AMR results to class `sir`:
example_isolates %>%
mutate_if(is_sir_eligible, as.sir)
# since dplyr 1.0.0, this can also be the more impractical:
# example_isolates %>%
# mutate(across(where(is_sir_eligible), as.sir))
}
#> # A tibble: 2,000 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> # 1,990 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

131
reference/atc_online.md Normal file
View File

@@ -0,0 +1,131 @@
# Get ATC Properties from WHOCC Website
Gets data from the WHOCC website to determine properties of an
Anatomical Therapeutic Chemical (ATC) (e.g. an antimicrobial), such as
the name, defined daily dose (DDD) or standard unit.
## Usage
``` r
atc_online_property(atc_code, property, administration = "O",
url = "https://atcddd.fhi.no/atc_ddd_index/?code=%s&showdescription=no",
url_vet = "https://atcddd.fhi.no/atcvet/atcvet_index/?code=%s&showdescription=no")
atc_online_groups(atc_code, ...)
atc_online_ddd(atc_code, ...)
atc_online_ddd_units(atc_code, ...)
```
## Source
<https://atcddd.fhi.no/atc_ddd_alterations__cumulative/ddd_alterations/abbrevations/>
## Arguments
- atc_code:
A [character](https://rdrr.io/r/base/character.html) (vector) with ATC
code(s) of antimicrobials, will be coerced with
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md) and
[`ab_atc()`](https://amr-for-r.org/reference/ab_property.md)
internally if not a valid ATC code.
- property:
Property of an ATC code. Valid values are `"ATC"`, `"Name"`, `"DDD"`,
`"U"` (`"unit"`), `"Adm.R"`, `"Note"` and `groups`. For this last
option, all hierarchical groups of an ATC code will be returned, see
*Examples*.
- administration:
Type of administration when using `property = "Adm.R"`, see *Details*.
- url:
URL of website of the WHOCC. The sign `%s` can be used as a
placeholder for ATC codes.
- url_vet:
URL of website of the WHOCC for veterinary medicine. The sign `%s` can
be used as a placeholder for ATC_vet codes (that all start with "Q").
- ...:
Arguments to pass on to `atc_property`.
## Details
Options for argument `administration`:
- `"Implant"` = Implant
- `"Inhal"` = Inhalation
- `"Instill"` = Instillation
- `"N"` = nasal
- `"O"` = oral
- `"P"` = parenteral
- `"R"` = rectal
- `"SL"` = sublingual/buccal
- `"TD"` = transdermal
- `"V"` = vaginal
Abbreviations of return values when using `property = "U"` (unit):
- `"g"` = gram
- `"mg"` = milligram
- `"mcg"` = microgram
- `"U"` = unit
- `"TU"` = thousand units
- `"MU"` = million units
- `"mmol"` = millimole
- `"ml"` = millilitre (e.g. eyedrops)
**N.B. This function requires an internet connection and only works if
the following packages are installed: `curl`, `rvest`, `xml2`.**
## Examples
``` r
# \donttest{
if (requireNamespace("curl") && requireNamespace("rvest") && requireNamespace("xml2")) {
# oral DDD (Defined Daily Dose) of amoxicillin
atc_online_property("J01CA04", "DDD", "O")
atc_online_ddd(ab_atc("amox"))
# parenteral DDD (Defined Daily Dose) of amoxicillin
atc_online_property("J01CA04", "DDD", "P")
atc_online_property("J01CA04", property = "groups") # search hierarchical groups of amoxicillin
}
#> Loading required namespace: rvest
#> in `atc_online_property()`: no properties found for ATC QG51AA03. Please
#> check
#> https://atcddd.fhi.no/atcvet/atcvet_index/?code=QG51AA03&showdescription=no.
#> in `atc_online_property()`: no properties found for ATC QJ01CA04. Please
#> check
#> https://atcddd.fhi.no/atcvet/atcvet_index/?code=QJ01CA04&showdescription=no.
#> [1] "ANTIINFECTIVES FOR SYSTEMIC USE"
#> [2] "ANTIBACTERIALS FOR SYSTEMIC USE"
#> [3] "BETA-LACTAM ANTIBACTERIALS, PENICILLINS"
#> [4] "Penicillins with extended spectrum"
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

130
reference/av_from_text.md Normal file
View File

@@ -0,0 +1,130 @@
# Retrieve Antiviral Drug Names and Doses from Clinical Text
Use this function on e.g. clinical texts from health care records. It
returns a [list](https://rdrr.io/r/base/list.html) with all antiviral
drugs, doses and forms of administration found in the texts.
## Usage
``` r
av_from_text(text, type = c("drug", "dose", "administration"),
collapse = NULL, translate_av = FALSE, thorough_search = NULL,
info = interactive(), ...)
```
## Arguments
- text:
Text to analyse.
- type:
Type of property to search for, either `"drug"`, `"dose"` or
`"administration"`, see *Examples*.
- collapse:
A [character](https://rdrr.io/r/base/character.html) to pass on to
`paste(, collapse = ...)` to only return one
[character](https://rdrr.io/r/base/character.html) per element of
`text`, see *Examples*.
- translate_av:
If `type = "drug"`: a column name of the
[antivirals](https://amr-for-r.org/reference/antimicrobials.md) data
set to translate the antibiotic abbreviations to, using
[`av_property()`](https://amr-for-r.org/reference/av_property.md). The
default is `FALSE`. Using `TRUE` is equal to using "name".
- thorough_search:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the input must be extensively searched for misspelling and other
faulty input values. Setting this to `TRUE` will take considerably
more time than when using `FALSE`. At default, it will turn `TRUE`
when all input elements contain a maximum of three words.
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
progress bar should be printed - the default is `TRUE` only in
interactive mode.
- ...:
Arguments passed on to
[`as.av()`](https://amr-for-r.org/reference/as.av.md).
## Value
A [list](https://rdrr.io/r/base/list.html), or a
[character](https://rdrr.io/r/base/character.html) if `collapse` is not
`NULL`
## Details
This function is also internally used by
[`as.av()`](https://amr-for-r.org/reference/as.av.md), although it then
only searches for the first drug name and will throw a note if more drug
names could have been returned. Note: the
[`as.av()`](https://amr-for-r.org/reference/as.av.md) function may use
very long regular expression to match brand names of antiviral drugs.
This may fail on some systems.
### Argument `type`
At default, the function will search for antiviral drug names. All text
elements will be searched for official names, ATC codes and brand names.
As it uses [`as.av()`](https://amr-for-r.org/reference/as.av.md)
internally, it will correct for misspelling.
With `type = "dose"` (or similar, like "dosing", "doses"), all text
elements will be searched for
[numeric](https://rdrr.io/r/base/numeric.html) values that are higher
than 100 and do not resemble years. The output will be
[numeric](https://rdrr.io/r/base/numeric.html). It supports any unit (g,
mg, IE, etc.) and multiple values in one clinical text, see *Examples*.
With `type = "administration"` (or abbreviations, like "admin", "adm"),
all text elements will be searched for a form of drug administration. It
supports the following forms (including common abbreviations): buccal,
implant, inhalation, instillation, intravenous, nasal, oral, parenteral,
rectal, sublingual, transdermal and vaginal. Abbreviations for oral
(such as 'po', 'per os') will become "oral", all values for intravenous
(such as 'iv', 'intraven') will become "iv". It supports multiple values
in one clinical text, see *Examples*.
### Argument `collapse`
Without using `collapse`, this function will return a
[list](https://rdrr.io/r/base/list.html). This can be convenient to use
e.g. inside a
[`mutate()`](https://dplyr.tidyverse.org/reference/mutate.html)):
`df %>% mutate(avx = av_from_text(clinical_text))`
The returned AV codes can be transformed to official names, groups, etc.
with all [`av_*`](https://amr-for-r.org/reference/av_property.md)
functions such as
[`av_name()`](https://amr-for-r.org/reference/av_property.md) and
[`av_group()`](https://amr-for-r.org/reference/av_property.md), or by
using the `translate_av` argument.
With using `collapse`, this function will return a
[character](https://rdrr.io/r/base/character.html):
`df %>% mutate(avx = av_from_text(clinical_text, collapse = "|"))`
## Examples
``` r
av_from_text("28/03/2020 valaciclovir po tid")
#> [[1]]
#> Class 'av'
#> [1] VALA
#>
av_from_text("28/03/2020 valaciclovir po tid", type = "admin")
#> [[1]]
#> [1] "oral"
#>
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

241
reference/av_property.md Normal file
View File

@@ -0,0 +1,241 @@
# Get Properties of an Antiviral Drug
Use these functions to return a specific property of an antiviral drug
from the [antivirals](https://amr-for-r.org/reference/antimicrobials.md)
data set. All input values will be evaluated internally with
[`as.av()`](https://amr-for-r.org/reference/as.av.md).
## Usage
``` r
av_name(x, language = get_AMR_locale(), tolower = FALSE, ...)
av_cid(x, ...)
av_synonyms(x, ...)
av_tradenames(x, ...)
av_group(x, language = get_AMR_locale(), ...)
av_atc(x, ...)
av_loinc(x, ...)
av_ddd(x, administration = "oral", ...)
av_ddd_units(x, administration = "oral", ...)
av_info(x, language = get_AMR_locale(), ...)
av_url(x, open = FALSE, ...)
av_property(x, property = "name", language = get_AMR_locale(), ...)
```
## Arguments
- x:
Any (vector of) text that can be coerced to a valid antiviral drug
code with [`as.av()`](https://amr-for-r.org/reference/as.av.md).
- language:
Language of the returned text - the default is system language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md))
and can also be set with the package option
[`AMR_locale`](https://amr-for-r.org/reference/AMR-options.md). Use
`language = NULL` or `language = ""` to prevent translation.
- tolower:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the first [character](https://rdrr.io/r/base/character.html) of every
output should be transformed to a lower case
[character](https://rdrr.io/r/base/character.html).
- ...:
Other arguments passed on to
[`as.av()`](https://amr-for-r.org/reference/as.av.md).
- administration:
Way of administration, either `"oral"` or `"iv"`.
- open:
Browse the URL using
[`utils::browseURL()`](https://rdrr.io/r/utils/browseURL.html).
- property:
One of the column names of one of the
[antivirals](https://amr-for-r.org/reference/antimicrobials.md) data
set: `vector_or(colnames(antivirals), sort = FALSE)`.
## Value
- An [integer](https://rdrr.io/r/base/integer.html) in case of
`av_cid()`
- A named [list](https://rdrr.io/r/base/list.html) in case of
`av_info()` and multiple `av_atc()`/`av_synonyms()`/`av_tradenames()`
- A [double](https://rdrr.io/r/base/double.html) in case of `av_ddd()`
- A [character](https://rdrr.io/r/base/character.html) in all other
cases
## Details
All output [will be
translated](https://amr-for-r.org/reference/translate.md) where
possible.
The function `av_url()` will return the direct URL to the official WHO
website. A warning will be returned if the required ATC code is not
available.
## Source
World Health Organization (WHO) Collaborating Centre for Drug Statistics
Methodology: <https://atcddd.fhi.no/atc_ddd_index/>
European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER:
<https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm>
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
[antivirals](https://amr-for-r.org/reference/antimicrobials.md)
## Examples
``` r
# all properties:
av_name("ACI")
#> [1] "Aciclovir"
av_atc("ACI")
#> [1] "J05AB01"
av_cid("ACI")
#> [1] 135398513
av_synonyms("ACI")
#> [1] "acicloftal" "aciclovier" "aciclovirum"
#> [4] "activir" "acyclofoam" "acycloguanosine"
#> [7] "acyclovir" "acyclovir lauriad" "avaclyr"
#> [10] "cargosil" "cyclovir" "genvir"
#> [13] "gerpevir" "hascovir" "maynar"
#> [16] "novirus" "poviral" "sitavig"
#> [19] "sitavir" "vipral" "viropump"
#> [22] "virorax" "zovirax" "zyclir"
av_tradenames("ACI")
#> [1] "acicloftal" "aciclovier" "aciclovirum"
#> [4] "activir" "acyclofoam" "acycloguanosine"
#> [7] "acyclovir" "acyclovir lauriad" "avaclyr"
#> [10] "cargosil" "cyclovir" "genvir"
#> [13] "gerpevir" "hascovir" "maynar"
#> [16] "novirus" "poviral" "sitavig"
#> [19] "sitavir" "vipral" "viropump"
#> [22] "virorax" "zovirax" "zyclir"
av_group("ACI")
#> [1] "Nucleosides and nucleotides excl. reverse transcriptase inhibitors"
av_url("ACI")
#> Aciclovir
#> "https://atcddd.fhi.no/atc_ddd_index/?code=J05AB01&showdescription=no"
# lowercase transformation
av_name(x = c("ACI", "VALA"))
#> [1] "Aciclovir" "Valaciclovir"
av_name(x = c("ACI", "VALA"), tolower = TRUE)
#> [1] "aciclovir" "valaciclovir"
# defined daily doses (DDD)
av_ddd("ACI", "oral")
#> [1] 4
av_ddd_units("ACI", "oral")
#> [1] "g"
av_ddd("ACI", "iv")
#> [1] 4
av_ddd_units("ACI", "iv")
#> [1] "g"
av_info("ACI") # all properties as a list
#> $av
#> [1] "ACI"
#>
#> $cid
#> [1] 135398513
#>
#> $name
#> [1] "Aciclovir"
#>
#> $group
#> [1] "Nucleosides and nucleotides excl. reverse transcriptase inhibitors"
#>
#> $atc
#> [1] "J05AB01"
#>
#> $tradenames
#> [1] "acicloftal" "aciclovier" "aciclovirum"
#> [4] "activir" "acyclofoam" "acycloguanosine"
#> [7] "acyclovir" "acyclovir lauriad" "avaclyr"
#> [10] "cargosil" "cyclovir" "genvir"
#> [13] "gerpevir" "hascovir" "maynar"
#> [16] "novirus" "poviral" "sitavig"
#> [19] "sitavir" "vipral" "viropump"
#> [22] "virorax" "zovirax" "zyclir"
#>
#> $loinc
#> [1] ""
#>
#> $ddd
#> $ddd$oral
#> $ddd$oral$amount
#> [1] 4
#>
#> $ddd$oral$units
#> [1] "g"
#>
#>
#> $ddd$iv
#> $ddd$iv$amount
#> [1] 4
#>
#> $ddd$iv$units
#> [1] "g"
#>
#>
#>
# all av_* functions use as.av() internally, so you can go from 'any' to 'any':
av_atc("ACI")
#> [1] "J05AB01"
av_group("J05AB01")
#> [1] "Nucleosides and nucleotides excl. reverse transcriptase inhibitors"
av_loinc("abacavir")
#> [1] "29113-8" "30273-7" "30287-7" "30303-2" "78772-1" "78773-9" "79134-3"
#> [8] "80118-3"
av_name("29113-8")
#> [1] "Abacavir"
av_name(135398513)
#> [1] "Aciclovir"
av_name("J05AB01")
#> [1] "Aciclovir"
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

140
reference/availability.md Normal file
View File

@@ -0,0 +1,140 @@
# Check Availability of Columns
Easy check for data availability of all columns in a data set. This
makes it easy to get an idea of which antimicrobial combinations can be
used for calculation with e.g.
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md) and
[`resistance()`](https://amr-for-r.org/reference/proportion.md).
## Usage
``` r
availability(tbl, width = NULL)
```
## Arguments
- tbl:
A [data.frame](https://rdrr.io/r/base/data.frame.html) or
[list](https://rdrr.io/r/base/list.html).
- width:
Number of characters to present the visual availability - the default
is filling the width of the console.
## Value
[data.frame](https://rdrr.io/r/base/data.frame.html) with column names
of `tbl` as row names
## Details
The function returns a
[data.frame](https://rdrr.io/r/base/data.frame.html) with columns
`"resistant"` and `"visual_resistance"`. The values in that columns are
calculated with
[`resistance()`](https://amr-for-r.org/reference/proportion.md).
## Examples
``` r
availability(example_isolates)
#> count available visual_availabilty resistant visual_resistance
#> date 2000 100.0% |####################|
#> patient 2000 100.0% |####################|
#> age 2000 100.0% |####################|
#> gender 2000 100.0% |####################|
#> ward 2000 100.0% |####################|
#> mo 2000 100.0% |####################|
#> PEN 1629 81.5% |################----| 73.7% |##############------|
#> OXA 365 18.3% |###-----------------| 31.2% |######--------------|
#> FLC 943 47.2% |#########-----------| 29.5% |#####---------------|
#> AMX 1350 67.5% |#############-------| 59.6% |###########---------|
#> AMC 1879 94.0% |##################--| 23.7% |####----------------|
#> AMP 1350 67.5% |#############-------| 59.6% |###########---------|
#> TZP 1001 50.0% |##########----------| 12.6% |##------------------|
#> CZO 446 22.3% |####----------------| 44.6% |########------------|
#> FEP 724 36.2% |#######-------------| 14.2% |##------------------|
#> CXM 1789 89.5% |#################---| 26.3% |#####---------------|
#> FOX 818 40.9% |########------------| 27.4% |#####---------------|
#> CTX 943 47.2% |#########-----------| 15.5% |###-----------------|
#> CAZ 1811 90.6% |##################--| 66.5% |#############-------|
#> CRO 943 47.2% |#########-----------| 15.5% |###-----------------|
#> GEN 1855 92.8% |##################--| 24.6% |####----------------|
#> TOB 1351 67.6% |#############-------| 34.4% |######--------------|
#> AMK 692 34.6% |######--------------| 63.7% |############--------|
#> KAN 471 23.6% |####----------------| 100.0% |####################|
#> TMP 1499 75.0% |###############-----| 38.1% |#######-------------|
#> SXT 1759 88.0% |#################---| 20.5% |####----------------|
#> NIT 743 37.2% |#######-------------| 17.1% |###-----------------|
#> FOS 351 17.6% |###-----------------| 42.2% |########------------|
#> LNZ 1023 51.2% |##########----------| 69.3% |#############-------|
#> CIP 1409 70.5% |#############-------| 16.2% |###-----------------|
#> MFX 211 10.6% |##------------------| 33.6% |######--------------|
#> VAN 1861 93.1% |##################--| 38.3% |#######-------------|
#> TEC 976 48.8% |#########-----------| 75.7% |###############-----|
#> TCY 1200 60.0% |###########---------| 29.8% |#####---------------|
#> TGC 798 39.9% |########------------| 12.7% |##------------------|
#> DOX 1136 56.8% |###########---------| 27.7% |#####---------------|
#> ERY 1894 94.7% |##################--| 57.2% |###########---------|
#> CLI 1520 76.0% |###############-----| 61.2% |############--------|
#> AZM 1894 94.7% |##################--| 57.2% |###########---------|
#> IPM 889 44.5% |########------------| 6.2% |#-------------------|
#> MEM 829 41.5% |########------------| 5.9% |#-------------------|
#> MTR 34 1.7% |--------------------| 14.7% |##------------------|
#> CHL 154 7.7% |#-------------------| 21.4% |####----------------|
#> COL 1640 82.0% |################----| 81.2% |################----|
#> MUP 270 13.5% |##------------------| 5.9% |#-------------------|
#> RIF 1003 50.2% |##########----------| 69.6% |#############-------|
# \donttest{
if (require("dplyr")) {
example_isolates %>%
filter(mo == as.mo("Escherichia coli")) %>%
select_if(is.sir) %>%
availability()
}
#> count available visual_availabilty resistant visual_resistance
#> PEN 467 100.0% |######################| 100.0% |######################|
#> OXA 0 0.0% |----------------------|
#> FLC 0 0.0% |----------------------|
#> AMX 392 83.9% |##################----| 50.0% |###########-----------|
#> AMC 467 100.0% |######################| 13.1% |##--------------------|
#> AMP 392 83.9% |##################----| 50.0% |###########-----------|
#> TZP 416 89.1% |###################---| 5.5% |#---------------------|
#> CZO 82 17.6% |###-------------------| 2.4% |----------------------|
#> FEP 317 67.9% |##############--------| 2.8% |----------------------|
#> CXM 465 99.6% |######################| 5.4% |#---------------------|
#> FOX 377 80.7% |#################-----| 6.9% |#---------------------|
#> CTX 459 98.3% |#####################-| 2.4% |----------------------|
#> CAZ 460 98.5% |#####################-| 2.4% |----------------------|
#> CRO 459 98.3% |#####################-| 2.4% |----------------------|
#> GEN 460 98.5% |#####################-| 2.0% |----------------------|
#> TOB 462 98.9% |#####################-| 2.6% |----------------------|
#> AMK 171 36.6% |########--------------| 0.0% |----------------------|
#> KAN 0 0.0% |----------------------|
#> TMP 396 84.8% |##################----| 39.1% |########--------------|
#> SXT 465 99.6% |######################| 31.6% |######----------------|
#> NIT 458 98.1% |#####################-| 2.8% |----------------------|
#> FOS 61 13.1% |##--------------------| 0.0% |----------------------|
#> LNZ 467 100.0% |######################| 100.0% |######################|
#> CIP 456 97.6% |#####################-| 12.5% |##--------------------|
#> MFX 57 12.2% |##--------------------| 100.0% |######################|
#> VAN 467 100.0% |######################| 100.0% |######################|
#> TEC 467 100.0% |######################| 100.0% |######################|
#> TCY 3 0.6% |----------------------| 66.7% |##############--------|
#> TGC 68 14.6% |###-------------------| 0.0% |----------------------|
#> DOX 0 0.0% |----------------------|
#> ERY 467 100.0% |######################| 100.0% |######################|
#> CLI 467 100.0% |######################| 100.0% |######################|
#> AZM 467 100.0% |######################| 100.0% |######################|
#> IPM 422 90.4% |###################---| 0.0% |----------------------|
#> MEM 418 89.5% |###################---| 0.0% |----------------------|
#> MTR 2 0.4% |----------------------| 0.0% |----------------------|
#> CHL 0 0.0% |----------------------|
#> COL 240 51.4% |###########-----------| 0.0% |----------------------|
#> MUP 0 0.0% |----------------------|
#> RIF 467 100.0% |######################| 100.0% |######################|
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,218 @@
# Determine Bug-Drug Combinations
Determine antimicrobial resistance (AMR) of all bug-drug combinations in
your data set where at least 30 (default) isolates are available per
species. Use [`format()`](https://rdrr.io/r/base/format.html) on the
result to prettify it to a publishable/printable format, see *Examples*.
## Usage
``` r
bug_drug_combinations(x, col_mo = NULL, FUN = mo_shortname,
include_n_rows = FALSE, ...)
# S3 method for class 'bug_drug_combinations'
format(x, translate_ab = "name (ab, atc)",
language = get_AMR_locale(), minimum = 30, combine_SI = TRUE,
add_ab_group = TRUE, remove_intrinsic_resistant = FALSE,
decimal.mark = getOption("OutDec"), big.mark = ifelse(decimal.mark ==
",", ".", ","), ...)
```
## Arguments
- x:
A data set with antimicrobials columns, such as `amox`, `AMX` and
`AMC`.
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- FUN:
The function to call on the `mo` column to transform the microorganism
codes - the default is
[`mo_shortname()`](https://amr-for-r.org/reference/mo_property.md).
- include_n_rows:
A [logical](https://rdrr.io/r/base/logical.html) to indicate if the
total number of rows must be included in the output.
- ...:
Arguments passed on to `FUN`.
- translate_ab:
A [character](https://rdrr.io/r/base/character.html) of length 1
containing column names of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set.
- language:
Language of the returned text - the default is the current system
language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md))
and can also be set with the package option
[`AMR_locale`](https://amr-for-r.org/reference/AMR-options.md). Use
`language = NULL` or `language = ""` to prevent translation.
- minimum:
The minimum allowed number of available (tested) isolates. Any isolate
count lower than `minimum` will return `NA` with a warning. The
default number of `30` isolates is advised by the Clinical and
Laboratory Standards Institute (CLSI) as best practice, see *Source*.
- combine_SI:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
values S, SDD, and I should be summed, so resistance will be based on
only R - the default is `TRUE`.
- add_ab_group:
A [logical](https://rdrr.io/r/base/logical.html) to indicate where the
group of the antimicrobials must be included as a first column.
- remove_intrinsic_resistant:
[logical](https://rdrr.io/r/base/logical.html) to indicate that rows
and columns with 100% resistance for all tested antimicrobials must be
removed from the table.
- decimal.mark:
the character to be used to indicate the numeric decimal point.
- big.mark:
character; if not empty used as mark between every `big.interval`
decimals *before* (hence `big`) the decimal point.
## Value
The function `bug_drug_combinations()` returns a
[data.frame](https://rdrr.io/r/base/data.frame.html) with columns "mo",
"ab", "S", "SDD", "I", "R", and "total".
## Details
The function [`format()`](https://rdrr.io/r/base/format.html) calculates
the resistance per bug-drug combination and returns a table ready for
reporting/publishing. Use `combine_SI = TRUE` (default) to test R vs.
S+I and `combine_SI = FALSE` to test R+I vs. S. This table can also
directly be used in R Markdown / Quarto without the need for e.g.
[`knitr::kable()`](https://rdrr.io/pkg/knitr/man/kable.html).
## Examples
``` r
# example_isolates is a data set available in the AMR package.
# run ?example_isolates for more info.
example_isolates
#> # A tibble: 2,000 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> # 1,990 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
# \donttest{
x <- bug_drug_combinations(example_isolates)
head(x)
#> # A tibble: 6 × 8
#> mo ab S SDD I R NI total
#> <chr> <chr> <int> <int> <int> <int> <int> <int>
#> 1 (unknown species) AMC 15 0 0 0 0 15
#> 2 (unknown species) AMK 0 0 0 0 0 0
#> 3 (unknown species) AMP 15 0 0 1 0 16
#> 4 (unknown species) AMX 15 0 0 1 0 16
#> 5 (unknown species) AZM 3 0 0 3 0 6
#> 6 (unknown species) CAZ 0 0 0 0 0 0
#> Use 'format()' on this result to get a publishable/printable format.
format(x, translate_ab = "name (atc)")
#> # A tibble: 39 × 12
#> Group Drug CoNS `E. coli` `E. faecalis` `K. pneumoniae` `P. aeruginosa`
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 "Aminogl… Amik… "100… " 0.0% … "100.0% (39/… "" ""
#> 2 "" Gent… " 13… " 2.0% … "100.0% (39/… " 10.3% (6/58)" " 0.0% (0/30)"
#> 3 "" Kana… "100… "" "100.0% (39/… "" "100.0% (30/30…
#> 4 "" Tobr… " 78… " 2.6% … "100.0% (39/… " 10.3% (6/58)" " 0.0% (0/30)"
#> 5 "Antimyc… Rifa… "" "100.0% … "" "100.0% (58/58… "100.0% (30/30…
#> 6 "Beta-la… Amox… " 93… " 50.0% … "" "100.0% (58/58… "100.0% (30/30…
#> 7 "" Amox… " 42… " 13.1% … "" " 10.3% (6/58)" "100.0% (30/30…
#> 8 "" Ampi… " 93… " 50.0% … "" "100.0% (58/58… "100.0% (30/30…
#> 9 "" Benz… " 77… "100.0% … "" "100.0% (58/58… "100.0% (30/30…
#> 10 "" Fluc… " 42… "" "" "" ""
#> # 29 more rows
#> # 5 more variables: `P. mirabilis` <chr>, `S. aureus` <chr>,
#> # `S. epidermidis` <chr>, `S. hominis` <chr>, `S. pneumoniae` <chr>
# Use FUN to change to transformation of microorganism codes
bug_drug_combinations(example_isolates,
FUN = mo_gramstain
)
#> # A tibble: 80 × 8
#> mo ab S SDD I R NI total
#> <chr> <chr> <int> <int> <int> <int> <int> <int>
#> 1 Gram-negative AMC 463 0 89 174 0 726
#> 2 Gram-negative AMK 251 0 0 5 0 256
#> 3 Gram-negative AMP 226 0 0 405 0 631
#> 4 Gram-negative AMX 226 0 0 405 0 631
#> 5 Gram-negative AZM 1 0 2 696 0 699
#> 6 Gram-negative CAZ 607 0 0 27 0 634
#> 7 Gram-negative CHL 1 0 0 30 0 31
#> 8 Gram-negative CIP 610 0 11 63 0 684
#> 9 Gram-negative CLI 18 0 1 709 0 728
#> 10 Gram-negative COL 309 0 0 78 0 387
#> # 70 more rows
#> Use 'format()' on this result to get a publishable/printable format.
bug_drug_combinations(example_isolates,
FUN = function(x) {
ifelse(x == as.mo("Escherichia coli"),
"E. coli",
"Others"
)
}
)
#> # A tibble: 80 × 8
#> mo ab S SDD I R NI total
#> <chr> <chr> <int> <int> <int> <int> <int> <int>
#> 1 E. coli AMC 332 0 74 61 0 467
#> 2 E. coli AMK 171 0 0 0 0 171
#> 3 E. coli AMP 196 0 0 196 0 392
#> 4 E. coli AMX 196 0 0 196 0 392
#> 5 E. coli AZM 0 0 0 467 0 467
#> 6 E. coli CAZ 449 0 0 11 0 460
#> 7 E. coli CHL 0 0 0 0 0 0
#> 8 E. coli CIP 398 0 1 57 0 456
#> 9 E. coli CLI 0 0 0 467 0 467
#> 10 E. coli COL 240 0 0 0 0 240
#> # 70 more rows
#> Use 'format()' on this result to get a publishable/printable format.
# }
```

View File

@@ -21,7 +21,7 @@ Use as.sir() to transform MICs or disks measurements to SIR values."><meta prope
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,173 @@
# 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. This
dataset contain breakpoints for humans, 7 different animal groups, and
ECOFFs.
These breakpoints are currently implemented:
- For **clinical microbiology**: EUCAST 2011-2025 and CLSI 2011-2025;
- For **veterinary microbiology**: EUCAST 2021-2025 and CLSI 2019-2025;
- For **ECOFFs** (Epidemiological Cut-off Values): EUCAST 2020-2025 and
CLSI 2022-2025.
Use [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) to transform
MICs or disks measurements to SIR values.
## Usage
``` r
clinical_breakpoints
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 40
217 observations and 14 variables:
- `guideline`
Name of the guideline
- `type`
Breakpoint type, either "ECOFF", "animal", or "human"
- `host`
Host of infectious agent. This is mostly useful for veterinary
breakpoints and is either "ECOFF", "aquatic", "cats", "cattle",
"dogs", "horse", "human", "poultry", or "swine"
- `method`
Testing method, either "DISK" or "MIC"
- `site`
Body site for which the breakpoint must be applied, e.g. "Oral" or
"Respiratory"
- `mo`
Microbial ID, see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)
- `rank_index`
Taxonomic rank index of `mo` from 1 (subspecies/infraspecies) to 5
(unknown microorganism)
- `ab`
Antimicrobial code as used by this package, EARS-Net and WHONET, see
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md)
- `ref_tbl`
Info about where the guideline rule can be found
- `disk_dose`
Dose of the used disk diffusion method
- `breakpoint_S`
Lowest MIC value or highest number of millimetres that leads to "S"
- `breakpoint_R`
Highest MIC value or lowest number of millimetres that leads to "R",
can be `NA`
- `uti`
A [logical](https://rdrr.io/r/base/logical.html) value
(`TRUE`/`FALSE`) to indicate whether the rule applies to a urinary
tract infection (UTI)
- `is_SDD`
A [logical](https://rdrr.io/r/base/logical.html) value
(`TRUE`/`FALSE`) to indicate whether the intermediate range between
"S" and "R" should be interpreted as "SDD", instead of "I". This
currently applies to 48 breakpoints.
## Details
### Different Types of Breakpoints
Supported types of breakpoints are ECOFF, animal, and human. ECOFF
(Epidemiological cut-off) values are used in antimicrobial
susceptibility testing to differentiate between wild-type and
non-wild-type strains of bacteria or fungi.
The default is `"human"`, which can also be set with the package option
[`AMR_breakpoint_type`](https://amr-for-r.org/reference/AMR-options.md).
Use
[`as.sir(..., breakpoint_type = ...)`](https://amr-for-r.org/reference/as.sir.md)
to interpret raw data using a specific breakpoint type, e.g.
`as.sir(..., breakpoint_type = "ECOFF")` to use ECOFFs.
### Imported From WHONET
Clinical breakpoints in this package were validated through and imported
from [WHONET](https://whonet.org), a free desktop Windows application
developed and supported by the WHO Collaborating Centre for Surveillance
of Antimicrobial Resistance. More can be read on [their
website](https://whonet.org). The developers of WHONET and this `AMR`
package have been in contact about sharing their work. We highly
appreciate their great development on the WHONET software.
Our import and reproduction script can be found here:
<https://github.com/msberends/AMR/blob/main/data-raw/_reproduction_scripts/reproduction_of_clinical_breakpoints.R>.
### Response From CLSI and EUCAST
The CEO of CLSI and the chairman of EUCAST have endorsed the work and
public use of this `AMR` package (and consequently the use of their
breakpoints) in June 2023, when future development of distributing
clinical breakpoints was discussed in a meeting between CLSI, EUCAST,
WHO, developers of WHONET software, and developers of this `AMR`
package.
### Download Note
This `AMR` package (and the WHONET software as well) contains rather
complex internal methods to apply the guidelines. For example, some
breakpoints must be applied on certain species groups (which are in case
of this package available through the
[microorganisms.groups](https://amr-for-r.org/reference/microorganisms.groups.md)
data set). It is important that this is considered when implementing the
breakpoints for own use.
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
[intrinsic_resistant](https://amr-for-r.org/reference/intrinsic_resistant.md)
## Examples
``` r
clinical_breakpoints
#> # A tibble: 40,217 × 14
#> guideline type host method site mo rank_index ab ref_tbl
#> <chr> <chr> <chr> <chr> <chr> <mo> <dbl> <ab> <chr>
#> 1 EUCAST 2025 human human DISK NA B_ACHRMB_XYLS 2 MEM A. xylo…
#> 2 EUCAST 2025 human human MIC NA B_ACHRMB_XYLS 2 MEM A. xylo…
#> 3 EUCAST 2025 human human DISK NA B_ACHRMB_XYLS 2 SXT A. xylo…
#> 4 EUCAST 2025 human human MIC NA B_ACHRMB_XYLS 2 SXT A. xylo…
#> 5 EUCAST 2025 human human DISK NA B_ACHRMB_XYLS 2 TZP A. xylo…
#> 6 EUCAST 2025 human human MIC NA B_ACHRMB_XYLS 2 TZP A. xylo…
#> 7 EUCAST 2025 human human DISK NA B_ACNTB 3 AMK Acineto…
#> 8 EUCAST 2025 human human DISK Uncomp… B_ACNTB 3 AMK Acineto…
#> 9 EUCAST 2025 human human MIC NA B_ACNTB 3 AMK Acineto…
#> 10 EUCAST 2025 human human MIC Uncomp… B_ACNTB 3 AMK Acineto…
#> # 40,207 more rows
#> # 5 more variables: disk_dose <chr>, breakpoint_S <dbl>, breakpoint_R <dbl>,
#> # uti <lgl>, is_SDD <lgl>
```

View File

@@ -9,7 +9,7 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

270
reference/count.md Normal file
View File

@@ -0,0 +1,270 @@
# Count Available Isolates
These functions can be used to count resistant/susceptible microbial
isolates. All functions support quasiquotation with pipes, can be used
in [`summarise()`](https://dplyr.tidyverse.org/reference/summarise.html)
from the `dplyr` package and also support grouped variables, see
*Examples*.
`count_resistant()` should be used to count resistant isolates,
`count_susceptible()` should be used to count susceptible isolates.
## Usage
``` r
count_resistant(..., only_all_tested = FALSE)
count_susceptible(..., only_all_tested = FALSE)
count_S(..., only_all_tested = FALSE)
count_SI(..., only_all_tested = FALSE)
count_I(..., only_all_tested = FALSE)
count_IR(..., only_all_tested = FALSE)
count_R(..., only_all_tested = FALSE)
count_all(..., only_all_tested = FALSE)
n_sir(..., only_all_tested = FALSE)
count_df(data, translate_ab = "name", language = get_AMR_locale(),
combine_SI = TRUE)
```
## Arguments
- ...:
One or more vectors (or columns) with antibiotic interpretations. They
will be transformed internally with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) if needed.
- only_all_tested:
(for combination therapies, i.e. using more than one variable for
`...`): a [logical](https://rdrr.io/r/base/logical.html) to indicate
that isolates must be tested for all antimicrobials, see section
*Combination Therapy* below.
- data:
A [data.frame](https://rdrr.io/r/base/data.frame.html) containing
columns with class [`sir`](https://amr-for-r.org/reference/as.sir.md)
(see [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)).
- translate_ab:
A column name of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set to translate the antibiotic abbreviations to, using
[`ab_property()`](https://amr-for-r.org/reference/ab_property.md).
- language:
Language of the returned text - the default is the current system
language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md))
and can also be set with the package option
[`AMR_locale`](https://amr-for-r.org/reference/AMR-options.md). Use
`language = NULL` or `language = ""` to prevent translation.
- combine_SI:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
all values of S, SDD, and I must be merged into one, so the output
only consists of S+SDD+I vs. R (susceptible vs. resistant) - the
default is `TRUE`.
## Value
An [integer](https://rdrr.io/r/base/integer.html)
## Details
These functions are meant to count isolates. Use the
[`resistance()`](https://amr-for-r.org/reference/proportion.md)/[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
functions to calculate microbial resistance/susceptibility.
The function `count_resistant()` is equal to the function `count_R()`.
The function `count_susceptible()` is equal to the function
`count_SI()`.
The function `n_sir()` is an alias of `count_all()`. They can be used to
count all available isolates, i.e. where all input antimicrobials have
an available result (S, I or R). Their use is equal to
[`n_distinct()`](https://dplyr.tidyverse.org/reference/n_distinct.html).
Their function is equal to
`count_susceptible(...) + count_resistant(...)`.
The function `count_df()` takes any variable from `data` that has an
[`sir`](https://amr-for-r.org/reference/as.sir.md) class (created with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)) and counts the
number of S's, I's and R's. It also supports grouped variables. The
function [`sir_df()`](https://amr-for-r.org/reference/proportion.md)
works exactly like `count_df()`, but adds the percentage of S, I and R.
## Interpretation of SIR
In 2019, the European Committee on Antimicrobial Susceptibility Testing
(EUCAST) has decided to change the definitions of susceptibility testing
categories S, I, and R (<https://www.eucast.org/newsiandr>).
This AMR package follows insight; use
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
(equal to
[`proportion_SI()`](https://amr-for-r.org/reference/proportion.md)) to
determine antimicrobial susceptibility and `count_susceptible()` (equal
to `count_SI()`) to count susceptible isolates.
## Combination Therapy
When using more than one variable for `...` (= combination therapy), use
`only_all_tested` to only count isolates that are tested for all
antimicrobials/variables that you test them for. See this example for
two antimicrobials, Drug A and Drug B, about how
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
works to calculate the %SI:
--------------------------------------------------------------------
only_all_tested = FALSE only_all_tested = TRUE
----------------------- -----------------------
Drug A Drug B considered considered considered considered
susceptible tested susceptible tested
-------- -------- ----------- ---------- ----------- ----------
S or I S or I X X X X
R S or I X X X X
<NA> S or I X X - -
S or I R X X X X
R R - X - X
<NA> R - - - -
S or I <NA> X X - -
R <NA> - - - -
<NA> <NA> - - - -
--------------------------------------------------------------------
Please note that, in combination therapies, for `only_all_tested = TRUE`
applies that:
count_S() + count_I() + count_R() = count_all()
proportion_S() + proportion_I() + proportion_R() = 1
and that, in combination therapies, for `only_all_tested = FALSE`
applies that:
count_S() + count_I() + count_R() >= count_all()
proportion_S() + proportion_I() + proportion_R() >= 1
Using `only_all_tested` has no impact when only using one antibiotic as
input.
## See also
[`proportion_*`](https://amr-for-r.org/reference/proportion.md) to
calculate microbial resistance and susceptibility.
## Examples
``` r
# example_isolates is a data set available in the AMR package.
# run ?example_isolates for more info.
# base R ------------------------------------------------------------
count_resistant(example_isolates$AMX) # counts "R"
#> [1] 804
count_susceptible(example_isolates$AMX) # counts "S" and "I"
#> [1] 546
count_all(example_isolates$AMX) # counts "S", "I" and "R"
#> [1] 1350
# be more specific
count_S(example_isolates$AMX)
#> [1] 543
count_SI(example_isolates$AMX)
#> [1] 546
count_I(example_isolates$AMX)
#> [1] 3
count_IR(example_isolates$AMX)
#> [1] 807
count_R(example_isolates$AMX)
#> [1] 804
# Count all available isolates
count_all(example_isolates$AMX)
#> [1] 1350
n_sir(example_isolates$AMX)
#> [1] 1350
# n_sir() is an alias of count_all().
# Since it counts all available isolates, you can
# calculate back to count e.g. susceptible isolates.
# These results are the same:
count_susceptible(example_isolates$AMX)
#> [1] 546
susceptibility(example_isolates$AMX) * n_sir(example_isolates$AMX)
#> [1] 546
# dplyr -------------------------------------------------------------
# \donttest{
if (require("dplyr")) {
example_isolates %>%
group_by(ward) %>%
summarise(
R = count_R(CIP),
I = count_I(CIP),
S = count_S(CIP),
n1 = count_all(CIP), # the actual total; sum of all three
n2 = n_sir(CIP), # same - analogous to n_distinct
total = n()
) # NOT the number of tested isolates!
# Number of available isolates for a whole antibiotic class
# (i.e., in this data set columns GEN, TOB, AMK, KAN)
example_isolates %>%
group_by(ward) %>%
summarise(across(aminoglycosides(), n_sir))
# Count co-resistance between amoxicillin/clav acid and gentamicin,
# so we can see that combination therapy does a lot more than mono therapy.
# Please mind that `susceptibility()` calculates percentages right away instead.
example_isolates %>% count_susceptible(AMC) # 1433
example_isolates %>% count_all(AMC) # 1879
example_isolates %>% count_susceptible(GEN) # 1399
example_isolates %>% count_all(GEN) # 1855
example_isolates %>% count_susceptible(AMC, GEN) # 1764
example_isolates %>% count_all(AMC, GEN) # 1936
# Get number of S+I vs. R immediately of selected columns
example_isolates %>%
select(AMX, CIP) %>%
count_df(translate = FALSE)
# It also supports grouping variables
example_isolates %>%
select(ward, AMX, CIP) %>%
group_by(ward) %>%
count_df(translate = FALSE)
}
#> For `aminoglycosides()` using columns 'GEN' (gentamicin), 'TOB'
#> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)
#> # A tibble: 12 × 4
#> ward antibiotic interpretation value
#> <chr> <chr> <ord> <int>
#> 1 Clinical AMX SI 357
#> 2 Clinical AMX R 487
#> 3 Clinical CIP SI 741
#> 4 Clinical CIP R 128
#> 5 ICU AMX SI 158
#> 6 ICU AMX R 270
#> 7 ICU CIP SI 362
#> 8 ICU CIP R 85
#> 9 Outpatient AMX SI 31
#> 10 Outpatient AMX R 47
#> 11 Outpatient CIP SI 78
#> 12 Outpatient CIP R 15
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -151,16 +151,16 @@
<li><p>aminopenicillins<br>(amoxicillin and ampicillin)</p></li>
<li><p>antifungals<br>(amorolfine, amphotericin B, amphotericin B-high, anidulafungin, butoconazole, caspofungin, ciclopirox, clotrimazole, econazole, fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin, ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole, manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin, posaconazole, rezafungin, ribociclib, sulconazole, terbinafine, terconazole, and voriconazole)</p></li>
<li><p>antimycobacterials<br>(4-aminosalicylic acid, calcium aminosalicylate, capreomycin, clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid, ethionamide, isoniazid, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide, p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide, rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, and viomycin)</p></li>
<li><p>betalactams<br>(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam)</p></li>
<li><p>betalactams_with_inhibitor<br>(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid)</p></li>
<li><p>carbapenems<br>(biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, and tebipenem)</p></li>
<li><p>cephalosporins<br>(cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)</p></li>
<li><p>betalactams<br>(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam)</p></li>
<li><p>betalactams_with_inhibitor<br>(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid)</p></li>
<li><p>carbapenems<br>(biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, taniborbactam, and tebipenem)</p></li>
<li><p>cephalosporins<br>(cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)</p></li>
<li><p>cephalosporins_1st<br>(cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin, cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole, and cephradine)</p></li>
<li><p>cephalosporins_2nd<br>(cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan, cefotiam, cefoxitin, cefoxitin screening test, cefprozil, cefuroxime, cefuroxime axetil, and loracarbef)</p></li>
<li><p>cephalosporins_3rd<br>(cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime, cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotiam hexetil, cefovecin, cefpimizole, cefpiramide, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefsulodin, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, and latamoxef)</p></li>
<li><p>cephalosporins_4th<br>(cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, and cefquinome)</p></li>
<li><p>cephalosporins_4th<br>(cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, and cefquinome)</p></li>
<li><p>cephalosporins_5th<br>(ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole medocaril, and ceftolozane/tazobactam)</p></li>
<li><p>cephalosporins_except_caz<br>(cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)</p></li>
<li><p>cephalosporins_except_caz<br>(cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)</p></li>
<li><p>fluoroquinolones<br>(besifloxacin, ciprofloxacin, ciprofloxacin/metronidazole, ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test, norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin, pazufloxacin, pefloxacin, pefloxacin screening test, pradofloxacin, premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and trovafloxacin)</p></li>
<li><p>glycopeptides<br>(avoparcin, bleomycin, dalbavancin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, vancomycin, and vancomycin-macromethod)</p></li>
<li><p>glycopeptides_except_lipo<br>(avoparcin, bleomycin, norvancomycin, ramoplanin, teicoplanin, teicoplanin-macromethod, vancomycin, and vancomycin-macromethod)</p></li>
@@ -239,7 +239,8 @@
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;">biapenem</span> (BIA), <span style="color: #0000BB;">doripenem</span> (DOR), <span style="color: #0000BB;">ertapenem</span> (ETP), <span style="color: #0000BB;">imipenem</span> (IPM),</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;">imipenem/EDTA</span> (IPE), <span style="color: #0000BB;">imipenem/relebactam</span> (IMR), <span style="color: #0000BB;">meropenem</span> (MEM),</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;">meropenem/nacubactam</span> (MNC), <span style="color: #0000BB;">meropenem/vaborbactam</span> (MEV), <span style="color: #0000BB;">panipenem</span> (PAN),</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;">razupenem</span> (RZM), <span style="color: #0000BB;">ritipenem</span> (RIT), <span style="color: #0000BB;">ritipenem acoxil</span> (RIA), <span style="color: #0000BB;">tebipenem</span> (TBP)</span>
<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #0000BB;">razupenem</span> (RZM), <span style="color: #0000BB;">ritipenem</span> (RIT), <span style="color: #0000BB;">ritipenem acoxil</span> (RIA), <span style="color: #0000BB;">taniborbactam</span></span>
<span class="r-out co"><span class="r-pr">#&gt;</span> (TAN), <span style="color: #0000BB;">tebipenem</span> (TBP)</span>
</code></pre></div>
</div>
</main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>

View File

@@ -0,0 +1,504 @@
# Define Custom EUCAST Rules
Define custom EUCAST rules for your organisation or specific analysis
and use the output of this function in
[`eucast_rules()`](https://amr-for-r.org/reference/eucast_rules.md).
## Usage
``` r
custom_eucast_rules(...)
```
## Arguments
- ...:
Rules in [formula](https://rdrr.io/r/base/tilde.html) notation, see
below for instructions, and in *Examples*.
## Value
A [list](https://rdrr.io/r/base/list.html) containing the custom rules
## Details
Some organisations have their own adoption of EUCAST rules. This
function can be used to define custom EUCAST rules to be used in the
[`eucast_rules()`](https://amr-for-r.org/reference/eucast_rules.md)
function.
### Basics
If you are familiar with the
[`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html)
function of the `dplyr` package, you will recognise the input method to
set your own rules. Rules must be set using what R considers to be the
'formula notation'. The rule itself is written *before* the tilde (`~`)
and the consequence of the rule is written *after* the tilde:
x <- custom_eucast_rules(TZP == "S" ~ aminopenicillins == "S",
TZP == "R" ~ aminopenicillins == "R")
These are two custom EUCAST rules: if TZP (piperacillin/tazobactam) is
"S", all aminopenicillins (ampicillin and amoxicillin) must be made "S",
and if TZP is "R", aminopenicillins must be made "R". These rules can
also be printed to the console, so it is immediately clear how they
work:
x
#> A set of custom EUCAST rules:
#>
#> 1. If TZP is "S" then set to S :
#> amoxicillin (AMX), ampicillin (AMP)
#>
#> 2. If TZP is "R" then set to R :
#> amoxicillin (AMX), ampicillin (AMP)
The rules (the part *before* the tilde, in above example `TZP == "S"`
and `TZP == "R"`) must be evaluable in your data set: it should be able
to run as a filter in your data set without errors. This means for the
above example that the column `TZP` must exist. We will create a sample
data set and test the rules set:
df <- data.frame(mo = c("Escherichia coli", "Klebsiella pneumoniae"),
TZP = as.sir("R"),
ampi = as.sir("S"),
cipro = as.sir("S"))
df
#> mo TZP ampi cipro
#> 1 Escherichia coli R S S
#> 2 Klebsiella pneumoniae R S S
eucast_rules(df,
rules = "custom",
custom_rules = x,
info = FALSE,
overwrite = TRUE)
#> mo TZP ampi cipro
#> 1 Escherichia coli R R S
#> 2 Klebsiella pneumoniae R R S
### Using taxonomic properties in rules
There is one exception in columns used for the rules: all column names
of the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md) data
set can also be used, but do not have to exist in the data set. These
column names are: "mo", "fullname", "status", "kingdom", "phylum",
"class", "order", "family", "genus", "species", "subspecies", "rank",
"ref", "oxygen_tolerance", "source", "lpsn", "lpsn_parent",
"lpsn_renamed_to", "mycobank", "mycobank_parent", "mycobank_renamed_to",
"gbif", "gbif_parent", "gbif_renamed_to", "prevalence", and "snomed".
Thus, this next example will work as well, despite the fact that the
`df` data set does not contain a column `genus`:
y <- custom_eucast_rules(
TZP == "S" & genus == "Klebsiella" ~ aminopenicillins == "S",
TZP == "R" & genus == "Klebsiella" ~ aminopenicillins == "R"
)
eucast_rules(df,
rules = "custom",
custom_rules = y,
info = FALSE,
overwrite = TRUE)
#> mo TZP ampi cipro
#> 1 Escherichia coli R S S
#> 2 Klebsiella pneumoniae R R S
### Sharing rules among multiple users
The rules set (the `y` object in this case) could be exported to a
shared file location using
[`saveRDS()`](https://rdrr.io/r/base/readRDS.html) if you collaborate
with multiple users. The custom rules set could then be imported using
[`readRDS()`](https://rdrr.io/r/base/readRDS.html).
### Usage of multiple antimicrobials and antimicrobial group names
You can define antimicrobial groups instead of single antimicrobials for
the rule consequence, which is the part *after* the tilde (~). In the
examples above, the antimicrobial group `aminopenicillins` includes both
ampicillin and amoxicillin.
Rules can also be applied to multiple antimicrobials and antimicrobial
groups simultaneously. Use the [`c()`](https://rdrr.io/r/base/c.html)
function to combine multiple antimicrobials. For instance, the following
example sets all aminopenicillins and ureidopenicillins to "R" if column
TZP (piperacillin/tazobactam) is "R":
x <- custom_eucast_rules(TZP == "R" ~ c(aminopenicillins, ureidopenicillins) == "R")
x
#> A set of custom EUCAST rules:
#>
#> 1. If TZP is "R" then set to "R":
#> amoxicillin (AMX), ampicillin (AMP), azlocillin (AZL), mezlocillin (MEZ), piperacillin (PIP), piperacillin/tazobactam (TZP)
These 35 antimicrobial groups are allowed in the rules
(case-insensitive) and can be used in any combination:
- aminoglycosides
(amikacin, amikacin/fosfomycin, apramycin, arbekacin, astromicin,
bekanamycin, dibekacin, framycetin, gentamicin, gentamicin-high,
habekacin, hygromycin, isepamicin, kanamycin, kanamycin-high,
kanamycin/cephalexin, micronomicin, neomycin, netilmicin,
pentisomicin, plazomicin, propikacin, ribostamycin, sisomicin,
streptoduocin, streptomycin, streptomycin-high, tobramycin, and
tobramycin-high)
- aminopenicillins
(amoxicillin and ampicillin)
- antifungals
(amorolfine, amphotericin B, amphotericin B-high, anidulafungin,
butoconazole, caspofungin, ciclopirox, clotrimazole, econazole,
fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin,
ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole,
manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin,
posaconazole, rezafungin, ribociclib, sulconazole, terbinafine,
terconazole, and voriconazole)
- antimycobacterials
(4-aminosalicylic acid, calcium aminosalicylate, capreomycin,
clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid,
ethionamide, isoniazid,
isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide,
p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide,
rifabutin, rifampicin, rifampicin/ethambutol/isoniazid,
rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid,
rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium
aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone,
thioacetazone/isoniazid, tiocarlide, and viomycin)
- betalactams
(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam,
ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin,
azidocillin, azlocillin, aztreonam, aztreonam/avibactam,
aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin,
benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin
screening test, biapenem, carbenicillin, carindacillin, carumonam,
cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin,
cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene,
cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime,
cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam,
cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam,
cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol,
cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole,
cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam,
ceforanide, cefoselis, cefotaxime, cefotaxime screening test,
cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam,
cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test,
cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime,
cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil,
cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline,
ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam,
ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole,
ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil,
ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam,
ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime,
cefuroxime axetil, cephradine, ciclacillin, clometocillin,
cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem,
flucloxacillin, hetacillin, imipenem, imipenem/EDTA,
imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam,
meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin,
meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin,
oxacillin screening test, panipenem, penamecillin,
penicillin/novobiocin, penicillin/sulbactam, pheneticillin,
phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam,
piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam,
procaine benzylpenicillin, propicillin, razupenem, ritipenem,
ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin,
talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin,
ticarcillin/clavulanic acid, and tigemonam)
- betalactams_with_inhibitor
(amoxicillin/clavulanic acid, amoxicillin/sulbactam,
ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam,
cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam,
cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam,
cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic
acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid,
ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic
acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor,
imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam,
mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam,
piperacillin/sulbactam, piperacillin/tazobactam, and
ticarcillin/clavulanic acid)
- carbapenems
(biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA,
imipenem/relebactam, meropenem, meropenem/nacubactam,
meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem
acoxil, taniborbactam, and tebipenem)
- cephalosporins
(cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine,
cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin,
cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren
pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid,
cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam,
cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet
pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime,
cefmetazole, cefodizime, cefonicid, cefoperazone,
cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime
screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam,
cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin
screening test, cefozopran, cefpimizole, cefpiramide, cefpirome,
cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid,
cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide,
ceftaroline, ceftaroline/avibactam, ceftazidime,
ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram
pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime
alapivoxil, ceftobiprole, ceftobiprole medocaril,
ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase
inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and
loracarbef)
- cephalosporins_1st
(cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin,
cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole,
and cephradine)
- cephalosporins_2nd
(cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan,
cefotiam, cefoxitin, cefoxitin screening test, cefprozil, cefuroxime,
cefuroxime axetil, and loracarbef)
- cephalosporins_3rd
(cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren
pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime,
cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime,
cefotaxime screening test, cefotaxime/clavulanic acid,
cefotaxime/sulbactam, cefotiam hexetil, cefovecin, cefpimizole,
cefpiramide, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic
acid, cefsulodin, ceftazidime, ceftazidime/avibactam,
ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftibuten,
ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone,
ceftriaxone/beta-lactamase inhibitor, and latamoxef)
- cephalosporins_4th
(cefepime, cefepime/amikacin, cefepime/clavulanic acid,
cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam,
cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis,
cefozopran, cefpirome, and cefquinome)
- cephalosporins_5th
(ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole
medocaril, and ceftolozane/tazobactam)
- cephalosporins_except_caz
(cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine,
cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin,
cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren
pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid,
cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam,
cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet
pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime,
cefmetazole, cefodizime, cefonicid, cefoperazone,
cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime
screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam,
cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin
screening test, cefozopran, cefpimizole, cefpiramide, cefpirome,
cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid,
cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide,
ceftaroline, ceftaroline/avibactam, ceftazidime/avibactam,
ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole,
ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil,
ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam,
ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime,
cefuroxime axetil, cephradine, latamoxef, and loracarbef)
- fluoroquinolones
(besifloxacin, ciprofloxacin, ciprofloxacin/metronidazole,
ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin,
danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin,
finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin,
grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole,
levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin,
moxifloxacin, nadifloxacin, nemonoxacin, nifuroquine, nitroxoline,
norfloxacin, norfloxacin screening test, norfloxacin/metronidazole,
norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin,
pazufloxacin, pefloxacin, pefloxacin screening test, pradofloxacin,
premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin,
sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and
trovafloxacin)
- glycopeptides
(avoparcin, bleomycin, dalbavancin, norvancomycin, oritavancin,
ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin,
vancomycin, and vancomycin-macromethod)
- glycopeptides_except_lipo
(avoparcin, bleomycin, norvancomycin, ramoplanin, teicoplanin,
teicoplanin-macromethod, vancomycin, and vancomycin-macromethod)
- isoxazolylpenicillins
(cloxacillin, dicloxacillin, flucloxacillin, meticillin, oxacillin,
and oxacillin screening test)
- lincosamides
(clindamycin, lincomycin, and pirlimycin)
- lipoglycopeptides
(dalbavancin, oritavancin, and telavancin)
- macrolides
(acetylmidecamycin, acetylspiramycin, azithromycin, clarithromycin,
dirithromycin, erythromycin, flurithromycin, gamithromycin, josamycin,
kitasamycin, meleumycin, midecamycin, miocamycin, nafithromycin,
oleandomycin, rokitamycin, roxithromycin, solithromycin, spiramycin,
telithromycin, tildipirosin, tilmicosin, troleandomycin,
tulathromycin, tylosin, and tylvalosin)
- monobactams
(aztreonam, aztreonam/avibactam, aztreonam/nacubactam, carumonam, and
tigemonam)
- nitrofurans
(furazidin, furazolidone, nifurtoinol, nitrofurantoin, and
nitrofurazone)
- oxazolidinones
(cadazolid, cycloserine, linezolid, tedizolid, and thiacetazone)
- penicillins
(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam,
ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin,
azidocillin, azlocillin, bacampicillin, benzathine benzylpenicillin,
benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin
screening test, carbenicillin, carindacillin, ciclacillin,
clometocillin, cloxacillin, dicloxacillin, epicillin, flucloxacillin,
hetacillin, lenampicillin, mecillinam, metampicillin, meticillin,
mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin
screening test, penamecillin, penicillin/novobiocin,
penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin,
piperacillin, piperacillin/sulbactam, piperacillin/tazobactam,
piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin,
propicillin, sarmoxicillin, sulbenicillin, sultamicillin,
talampicillin, temocillin, ticarcillin, and ticarcillin/clavulanic
acid)
- phenicols
(chloramphenicol, florfenicol, and thiamphenicol)
- polymyxins
(colistin, polymyxin B, and polymyxin B/polysorbate 80)
- quinolones
(besifloxacin, cinoxacin, ciprofloxacin, ciprofloxacin/metronidazole,
ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin,
danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin,
finafloxacin, fleroxacin, flumequine, garenoxacin, gatifloxacin,
gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin,
levofloxacin/ornidazole, levonadifloxacin, lomefloxacin,
marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin,
nalidixic acid, nalidixic acid screening test, nemonoxacin,
nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test,
norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin,
ofloxacin/ornidazole, orbifloxacin, oxolinic acid, pazufloxacin,
pefloxacin, pefloxacin screening test, pipemidic acid, piromidic acid,
pradofloxacin, premafloxacin, prulifloxacin, rosoxacin, rufloxacin,
sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol,
tioxacin, tosufloxacin, and trovafloxacin)
- rifamycins
(rifabutin, rifampicin, rifampicin/ethambutol/isoniazid,
rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid,
rifampicin/pyrazinamide/isoniazid, rifamycin, and rifapentine)
- streptogramins
(pristinamycin and quinupristin/dalfopristin)
- sulfonamides
(brodimoprim, sulfadiazine, sulfadiazine/tetroxoprim,
sulfadimethoxine, sulfadimidine, sulfafurazole, sulfaisodimidine,
sulfalene, sulfamazone, sulfamerazine, sulfamethizole,
sulfamethoxazole, sulfamethoxypyridazine, sulfametomidine,
sulfametoxydiazine, sulfamoxole, sulfanilamide, sulfaperin,
sulfaphenazole, sulfapyridine, sulfathiazole, and sulfathiourea)
- tetracyclines
(cetocycline, chlortetracycline, clomocycline, demeclocycline,
doxycycline, eravacycline, lymecycline, metacycline, minocycline,
omadacycline, oxytetracycline, penimepicycline, rolitetracycline,
sarecycline, tetracycline, tetracycline screening test, and
tigecycline)
- tetracyclines_except_tgc
(cetocycline, chlortetracycline, clomocycline, demeclocycline,
doxycycline, eravacycline, lymecycline, metacycline, minocycline,
omadacycline, oxytetracycline, penimepicycline, rolitetracycline,
sarecycline, tetracycline, and tetracycline screening test)
- trimethoprims
(brodimoprim, sulfadiazine, sulfadiazine/tetroxoprim,
sulfadiazine/trimethoprim, sulfadimethoxine, sulfadimidine,
sulfadimidine/trimethoprim, sulfafurazole, sulfaisodimidine,
sulfalene, sulfamazone, sulfamerazine, sulfamerazine/trimethoprim,
sulfamethizole, sulfamethoxazole, sulfamethoxypyridazine,
sulfametomidine, sulfametoxydiazine, sulfametrole/trimethoprim,
sulfamoxole, sulfamoxole/trimethoprim, sulfanilamide, sulfaperin,
sulfaphenazole, sulfapyridine, sulfathiazole, sulfathiourea,
trimethoprim, and trimethoprim/sulfamethoxazole)
- ureidopenicillins
(azlocillin, mezlocillin, piperacillin, and piperacillin/tazobactam)
## Examples
``` r
x <- custom_eucast_rules(
AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R",
AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I"
)
x
#> A set of custom EUCAST rules:
#>
#> 1. If AMC is R and genus is "Klebsiella" then set to R :
#> amoxicillin (AMX), ampicillin (AMP)
#>
#> 2. If AMC is I and genus is "Klebsiella" then set to I :
#> amoxicillin (AMX), ampicillin (AMP)
# run the custom rule set (verbose = TRUE will return a logbook instead of the data set):
eucast_rules(example_isolates,
rules = "custom",
custom_rules = x,
info = FALSE,
overwrite = TRUE,
verbose = TRUE
)
#> # A tibble: 8 × 9
#> row col mo_fullname old new rule rule_group rule_name rule_source
#> <int> <chr> <chr> <ord> <chr> <chr> <chr> <chr> <chr>
#> 1 33 AMP Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
#> 2 33 AMX Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
#> 3 34 AMP Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
#> 4 34 AMX Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
#> 5 531 AMP Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
#> 6 531 AMX Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
#> 7 1485 AMP Klebsiella oxy… R I "rep… Custom EU… Custom E… Object 'x'…
#> 8 1485 AMX Klebsiella oxy… R I "rep… Custom EU… Custom E… Object 'x'…
# combine rule sets
x2 <- c(
x,
custom_eucast_rules(TZP == "R" ~ carbapenems == "R")
)
x2
#> A set of custom EUCAST rules:
#>
#> 1. If AMC is R and genus is "Klebsiella" then set to R :
#> amoxicillin (AMX), ampicillin (AMP)
#>
#> 2. If AMC is I and genus is "Klebsiella" then set to I :
#> amoxicillin (AMX), ampicillin (AMP)
#>
#> 3. If TZP is R then set to R :
#> biapenem (BIA), doripenem (DOR), ertapenem (ETP), imipenem (IPM),
#> imipenem/EDTA (IPE), imipenem/relebactam (IMR), meropenem (MEM),
#> meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), panipenem (PAN),
#> razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), taniborbactam
#> (TAN), tebipenem (TBP)
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -148,14 +148,14 @@
<li><p><code><a href="antimicrobial_selectors.html">aminopenicillins()</a></code> can select: <br> amoxicillin and ampicillin</p></li>
<li><p><code><a href="antimicrobial_selectors.html">antifungals()</a></code> can select: <br> amorolfine, amphotericin B, amphotericin B-high, anidulafungin, butoconazole, caspofungin, ciclopirox, clotrimazole, econazole, fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin, ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole, manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin, posaconazole, rezafungin, ribociclib, sulconazole, terbinafine, terconazole, and voriconazole</p></li>
<li><p><code><a href="antimicrobial_selectors.html">antimycobacterials()</a></code> can select: <br> 4-aminosalicylic acid, calcium aminosalicylate, capreomycin, clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid, ethionamide, isoniazid, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide, p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide, rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, and viomycin</p></li>
<li><p><code><a href="antimicrobial_selectors.html">betalactams()</a></code> can select: <br> amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam</p></li>
<li><p><code><a href="antimicrobial_selectors.html">betalactams_with_inhibitor()</a></code> can select: <br> amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid</p></li>
<li><p><code><a href="antimicrobial_selectors.html">carbapenems()</a></code> can select: <br> biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, and tebipenem</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins()</a></code> can select: <br> cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef</p></li>
<li><p><code><a href="antimicrobial_selectors.html">betalactams()</a></code> can select: <br> amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam</p></li>
<li><p><code><a href="antimicrobial_selectors.html">betalactams_with_inhibitor()</a></code> can select: <br> amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid</p></li>
<li><p><code><a href="antimicrobial_selectors.html">carbapenems()</a></code> can select: <br> biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, taniborbactam, and tebipenem</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins()</a></code> can select: <br> cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins_1st()</a></code> can select: <br> cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin, cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole, and cephradine</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins_2nd()</a></code> can select: <br> cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan, cefotiam, cefoxitin, cefoxitin screening test, cefprozil, cefuroxime, cefuroxime axetil, and loracarbef</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins_3rd()</a></code> can select: <br> cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime, cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotiam hexetil, cefovecin, cefpimizole, cefpiramide, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefsulodin, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, and latamoxef</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins_4th()</a></code> can select: <br> cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, and cefquinome</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins_4th()</a></code> can select: <br> cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, and cefquinome</p></li>
<li><p><code><a href="antimicrobial_selectors.html">cephalosporins_5th()</a></code> can select: <br> ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole medocaril, and ceftolozane/tazobactam</p></li>
<li><p><code><a href="antimicrobial_selectors.html">fluoroquinolones()</a></code> can select: <br> besifloxacin, ciprofloxacin, ciprofloxacin/metronidazole, ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test, norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin, pazufloxacin, pefloxacin, pefloxacin screening test, pradofloxacin, premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and trovafloxacin</p></li>
<li><p><code><a href="antimicrobial_selectors.html">glycopeptides()</a></code> can select: <br> avoparcin, bleomycin, dalbavancin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, vancomycin, and vancomycin-macromethod</p></li>

View File

@@ -0,0 +1,515 @@
# Define Custom MDRO Guideline
Define custom a MDRO guideline for your organisation or specific
analysis and use the output of this function in
[`mdro()`](https://amr-for-r.org/reference/mdro.md).
## Usage
``` r
custom_mdro_guideline(..., as_factor = TRUE)
# S3 method for class 'custom_mdro_guideline'
c(x, ..., as_factor = NULL)
```
## Arguments
- ...:
Guideline rules in [formula](https://rdrr.io/r/base/tilde.html)
notation, see below for instructions, and in *Examples*.
- as_factor:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the returned value should be an ordered
[factor](https://rdrr.io/r/base/factor.html) (`TRUE`, default), or
otherwise a [character](https://rdrr.io/r/base/character.html) vector.
For combining rules sets (using
[`c()`](https://rdrr.io/r/base/c.html)) this value will be inherited
from the first set at default.
- x:
Existing custom MDRO rules
## Value
A [list](https://rdrr.io/r/base/list.html) containing the custom rules
## Details
Using a custom MDRO guideline is of importance if you have custom rules
to determine MDROs in your hospital, e.g., rules that are dependent on
ward, state of contact isolation or other variables in your data.
### Basics
If you are familiar with the
[`case_when()`](https://dplyr.tidyverse.org/reference/case_when.html)
function of the `dplyr` package, you will recognise the input method to
set your own rules. Rules must be set using what R considers to be the
'formula notation'. The rule itself is written *before* the tilde (`~`)
and the consequence of the rule is written *after* the tilde:
custom <- custom_mdro_guideline(CIP == "R" & age > 60 ~ "Elderly Type A",
ERY == "R" & age > 60 ~ "Elderly Type B")
If a row/an isolate matches the first rule, the value after the first
`~` (in this case *'Elderly Type A'*) will be set as MDRO value.
Otherwise, the second rule will be tried and so on. The number of rules
is unlimited.
You can print the rules set in the console for an overview. Colours will
help reading it if your console supports colours.
custom
#> A set of custom MDRO rules:
#> 1. If CIP is R and age is higher than 60 then: Elderly Type A
#> 2. If ERY is R and age is higher than 60 then: Elderly Type B
#> 3. Otherwise: Negative
#> Unmatched rows will return NA.
#> Results will be of class 'factor', with ordered levels: Negative < Elderly Type A < Elderly Type B
The outcome of the function can be used for the `guideline` argument in
the [`mdro()`](https://amr-for-r.org/reference/mdro.md) function:
x <- mdro(example_isolates, guideline = custom)
#> Determining MDROs based on custom rules, resulting in factor levels: Negative < Elderly Type A < Elderly Type B.
#> - Custom MDRO rule 1: CIP == "R" & age > 60 (198 rows matched)
#> - Custom MDRO rule 2: ERY == "R" & age > 60 (732 rows matched)
#> => Found 930 custom defined MDROs out of 2000 isolates (46.5%)
table(x)
#> x
#> Negative Elderly Type A Elderly Type B
#> 1070 198 732
Rules can also be combined with other custom rules by using
[`c()`](https://rdrr.io/r/base/c.html):
x <- mdro(example_isolates,
guideline = c(custom,
custom_mdro_guideline(ERY == "R" & age > 50 ~ "Elderly Type C")))
#> Determining MDROs based on custom rules, resulting in factor levels: Negative < Elderly Type A < Elderly Type B < Elderly Type C.
#> - Custom MDRO rule 1: CIP == "R" & age > 60 (198 rows matched)
#> - Custom MDRO rule 2: ERY == "R" & age > 60 (732 rows matched)
#> - Custom MDRO rule 3: ERY == "R" & age > 50 (109 rows matched)
#> => Found 1039 custom defined MDROs out of 2000 isolates (52.0%)
table(x)
#> x
#> Negative Elderly Type A Elderly Type B Elderly Type C
#> 961 198 732 109
### Sharing rules among multiple users
The rules set (the `custom` object in this case) could be exported to a
shared file location using
[`saveRDS()`](https://rdrr.io/r/base/readRDS.html) if you collaborate
with multiple users. The custom rules set could then be imported using
[`readRDS()`](https://rdrr.io/r/base/readRDS.html).
### Usage of multiple antimicrobials and antimicrobial group names
You can define antimicrobial groups instead of single antimicrobials for
the rule itself, which is the part *before* the tilde (~). Use
[`any()`](https://rdrr.io/r/base/any.html) or
[`all()`](https://rdrr.io/r/base/all.html) to specify the scope of the
antimicrobial group:
custom_mdro_guideline(
AMX == "R" ~ "My MDRO #1",
any(cephalosporins_2nd() == "R") ~ "My MDRO #2",
all(glycopeptides() == "R") ~ "My MDRO #3"
)
All 35 antimicrobial selectors are supported for use in the rules:
- [`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
amikacin, amikacin/fosfomycin, apramycin, arbekacin, astromicin,
bekanamycin, dibekacin, framycetin, gentamicin, gentamicin-high,
habekacin, hygromycin, isepamicin, kanamycin, kanamycin-high,
kanamycin/cephalexin, micronomicin, neomycin, netilmicin,
pentisomicin, plazomicin, propikacin, ribostamycin, sisomicin,
streptoduocin, streptomycin, streptomycin-high, tobramycin, and
tobramycin-high
- [`aminopenicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
amoxicillin and ampicillin
- [`antifungals()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
amorolfine, amphotericin B, amphotericin B-high, anidulafungin,
butoconazole, caspofungin, ciclopirox, clotrimazole, econazole,
fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin,
ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole,
manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin,
posaconazole, rezafungin, ribociclib, sulconazole, terbinafine,
terconazole, and voriconazole
- [`antimycobacterials()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
4-aminosalicylic acid, calcium aminosalicylate, capreomycin,
clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid,
ethionamide, isoniazid,
isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide,
p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide,
rifabutin, rifampicin, rifampicin/ethambutol/isoniazid,
rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid,
rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium
aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone,
thioacetazone/isoniazid, tiocarlide, and viomycin
- [`betalactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam,
ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin,
azidocillin, azlocillin, aztreonam, aztreonam/avibactam,
aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin,
benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin
screening test, biapenem, carbenicillin, carindacillin, carumonam,
cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin,
cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene,
cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime,
cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam,
cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam,
cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol,
cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole,
cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam,
ceforanide, cefoselis, cefotaxime, cefotaxime screening test,
cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam,
cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test,
cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime,
cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil,
cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline,
ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam,
ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole,
ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil,
ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam,
ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime,
cefuroxime axetil, cephradine, ciclacillin, clometocillin,
cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem,
flucloxacillin, hetacillin, imipenem, imipenem/EDTA,
imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam,
meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin,
meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin,
oxacillin screening test, panipenem, penamecillin,
penicillin/novobiocin, penicillin/sulbactam, pheneticillin,
phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam,
piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam,
procaine benzylpenicillin, propicillin, razupenem, ritipenem,
ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin,
talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin,
ticarcillin/clavulanic acid, and tigemonam
- [`betalactams_with_inhibitor()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
amoxicillin/clavulanic acid, amoxicillin/sulbactam,
ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam,
cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam,
cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam,
cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic
acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid,
ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic
acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor,
imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam,
mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam,
piperacillin/sulbactam, piperacillin/tazobactam, and
ticarcillin/clavulanic acid
- [`carbapenems()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA,
imipenem/relebactam, meropenem, meropenem/nacubactam,
meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem
acoxil, taniborbactam, and tebipenem
- [`cephalosporins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin,
cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene,
cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime,
cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam,
cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam,
cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol,
cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole,
cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam,
ceforanide, cefoselis, cefotaxime, cefotaxime screening test,
cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam,
cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test,
cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime,
cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil,
cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline,
ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam,
ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole,
ceftibuten, ceftiofur, ceftizoxime, ceftizoxime alapivoxil,
ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam,
ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime,
cefuroxime axetil, cephradine, latamoxef, and loracarbef
- [`cephalosporins_1st()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin,
cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole,
and cephradine
- [`cephalosporins_2nd()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan,
cefotiam, cefoxitin, cefoxitin screening test, cefprozil, cefuroxime,
cefuroxime axetil, and loracarbef
- [`cephalosporins_3rd()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren
pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime,
cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime,
cefotaxime screening test, cefotaxime/clavulanic acid,
cefotaxime/sulbactam, cefotiam hexetil, cefovecin, cefpimizole,
cefpiramide, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic
acid, cefsulodin, ceftazidime, ceftazidime/avibactam,
ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftibuten,
ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone,
ceftriaxone/beta-lactamase inhibitor, and latamoxef
- [`cephalosporins_4th()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cefepime, cefepime/amikacin, cefepime/clavulanic acid,
cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam,
cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis,
cefozopran, cefpirome, and cefquinome
- [`cephalosporins_5th()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole
medocaril, and ceftolozane/tazobactam
- [`fluoroquinolones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
besifloxacin, ciprofloxacin, ciprofloxacin/metronidazole,
ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin,
danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin,
finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin,
grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole,
levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin,
moxifloxacin, nadifloxacin, nemonoxacin, nifuroquine, nitroxoline,
norfloxacin, norfloxacin screening test, norfloxacin/metronidazole,
norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin,
pazufloxacin, pefloxacin, pefloxacin screening test, pradofloxacin,
premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin,
sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and
trovafloxacin
- [`glycopeptides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
avoparcin, bleomycin, dalbavancin, norvancomycin, oritavancin,
ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin,
vancomycin, and vancomycin-macromethod
- [`isoxazolylpenicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cloxacillin, dicloxacillin, flucloxacillin, meticillin, oxacillin, and
oxacillin screening test
- [`lincosamides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
clindamycin, lincomycin, and pirlimycin
- [`lipoglycopeptides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
dalbavancin, oritavancin, and telavancin
- [`macrolides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
acetylmidecamycin, acetylspiramycin, azithromycin, clarithromycin,
dirithromycin, erythromycin, flurithromycin, gamithromycin, josamycin,
kitasamycin, meleumycin, midecamycin, miocamycin, nafithromycin,
oleandomycin, rokitamycin, roxithromycin, solithromycin, spiramycin,
telithromycin, tildipirosin, tilmicosin, troleandomycin,
tulathromycin, tylosin, and tylvalosin
- [`monobactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
aztreonam, aztreonam/avibactam, aztreonam/nacubactam, carumonam, and
tigemonam
- [`nitrofurans()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
furazidin, furazolidone, nifurtoinol, nitrofurantoin, and
nitrofurazone
- [`oxazolidinones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cadazolid, cycloserine, linezolid, tedizolid, and thiacetazone
- [`penicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam,
ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin,
azidocillin, azlocillin, bacampicillin, benzathine benzylpenicillin,
benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin
screening test, carbenicillin, carindacillin, ciclacillin,
clometocillin, cloxacillin, dicloxacillin, epicillin, flucloxacillin,
hetacillin, lenampicillin, mecillinam, metampicillin, meticillin,
mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin
screening test, penamecillin, penicillin/novobiocin,
penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin,
piperacillin, piperacillin/sulbactam, piperacillin/tazobactam,
piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin,
propicillin, sarmoxicillin, sulbenicillin, sultamicillin,
talampicillin, temocillin, ticarcillin, and ticarcillin/clavulanic
acid
- [`phenicols()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
chloramphenicol, florfenicol, and thiamphenicol
- [`polymyxins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
colistin, polymyxin B, and polymyxin B/polysorbate 80
- [`quinolones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
besifloxacin, cinoxacin, ciprofloxacin, ciprofloxacin/metronidazole,
ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin,
danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin,
finafloxacin, fleroxacin, flumequine, garenoxacin, gatifloxacin,
gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin,
levofloxacin/ornidazole, levonadifloxacin, lomefloxacin,
marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin,
nalidixic acid, nalidixic acid screening test, nemonoxacin,
nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test,
norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin,
ofloxacin/ornidazole, orbifloxacin, oxolinic acid, pazufloxacin,
pefloxacin, pefloxacin screening test, pipemidic acid, piromidic acid,
pradofloxacin, premafloxacin, prulifloxacin, rosoxacin, rufloxacin,
sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol,
tioxacin, tosufloxacin, and trovafloxacin
- [`rifamycins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
rifabutin, rifampicin, rifampicin/ethambutol/isoniazid,
rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid,
rifampicin/pyrazinamide/isoniazid, rifamycin, and rifapentine
- [`streptogramins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
pristinamycin and quinupristin/dalfopristin
- [`sulfonamides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
brodimoprim, sulfadiazine, sulfadiazine/tetroxoprim, sulfadimethoxine,
sulfadimidine, sulfafurazole, sulfaisodimidine, sulfalene,
sulfamazone, sulfamerazine, sulfamethizole, sulfamethoxazole,
sulfamethoxypyridazine, sulfametomidine, sulfametoxydiazine,
sulfamoxole, sulfanilamide, sulfaperin, sulfaphenazole, sulfapyridine,
sulfathiazole, and sulfathiourea
- [`tetracyclines()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
cetocycline, chlortetracycline, clomocycline, demeclocycline,
doxycycline, eravacycline, lymecycline, metacycline, minocycline,
omadacycline, oxytetracycline, penimepicycline, rolitetracycline,
sarecycline, tetracycline, tetracycline screening test, and
tigecycline
- [`trimethoprims()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
brodimoprim, sulfadiazine, sulfadiazine/tetroxoprim,
sulfadiazine/trimethoprim, sulfadimethoxine, sulfadimidine,
sulfadimidine/trimethoprim, sulfafurazole, sulfaisodimidine,
sulfalene, sulfamazone, sulfamerazine, sulfamerazine/trimethoprim,
sulfamethizole, sulfamethoxazole, sulfamethoxypyridazine,
sulfametomidine, sulfametoxydiazine, sulfametrole/trimethoprim,
sulfamoxole, sulfamoxole/trimethoprim, sulfanilamide, sulfaperin,
sulfaphenazole, sulfapyridine, sulfathiazole, sulfathiourea,
trimethoprim, and trimethoprim/sulfamethoxazole
- [`ureidopenicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
can select:
azlocillin, mezlocillin, piperacillin, and piperacillin/tazobactam
## Examples
``` r
x <- custom_mdro_guideline(
CIP == "R" & age > 60 ~ "Elderly Type A",
ERY == "R" & age > 60 ~ "Elderly Type B"
)
x
#> A set of custom MDRO rules:
#> 1. If CIP is R and age is higher than 60 then: Elderly Type A
#> 2. If ERY is R and age is higher than 60 then: Elderly Type B
#> 3. Otherwise: Negative
#>
#> Unmatched rows will return NA.
#> Results will be of class 'factor', with ordered levels: Negative < Elderly Type A < Elderly Type B
# run the custom rule set (verbose = TRUE will return a logbook instead of the data set):
out <- mdro(example_isolates, guideline = x)
table(out)
#> out
#> Negative Elderly Type A Elderly Type B
#> 1070 198 732
out <- mdro(example_isolates, guideline = x, verbose = TRUE)
head(out)
#> row_number microorganism MDRO
#> V1 1 <NA> Elderly Type B
#> V2 2 <NA> Elderly Type B
#> V3 3 <NA> Negative
#> V4 4 <NA> Negative
#> V5 5 <NA> Negative
#> V6 6 <NA> Negative
#> reason
#> V1 matched rule 2: ERY == "R" & age > 60
#> V2 matched rule 2: ERY == "R" & age > 60
#> V3 no rules matched
#> V4 no rules matched
#> V5 no rules matched
#> V6 no rules matched
#> all_nonsusceptible_columns guideline
#> V1 PEN, TMP, SXT, LNZ, VAN, TEC, TCY, ERY, CLI, AZM, RIF Custom guideline
#> V2 PEN, TMP, SXT, LNZ, VAN, TEC, TCY, ERY, CLI, AZM, RIF Custom guideline
#> V3 PEN, FLC, CXM, CAZ, ERY, AZM, COL Custom guideline
#> V4 PEN, FLC, CXM, CAZ, ERY, AZM, COL Custom guideline
#> V5 PEN, FLC, CXM, CAZ, TMP, ERY, AZM, COL Custom guideline
#> V6 PEN, FLC, CXM, CAZ, TMP, ERY, CLI, AZM, COL Custom guideline
# you can create custom guidelines using selectors (see ?antimicrobial_selectors)
my_guideline <- custom_mdro_guideline(
AMX == "R" ~ "Custom MDRO 1",
all(cephalosporins_2nd() == "R") ~ "Custom MDRO 2"
)
my_guideline
#> A set of custom MDRO rules:
#> 1. If AMX is R then: Custom MDRO 1
#> 2. If all of cephalosporins_2nd() is R then: Custom MDRO 2
#> 3. Otherwise: Negative
#>
#> Unmatched rows will return NA.
#> Results will be of class 'factor', with ordered levels: Negative < Custom MDRO 1 < Custom MDRO 2
out <- mdro(example_isolates, guideline = my_guideline)
#> Column 'esbl' is SIR eligible (despite only having empty values), since
#> it seems to be tazobactam (TAZ)
#> Column 'mecC' is SIR eligible (despite only having empty values), since
#> it seems to be mecillinam (MEC)
#> Column 'vanA' is SIR eligible (despite only having empty values), since
#> it seems to be lenampicillin (LEN)
#> Column 'vanB' is SIR eligible (despite only having empty values), since
#> it seems to be metronidazole (MTR)
#> For `cephalosporins_2nd()` using columns 'CXM' (cefuroxime) and 'FOX'
#> (cefoxitin)
#> Assuming a filter on all 2 cephalosporins_2nd. Wrap around `all()` or
#> `any()` to prevent this note.
table(out)
#> out
#> Negative Custom MDRO 1 Custom MDRO 2
#> 1144 804 52
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

85
reference/dosage.md Normal file
View File

@@ -0,0 +1,85 @@
# Data Set with Treatment Dosages as Defined by EUCAST
EUCAST breakpoints used in this package are based on the dosages in this
data set. They can be retrieved with
[`eucast_dosage()`](https://amr-for-r.org/reference/eucast_rules.md).
## Usage
``` r
dosage
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 759
observations and 9 variables:
- `ab`
Antimicrobial ID as used in this package (such as `AMC`), using the
official EARS-Net (European Antimicrobial Resistance Surveillance
Network) codes where available
- `name`
Official name of the antimicrobial drug as used by WHONET/EARS-Net or
the WHO
- `type`
Type of the dosage, either "high_dosage", "standard_dosage", or
"uncomplicated_uti"
- `dose`
Dose, such as "2 g" or "25 mg/kg"
- `dose_times`
Number of times a dose must be administered
- `administration`
Route of administration, either "", "im", "iv", or "oral"
- `notes`
Additional dosage notes
- `original_txt`
Original text in the PDF file of EUCAST
- `eucast_version`
Version number of the EUCAST Clinical Breakpoints guideline to which
these dosages apply, either 15, 14, 13.1, 12, or 11
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## Examples
``` r
dosage
#> # A tibble: 759 × 9
#> ab name type dose dose_times administration notes original_txt
#> <ab> <chr> <chr> <chr> <int> <chr> <chr> <chr>
#> 1 AMK Amikacin stan… 25-3… 1 iv "" "25-30 mg/k…
#> 2 AMX Amoxicillin high… 2 g 6 iv "" "2 g x 6 iv"
#> 3 AMX Amoxicillin stan… 1 g 3 iv "" "1 g x 3-4 …
#> 4 AMX Amoxicillin high… 0.75… 3 oral "" "0.75-1 g x…
#> 5 AMX Amoxicillin stan… 0.5 g 3 oral "" "0.5 g x 3 …
#> 6 AMX Amoxicillin unco… 0.5 g 3 oral "" "0.5 g x 3 …
#> 7 AMC Amoxicillin/cl… high… 2 g … 3 iv "" "(2 g amoxi…
#> 8 AMC Amoxicillin/cl… stan… 1 g … 3 iv "" "(1 g amoxi…
#> 9 AMC Amoxicillin/cl… high… 0.87… 3 oral "" "(0.875 g a…
#> 10 AMC Amoxicillin/cl… stan… 0.5 … 3 oral "" "(0.5 g amo…
#> # 749 more rows
#> # 1 more variable: eucast_version <dbl>
```

View File

@@ -9,7 +9,7 @@ To improve the interpretation of the antibiogram before EUCAST rules are applied
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

358
reference/eucast_rules.md Normal file
View File

@@ -0,0 +1,358 @@
# Apply EUCAST Rules
Apply rules from clinical breakpoints notes and expected resistant
phenotypes as defined by the European Committee on Antimicrobial
Susceptibility Testing (EUCAST, <https://www.eucast.org>), see *Source*.
Use `eucast_dosage()` to get a
[data.frame](https://rdrr.io/r/base/data.frame.html) with advised
dosages of a certain bug-drug combination, which is based on the
[dosage](https://amr-for-r.org/reference/dosage.md) data set.
To improve the interpretation of the antibiogram before EUCAST rules are
applied, some non-EUCAST rules can applied at default, see *Details*.
## Usage
``` r
eucast_rules(x, col_mo = NULL, info = interactive(),
rules = getOption("AMR_eucastrules", default = c("breakpoints",
"expected_phenotypes")), verbose = FALSE, version_breakpoints = 15,
version_expected_phenotypes = 1.2, version_expertrules = 3.3,
ampc_cephalosporin_resistance = NA, only_sir_columns = any(is.sir(x)),
custom_rules = NULL, overwrite = FALSE, ...)
eucast_dosage(ab, administration = "iv", version_breakpoints = 15)
```
## Source
- EUCAST Expert Rules. Version 2.0, 2012.
Leclercq et al. **EUCAST expert rules in antimicrobial susceptibility
testing.** *Clin Microbiol Infect.* 2013;19(2):141-60;
[doi:10.1111/j.1469-0691.2011.03703.x](https://doi.org/10.1111/j.1469-0691.2011.03703.x)
- EUCAST Expert Rules, Intrinsic Resistance and Exceptional Phenotypes
Tables. Version 3.1, 2016.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/Expert_rules_intrinsic_exceptional_V3.1.pdf)
- EUCAST Intrinsic Resistance and Unusual Phenotypes. Version 3.2, 2020.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/2020/Intrinsic_Resistance_and_Unusual_Phenotypes_Tables_v3.2_20200225.pdf)
- EUCAST Intrinsic Resistance and Unusual Phenotypes. Version 3.3, 2021.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/2021/Intrinsic_Resistance_and_Unusual_Phenotypes_Tables_v3.3_20211018.pdf)
- EUCAST Breakpoint tables for interpretation of MICs and zone
diameters. Version 9.0, 2019.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Breakpoint_tables/v_9.0_Breakpoint_Tables.xlsx)
- EUCAST Breakpoint tables for interpretation of MICs and zone
diameters. Version 10.0, 2020.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Breakpoint_tables/v_10.0_Breakpoint_Tables.xlsx)
- EUCAST Breakpoint tables for interpretation of MICs and zone
diameters. Version 11.0, 2021.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Breakpoint_tables/v_11.0_Breakpoint_Tables.xlsx)
- EUCAST Breakpoint tables for interpretation of MICs and zone
diameters. Version 12.0, 2022.
[(link)](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Breakpoint_tables/v_12.0_Breakpoint_Tables.xlsx)
## Arguments
- x:
A data set with antimicrobials columns, such as `amox`, `AMX` and
`AMC`.
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
progress should be printed to the console - the default is only print
while in interactive sessions.
- rules:
A [character](https://rdrr.io/r/base/character.html) vector that
specifies which rules should be applied. Must be one or more of
`"breakpoints"`, `"expected_phenotypes"`, `"expert"`, `"other"`,
`"custom"`, `"all"`, and defaults to
`c("breakpoints", "expected_phenotypes")`. The default value can be
set to another value using the package option
[`AMR_eucastrules`](https://amr-for-r.org/reference/AMR-options.md):
`options(AMR_eucastrules = "all")`. If using `"custom"`, be sure to
fill in argument `custom_rules` too. Custom rules can be created with
[`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md).
- verbose:
A [logical](https://rdrr.io/r/base/logical.html) to turn Verbose mode
on and off (default is off). In Verbose mode, the function does not
apply rules to the data, but instead returns a data set in logbook
form with extensive info about which rows and columns would be
effected and in which way. Using Verbose mode takes a lot more time.
- version_breakpoints:
The version number to use for the EUCAST Clinical Breakpoints
guideline. Can be "15.0", "14.0", "13.1", "12.0", "11.0", or "10.0".
- version_expected_phenotypes:
The version number to use for the EUCAST Expected Phenotypes. Can be
"1.2".
- version_expertrules:
The version number to use for the EUCAST Expert Rules and Intrinsic
Resistance guideline. Can be "3.3", "3.2", or "3.1".
- ampc_cephalosporin_resistance:
(only applies when `rules` contains `"expert"` or `"all"`) a
[character](https://rdrr.io/r/base/character.html) value that should
be applied to cefotaxime, ceftriaxone and ceftazidime for AmpC
de-repressed cephalosporin-resistant mutants - the default is `NA`.
Currently only works when `version_expertrules` is `3.2` and higher;
these versions of '*EUCAST Expert Rules on Enterobacterales*' state
that results of cefotaxime, ceftriaxone and ceftazidime should be
reported with a note, or results should be suppressed (emptied) for
these three drugs. A value of `NA` (the default) for this argument
will remove results for these three drugs, while e.g. a value of `"R"`
will make the results for these drugs resistant. Use `NULL` or `FALSE`
to not alter results for these three drugs of AmpC de-repressed
cephalosporin-resistant mutants. Using `TRUE` is equal to using
`"R"`.
For *EUCAST Expert Rules* v3.2, this rule applies to: *Citrobacter
braakii*, *Citrobacter freundii*, *Citrobacter gillenii*, *Citrobacter
murliniae*, *Citrobacter rodenticum*, *Citrobacter sedlakii*,
*Citrobacter werkmanii*, *Citrobacter youngae*, *Enterobacter*,
*Hafnia alvei*, *Klebsiella aerogenes*, *Morganella morganii*,
*Providencia*, and *Serratia*.
- only_sir_columns:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
only antimicrobial columns must be included that were transformed to
class [sir](https://amr-for-r.org/reference/as.sir.md) on beforehand.
Defaults to `FALSE` if no columns of `x` have a class
[sir](https://amr-for-r.org/reference/as.sir.md).
- custom_rules:
Custom rules to apply, created with
[`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md).
- overwrite:
A [logical](https://rdrr.io/r/base/logical.html) indicating whether to
overwrite existing SIR values (default: `FALSE`). When `FALSE`, only
non-SIR values are modified (i.e., any value that is not already S, I
or R). To ensure compliance with EUCAST guidelines, **this should
remain** `FALSE`, as EUCAST notes often state that an organism "should
be tested for susceptibility to individual agents or be reported
resistant".
- ...:
Column names of antimicrobials. To automatically detect antimicrobial
column names, do not provide any named arguments;
[`guess_ab_col()`](https://amr-for-r.org/reference/guess_ab_col.md)
will then be used for detection. To manually specify a column, provide
its name (case-insensitive) as an argument, e.g.
`AMX = "amoxicillin"`. To skip a specific antimicrobial, set it to
`NULL`, e.g. `TIC = NULL` to exclude ticarcillin. If a manually
defined column does not exist in the data, it will be skipped with a
warning.
- ab:
Any (vector of) text that can be coerced to a valid antimicrobial drug
code with [`as.ab()`](https://amr-for-r.org/reference/as.ab.md).
- administration:
Route of administration, either "", "im", "iv", or "oral".
## Value
The input of `x`, possibly with edited values of antimicrobials. Or, if
`verbose = TRUE`, a [data.frame](https://rdrr.io/r/base/data.frame.html)
with all original and new values of the affected bug-drug combinations.
## Details
**Note:** This function does not translate MIC values to SIR values. Use
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) for that.
**Note:** When ampicillin (AMP, J01CA01) is not available but
amoxicillin (AMX, J01CA04) is, the latter will be used for all rules
where there is a dependency on ampicillin. These drugs are
interchangeable when it comes to expression of antimicrobial
resistance.
The file containing all EUCAST rules is located here:
<https://github.com/msberends/AMR/blob/main/data-raw/eucast_rules.tsv>.
**Note:** Old taxonomic names are replaced with the current taxonomy
where applicable. For example, *Ochrobactrum anthropi* was renamed to
*Brucella anthropi* in 2020; the original EUCAST rules v3.1 and v3.2 did
not yet contain this new taxonomic name. The `AMR` package contains the
full microbial taxonomy updated until June 24th, 2024, see
[microorganisms](https://amr-for-r.org/reference/microorganisms.md).
### Custom Rules
Custom rules can be created using
[`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md),
e.g.:
x <- custom_eucast_rules(AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R",
AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I")
eucast_rules(example_isolates, rules = "custom", custom_rules = x)
### 'Other' Rules
Before further processing, two non-EUCAST rules about drug combinations
can be applied to improve the efficacy of the EUCAST rules, and the
reliability of your data (analysis). These rules are:
1. A drug **with** enzyme inhibitor will be set to S if the same drug
**without** enzyme inhibitor is S
2. A drug **without** enzyme inhibitor will be set to R if the same
drug **with** enzyme inhibitor is R
Important examples include amoxicillin and amoxicillin/clavulanic acid,
and trimethoprim and trimethoprim/sulfamethoxazole. Needless to say, for
these rules to work, both drugs must be available in the data set.
Since these rules are not officially approved by EUCAST, they are not
applied at default. To use these rules, include `"other"` to the `rules`
argument, or use `eucast_rules(..., rules = "all")`. You can also set
the package option
[`AMR_eucastrules`](https://amr-for-r.org/reference/AMR-options.md),
i.e. run `options(AMR_eucastrules = "all")`.
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## Examples
``` r
# \donttest{
a <- data.frame(
mo = c(
"Staphylococcus aureus",
"Enterococcus faecalis",
"Escherichia coli",
"Klebsiella pneumoniae",
"Pseudomonas aeruginosa"
),
VAN = "-", # Vancomycin
AMX = "-", # Amoxicillin
COL = "-", # Colistin
CAZ = "-", # Ceftazidime
CXM = "-", # Cefuroxime
PEN = "S", # Benzylpenicillin
FOX = "S", # Cefoxitin
stringsAsFactors = FALSE
)
head(a)
#> mo VAN AMX COL CAZ CXM PEN FOX
#> 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
# apply EUCAST rules: some results wil be changed
b <- eucast_rules(a, overwrite = TRUE)
#> Warning: in `eucast_rules()`: not all columns with antimicrobial results are of
#> class 'sir'. Transform them on beforehand, with e.g.:
#> - a %>% as.sir(CXM:AMX)
#> - a %>% mutate_if(is_sir_eligible, as.sir)
#> - a %>% mutate(across(where(is_sir_eligible), as.sir))
head(b)
#> mo VAN AMX COL CAZ CXM PEN FOX
#> 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
# do not apply EUCAST rules, but rather get a data.frame
# containing all details about the transformations:
c <- eucast_rules(a, overwrite = TRUE, verbose = TRUE)
#> Warning: in `eucast_rules()`: not all columns with antimicrobial results are of
#> class 'sir'. Transform them on beforehand, with e.g.:
#> - a %>% as.sir(CXM:AMX)
#> - a %>% mutate_if(is_sir_eligible, as.sir)
#> - a %>% mutate(across(where(is_sir_eligible), as.sir))
head(c)
#> row col mo_fullname old new rule rule_group
#> 1 1 AMX Staphylococcus aureus - S Breakpoints
#> 2 1 CXM Staphylococcus aureus - S Breakpoints
#> 3 1 CAZ Staphylococcus aureus - R Expected phenotypes
#> 4 1 COL Staphylococcus aureus - R Expected phenotypes
#> 5 2 CAZ Enterococcus faecalis - R Expected phenotypes
#> 6 2 COL Enterococcus faecalis - R Expected phenotypes
#> rule_name
#> 1 Staphylococcus
#> 2 Staphylococcus
#> 3 Table 4: Expected resistant phenotype in gram-positive bacteria
#> 4 Table 4: Expected resistant phenotype in gram-positive bacteria
#> 5 Table 4: Expected resistant phenotype in gram-positive bacteria
#> 6 Table 4: Expected resistant phenotype in gram-positive bacteria
#> rule_source
#> 1 'EUCAST Clinical Breakpoint Tables' v15.0, 2025
#> 2 'EUCAST Clinical Breakpoint Tables' v15.0, 2025
#> 3 'EUCAST Expected Resistant Phenotypes' v1.2, 2023
#> 4 'EUCAST Expected Resistant Phenotypes' v1.2, 2023
#> 5 'EUCAST Expected Resistant Phenotypes' v1.2, 2023
#> 6 'EUCAST Expected Resistant Phenotypes' v1.2, 2023
# }
# Dosage guidelines:
eucast_dosage(c("tobra", "genta", "cipro"), "iv")
#> Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint
#> Tables' v15.0 (2025). This note will be shown once per session.
#> # A tibble: 3 × 5
#> ab name standard_dosage high_dosage eucast_version
#> <ab> <chr> <chr> <chr> <dbl>
#> 1 TOB Tobramycin 6-7 mg/kg x 1 iv NA 15
#> 2 GEN Gentamicin 6-7 mg/kg x 1 iv NA 15
#> 3 CIP Ciprofloxacin 0.4 g x 2 iv 0.4 g x 3 iv 15
eucast_dosage(c("tobra", "genta", "cipro"), "iv", version_breakpoints = 10)
#> # A tibble: 3 × 5
#> ab name standard_dosage high_dosage eucast_version
#> <ab> <chr> <chr> <chr> <dbl>
#> 1 TOB Tobramycin NA NA NA
#> 2 GEN Gentamicin NA NA NA
#> 3 CIP Ciprofloxacin NA NA NA
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,92 @@
# Data Set with 2 000 Example Isolates
A data set containing 2 000 microbial isolates with their full
antibiograms. This data set contains randomised fictitious data, but
reflects reality and can be used to practise AMR data analysis. For
examples, please read [the tutorial on our
website](https://amr-for-r.org/articles/AMR.html).
## Usage
``` r
example_isolates
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 2
000 observations and 46 variables:
- `date`
Date of receipt at the laboratory
- `patient`
ID of the patient
- `age`
Age of the patient
- `gender`
Gender of the patient, either "F" or "M"
- `ward`
Ward type where the patient was admitted, either "Clinical", "ICU", or
"Outpatient"
- `mo`
ID of microorganism created with
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md), see also the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set
- `PEN:RIF`
40 different antimicrobials with class
[`sir`](https://amr-for-r.org/reference/as.sir.md) (see
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)); these column
names occur in the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set and can be translated with
[`set_ab_names()`](https://amr-for-r.org/reference/ab_property.md) or
[`ab_name()`](https://amr-for-r.org/reference/ab_property.md)
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## Examples
``` r
example_isolates
#> # A tibble: 2,000 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> # 1,990 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,70 @@
# Data Set with Unclean Data
A data set containing 3 000 microbial isolates that are not cleaned up
and consequently not ready for AMR data analysis. This data set can be
used for practice.
## Usage
``` r
example_isolates_unclean
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 3
000 observations and 8 variables:
- `patient_id`
ID of the patient
- `date`
date of receipt at the laboratory
- `hospital`
ID of the hospital, from A to C
- `bacteria`
info about microorganism that can be transformed with
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md), see also
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
- `AMX:GEN`
4 different antimicrobials that have to be transformed with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## Examples
``` r
example_isolates_unclean
#> # A tibble: 3,000 × 8
#> patient_id hospital date bacteria AMX AMC CIP GEN
#> <chr> <chr> <date> <chr> <chr> <chr> <chr> <chr>
#> 1 J3 A 2012-11-21 E. coli R I S S
#> 2 R7 A 2018-04-03 K. pneumoniae R I S S
#> 3 P3 A 2014-09-19 E. coli R S S S
#> 4 P10 A 2015-12-10 E. coli S I S S
#> 5 B7 A 2015-03-02 E. coli S S S S
#> 6 W3 A 2018-03-31 S. aureus R S R S
#> 7 J8 A 2016-06-14 E. coli R S S S
#> 8 M3 A 2015-10-25 E. coli R S S S
#> 9 J3 A 2019-06-19 E. coli S S S S
#> 10 G6 A 2015-04-27 S. aureus S S S S
#> # 2,990 more rows
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,27 @@
# Export Data Set as NCBI BioSample Antibiogram
Export Data Set as NCBI BioSample Antibiogram
## Usage
``` r
export_ncbi_biosample(x, filename = paste0("biosample_", format(Sys.time(),
"%Y-%m-%d-%H%M%S"), ".xlsx"), type = "pathogen MIC",
columns = where(is.mic), save_as_xlsx = TRUE)
```
## Arguments
- x:
A data set.
- filename:
A character string specifying the file name.
- type:
A character string specifying the type of data set, either "pathogen
MIC" or "beta-lactamase MIC", see
<https://www.ncbi.nlm.nih.gov/biosample/docs/>.

View File

@@ -9,7 +9,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

482
reference/first_isolate.md Normal file
View File

@@ -0,0 +1,482 @@
# Determine First Isolates
Determine first isolates of all microorganisms of every patient per
episode and (if needed) per specimen type. These functions support all
four methods as summarised by Hindler *et al.* in 2007
([doi:10.1086/511864](https://doi.org/10.1086/511864) ). To determine
patient episodes not necessarily based on microorganisms, use
[`is_new_episode()`](https://amr-for-r.org/reference/get_episode.md)
that also supports grouping with the `dplyr` package.
## Usage
``` r
first_isolate(x = NULL, col_date = NULL, col_patient_id = NULL,
col_mo = NULL, col_testcode = NULL, col_specimen = NULL,
col_icu = NULL, col_keyantimicrobials = NULL, episode_days = 365,
testcodes_exclude = NULL, icu_exclude = FALSE, specimen_group = NULL,
type = "points", method = c("phenotype-based", "episode-based",
"patient-based", "isolate-based"), ignore_I = TRUE, points_threshold = 2,
info = interactive(), include_unknown = FALSE,
include_untested_sir = TRUE, ...)
filter_first_isolate(x = NULL, col_date = NULL, col_patient_id = NULL,
col_mo = NULL, episode_days = 365, method = c("phenotype-based",
"episode-based", "patient-based", "isolate-based"), ...)
```
## Source
Methodology of these functions is strictly based on:
- **M39 Analysis and Presentation of Cumulative Antimicrobial
Susceptibility Test Data, 5th Edition**, 2022, *Clinical and
Laboratory Standards Institute (CLSI)*.
<https://clsi.org/standards/products/microbiology/documents/m39/>.
- Hindler JF and Stelling J (2007). **Analysis and Presentation of
Cumulative Antibiograms: A New Consensus Guideline from the Clinical
and Laboratory Standards Institute.** Clinical Infectious Diseases,
44(6), 867-873. [doi:10.1086/511864](https://doi.org/10.1086/511864)
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) containing
isolates. Can be left blank for automatic determination, see
*Examples*.
- col_date:
Column name of the result date (or date that is was received on the
lab) - the default is the first column with a date class.
- col_patient_id:
Column name of the unique IDs of the patients - the default is the
first column that starts with 'patient' or 'patid' (case insensitive).
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- col_testcode:
Column name of the test codes. Use `col_testcode = NULL` to **not**
exclude certain test codes (such as test codes for screening). In that
case `testcodes_exclude` will be ignored.
- col_specimen:
Column name of the specimen type or group.
- col_icu:
Column name of the logicals (`TRUE`/`FALSE`) whether a ward or
department is an Intensive Care Unit (ICU). This can also be a
[logical](https://rdrr.io/r/base/logical.html) vector with the same
length as rows in `x`.
- col_keyantimicrobials:
(only useful when `method = "phenotype-based"`) column name of the key
antimicrobials to determine first isolates, see
[`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md).
The default is the first column that starts with 'key' followed by
'ab' or 'antibiotics' or 'antimicrobials' (case insensitive). Use
`col_keyantimicrobials = FALSE` to prevent this. Can also be the
output of
[`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md).
- episode_days:
Episode in days after which a genus/species combination will be
determined as 'first isolate' again. The default of 365 days is based
on the guideline by CLSI, see *Source*.
- testcodes_exclude:
A [character](https://rdrr.io/r/base/character.html) vector with test
codes that should be excluded (case-insensitive).
- icu_exclude:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
ICU isolates should be excluded (rows with value `TRUE` in the column
set with `col_icu`).
- specimen_group:
Value in the column set with `col_specimen` to filter on.
- type:
Type to determine weighed isolates; can be `"keyantimicrobials"` or
`"points"`, see *Details*.
- method:
The method to apply, either `"phenotype-based"`, `"episode-based"`,
`"patient-based"` or `"isolate-based"` (can be abbreviated), see
*Details*. The default is `"phenotype-based"` if antimicrobial test
results are present in the data, and `"episode-based"` otherwise.
- ignore_I:
[logical](https://rdrr.io/r/base/logical.html) to indicate whether
antibiotic interpretations with `"I"` will be ignored when
`type = "keyantimicrobials"`, see *Details*.
- points_threshold:
Minimum number of points to require before differences in the
antibiogram will lead to inclusion of an isolate when
`type = "points"`, see *Details*.
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate info
should be printed - the default is `TRUE` only in interactive mode.
- include_unknown:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
'unknown' microorganisms should be included too, i.e. microbial code
`"UNKNOWN"`, which defaults to `FALSE`. For WHONET users, this means
that all records with organism code `"con"` (*contamination*) will be
excluded at default. Isolates with a microbial ID of `NA` will always
be excluded as first isolate.
- include_untested_sir:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
also rows without antibiotic results are still eligible for becoming a
first isolate. Use `include_untested_sir = FALSE` to always return
`FALSE` for such rows. This checks the data set for columns of class
`sir` and consequently requires transforming columns with antibiotic
results using [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
first.
- ...:
Arguments passed on to `first_isolate()` when using
`filter_first_isolate()`, otherwise arguments passed on to
[`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
(such as `universal`, `gram_negative`, `gram_positive`).
## Value
A [logical](https://rdrr.io/r/base/logical.html) vector
## Details
The methodology implemented in these functions is strictly based on the
recommendations outlined in [CLSI Guideline
M39](https://clsi.org/standards/products/microbiology/documents/m39) and
the research overview by Hindler *et al.* (2007,
[doi:10.1086/511864](https://doi.org/10.1086/511864) ).
To conduct epidemiological analyses on antimicrobial resistance data,
only so-called first isolates should be included to prevent
overestimation and underestimation of antimicrobial resistance.
Different methods can be used to do so, see below.
These functions are context-aware. This means that the `x` argument can
be left blank if used inside a
[data.frame](https://rdrr.io/r/base/data.frame.html) call, see
*Examples*.
The `first_isolate()` function is a wrapper around the
[`is_new_episode()`](https://amr-for-r.org/reference/get_episode.md)
function, but more efficient for data sets containing microorganism
codes or names.
All isolates with a microbial ID of `NA` will be excluded as first
isolate.
### Different methods
According to previously-mentioned sources, there are different methods
(algorithms) to select first isolates with increasing reliability:
isolate-based, patient-based, episode-based and phenotype-based. All
methods select on a combination of the taxonomic genus and species (not
subspecies).
All mentioned methods are covered in the `first_isolate()` function:
| | |
|-------------------------------------------------|--------------------------------------------------------|
| **Method** | **Function to apply** |
| **Isolate-based** | `first_isolate(x, method = "isolate-based")` |
| *(= all isolates)* | |
| | |
| | |
| **Patient-based** | `first_isolate(x, method = "patient-based")` |
| *(= first isolate per patient)* | |
| | |
| | |
| **Episode-based** | `first_isolate(x, method = "episode-based")`, or: |
| *(= first isolate per episode)* | |
| \- 7-Day interval from initial isolate | \- `first_isolate(x, method = "e", episode_days = 7)` |
| \- 30-Day interval from initial isolate | \- `first_isolate(x, method = "e", episode_days = 30)` |
| | |
| | |
| **Phenotype-based** | `first_isolate(x, method = "phenotype-based")`, or: |
| *(= first isolate per phenotype)* | |
| \- Major difference in any antimicrobial result | \- `first_isolate(x, type = "points")` |
| \- Any difference in key antimicrobial results | \- `first_isolate(x, type = "keyantimicrobials")` |
**Isolate-based**
*Minimum variables required: Microorganism identifier*
This method does not require any selection, as all isolates should be
included. It does, however, respect all arguments set in the
`first_isolate()` function. For example, the default setting for
`include_unknown` (`FALSE`) will omit selection of rows without a
microbial ID.
**Patient-based**
*Minimum variables required: Microorganism identifier, Patient
identifier*
This method includes every genus-species combination per patient once.
This method makes sure that no duplicate isolates are selected from the
same patient. This method is preferred to e.g. identify the first MRSA
finding of each patient to determine the incidence. Conversely, in a
large longitudinal data set, this could mean that isolates are
*excluded* that were found years after the initial isolate.
**Episode-based**
*Minimum variables required: Microorganism identifier, Patient
identifier, Date*
To include every genus-species combination per patient episode once, set
the `episode_days` to a sensible number of days. Depending on the type
of analysis, this could be e.g., 14, 30, 60 or 365. Short episodes are
common for analysing specific hospital or ward data or ICU cases, long
episodes are common for analysing regional and national data.
This is the most common method to correct for duplicate isolates.
Patients are categorised into episodes based on their ID and dates
(e.g., the date of specimen receipt or laboratory result). While this is
a common method, it does not take into account antimicrobial test
results. This means that e.g. a methicillin-resistant *Staphylococcus
aureus* (MRSA) isolate cannot be differentiated from a wildtype
*Staphylococcus aureus* isolate.
**Phenotype-based**
*Minimum variables required: Microorganism identifier, Patient
identifier, Date, Antimicrobial test results*
This is a more reliable method, since it also *weighs* the antibiogram
(antimicrobial test results) yielding so-called 'first weighted
isolates'. There are two different methods to weigh the antibiogram:
1. Using `type = "points"` and argument `points_threshold` (default)
This method weighs *all* antimicrobial drugs available in the data
set. Any difference from I to S or R (or vice versa) counts as `0.5`
points, a difference from S to R (or vice versa) counts as `1`
point. When the sum of points exceeds `points_threshold`, which
defaults to `2`, an isolate will be selected as a first weighted
isolate.
All antimicrobials are internally selected using the
[`all_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
function. The output of this function does not need to be passed to
the `first_isolate()` function.
2. Using `type = "keyantimicrobials"` and argument `ignore_I`
This method only weighs specific antimicrobial drugs, called *key
antimicrobials*. Any difference from S to R (or vice versa) in these
key antimicrobials will select an isolate as a first weighted
isolate. With `ignore_I = FALSE`, also differences from I to S or R
(or vice versa) will lead to this.
Key antimicrobials are internally selected using the
[`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
function, but can also be added manually as a variable to the data
and set in the `col_keyantimicrobials` argument. Another option is
to pass the output of the
[`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
function directly to the `col_keyantimicrobials` argument.
The default method is phenotype-based (using `type = "points"`) and
episode-based (using `episode_days = 365`). This makes sure that every
genus-species combination is selected per patient once per year, while
taking into account all antimicrobial test results. If no antimicrobial
test results are available in the data set, only the episode-based
method is applied at default.
## See also
[`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
## Examples
``` r
# `example_isolates` is a data set available in the AMR package.
# See ?example_isolates.
example_isolates[first_isolate(info = TRUE), ]
#> Determining first isolates using an episode length of 365 days
#> Using column 'date' as input for `col_date`.
#> Using column 'patient' as input for `col_patient_id`.
#> Basing inclusion on all antimicrobial results, using a points threshold
#> of 2
#> Excluding 16 isolates with a microbial ID 'UNKNOWN' (in column 'mo')
#> => Found 1,387 'phenotype-based' first isolates (69.4% of total where a
#> microbial ID was available)
#> # A tibble: 1,387 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 3 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 4 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> 6 2002-01-17 495616 67 M Clinical B_STPHY_EPDR R NA S NA
#> 7 2002-01-19 738003 71 M Clinical B_ESCHR_COLI R NA NA NA
#> 8 2002-01-21 462081 75 F Clinical B_CTRBC_FRND R NA NA R
#> 9 2002-01-22 F35553 50 M ICU B_PROTS_MRBL R NA NA NA
#> 10 2002-02-03 481442 76 M ICU B_STPHY_CONS R NA S NA
#> # 1,377 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
# \donttest{
# get all first Gram-negatives
example_isolates[which(first_isolate(info = FALSE) & mo_is_gram_negative()), ]
#> Using column 'mo' as input for `mo_is_gram_negative()`
#> # A tibble: 441 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-19 738003 71 M Clinical B_ESCHR_COLI R NA NA NA
#> 3 2002-01-21 462081 75 F Clinical B_CTRBC_FRND R NA NA R
#> 4 2002-01-22 F35553 50 M ICU B_PROTS_MRBL R NA NA NA
#> 5 2002-02-05 067927 45 F ICU B_SERRT_MRCS R NA NA R
#> 6 2002-02-27 066895 85 F Clinical B_KLBSL_PNMN R NA NA R
#> 7 2002-03-08 4FC193 69 M Clinical B_ESCHR_COLI R NA NA R
#> 8 2002-03-16 4FC193 69 M Clinical B_PSDMN_AERG R NA NA R
#> 9 2002-04-01 496896 46 F ICU B_ESCHR_COLI R NA NA NA
#> 10 2002-04-23 EE2510 69 F ICU B_ESCHR_COLI R NA NA NA
#> # 431 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
if (require("dplyr")) {
# filter on first isolates using dplyr:
example_isolates %>%
filter(first_isolate(info = TRUE))
}
#> Determining first isolates using an episode length of 365 days
#> Basing inclusion on all antimicrobial results, using a points threshold
#> of 2
#> Excluding 16 isolates with a microbial ID 'UNKNOWN' (in column 'mo')
#> => Found 1,387 'phenotype-based' first isolates (69.4% of total where a
#> microbial ID was available)
#> # A tibble: 1,387 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 3 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 4 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> 6 2002-01-17 495616 67 M Clinical B_STPHY_EPDR R NA S NA
#> 7 2002-01-19 738003 71 M Clinical B_ESCHR_COLI R NA NA NA
#> 8 2002-01-21 462081 75 F Clinical B_CTRBC_FRND R NA NA R
#> 9 2002-01-22 F35553 50 M ICU B_PROTS_MRBL R NA NA NA
#> 10 2002-02-03 481442 76 M ICU B_STPHY_CONS R NA S NA
#> # 1,377 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
if (require("dplyr")) {
# short-hand version:
example_isolates %>%
filter_first_isolate(info = FALSE)
}
#> # A tibble: 1,387 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA
#> 2 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 3 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R
#> 4 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA
#> 5 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA
#> 6 2002-01-17 495616 67 M Clinical B_STPHY_EPDR R NA S NA
#> 7 2002-01-19 738003 71 M Clinical B_ESCHR_COLI R NA NA NA
#> 8 2002-01-21 462081 75 F Clinical B_CTRBC_FRND R NA NA R
#> 9 2002-01-22 F35553 50 M ICU B_PROTS_MRBL R NA NA NA
#> 10 2002-02-03 481442 76 M ICU B_STPHY_CONS R NA S NA
#> # 1,377 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
if (require("dplyr")) {
# flag the first isolates per group:
example_isolates %>%
group_by(ward) %>%
mutate(first = first_isolate(info = TRUE)) %>%
select(ward, date, patient, mo, first)
}
#> Determining first isolates using an episode length of 365 days
#> Basing inclusion on all antimicrobial results, using a points threshold
#> of 2
#>
#> Group: ward = "Clinical"
#> Excluding 9 isolates with a microbial ID 'UNKNOWN' (in column 'mo')
#> => Found 865 'phenotype-based' first isolates (70.1% of total where a
#> microbial ID was available)
#>
#> Group: ward = "ICU"
#> Excluding 6 isolates with a microbial ID 'UNKNOWN' (in column 'mo')
#> => Found 452 'phenotype-based' first isolates (70.0% of total where a
#> microbial ID was available)
#>
#> Group: ward = "Outpatient"
#> Excluding 1 isolates with a microbial ID 'UNKNOWN' (in column 'mo')
#> => Found 99 'phenotype-based' first isolates (82.5% of total where a
#> microbial ID was available)
#> # A tibble: 2,000 × 5
#> # Groups: ward [3]
#> ward date patient mo first
#> <chr> <date> <chr> <mo> <lgl>
#> 1 Clinical 2002-01-02 A77334 B_ESCHR_COLI TRUE
#> 2 Clinical 2002-01-03 A77334 B_ESCHR_COLI FALSE
#> 3 ICU 2002-01-07 067927 B_STPHY_EPDR TRUE
#> 4 ICU 2002-01-07 067927 B_STPHY_EPDR FALSE
#> 5 ICU 2002-01-13 067927 B_STPHY_EPDR FALSE
#> 6 ICU 2002-01-13 067927 B_STPHY_EPDR FALSE
#> 7 Clinical 2002-01-14 462729 B_STPHY_AURS TRUE
#> 8 Clinical 2002-01-14 462729 B_STPHY_AURS FALSE
#> 9 ICU 2002-01-16 067927 B_STPHY_EPDR TRUE
#> 10 ICU 2002-01-17 858515 B_STPHY_EPDR TRUE
#> # 1,990 more rows
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

257
reference/g.test.md Normal file
View File

@@ -0,0 +1,257 @@
# *G*-test for Count Data
`g.test()` performs chi-squared contingency table tests and
goodness-of-fit tests, just like
[`chisq.test()`](https://rdrr.io/r/stats/chisq.test.html) but is more
reliable (1). A *G*-test can be used to see whether the number of
observations in each category fits a theoretical expectation (called a
***G*-test of goodness-of-fit**), or to see whether the proportions of
one variable are different for different values of the other variable
(called a ***G*-test of independence**).
## Usage
``` r
g.test(x, y = NULL, p = rep(1/length(x), length(x)), rescale.p = FALSE)
```
## Source
The code for this function is identical to that of
[`chisq.test()`](https://rdrr.io/r/stats/chisq.test.html), except that:
- The calculation of the statistic was changed to \\2 \* sum(x \* log(x
/ E))\\
- Yates' continuity correction was removed as it does not apply to a
*G*-test
- The possibility to simulate p values with `simulate.p.value` was
removed
## Arguments
- x:
a numeric vector or matrix. `x` and `y` can also both be factors.
- y:
a numeric vector; ignored if `x` is a matrix. If `x` is a factor, `y`
should be a factor of the same length.
- p:
a vector of probabilities of the same length as `x`. An error is given
if any entry of `p` is negative.
- rescale.p:
a logical scalar; if TRUE then `p` is rescaled (if necessary) to sum
to 1. If `rescale.p` is FALSE, and `p` does not sum to 1, an error is
given.
## Value
A list with class `"htest"` containing the following components:
- statistic:
the value the chi-squared test statistic.
- parameter:
the degrees of freedom of the approximate chi-squared distribution of
the test statistic, `NA` if the p-value is computed by Monte Carlo
simulation.
- p.value:
the p-value for the test.
- method:
a character string indicating the type of test performed, and whether
Monte Carlo simulation or continuity correction was used.
- data.name:
a character string giving the name(s) of the data.
- observed:
the observed counts.
- expected:
the expected counts under the null hypothesis.
- residuals:
the Pearson residuals, `(observed - expected) / sqrt(expected)`.
- stdres:
standardized residuals, `(observed - expected) / sqrt(V)`, where `V`
is the residual cell variance (Agresti, 2007, section 2.4.5 for the
case where `x` is a matrix, `n * p * (1 - p)` otherwise).
## Details
If `x` is a [matrix](https://rdrr.io/r/base/matrix.html) with one row or
column, or if `x` is a vector and `y` is not given, then a
*goodness-of-fit test* is performed (`x` is treated as a one-dimensional
contingency table). The entries of `x` must be non-negative integers. In
this case, the hypothesis tested is whether the population probabilities
equal those in `p`, or are all equal if `p` is not given.
If `x` is a [matrix](https://rdrr.io/r/base/matrix.html) with at least
two rows and columns, it is taken as a two-dimensional contingency
table: the entries of `x` must be non-negative integers. Otherwise, `x`
and `y` must be vectors or factors of the same length; cases with
missing values are removed, the objects are coerced to factors, and the
contingency table is computed from these. Then Pearson's chi-squared
test is performed of the null hypothesis that the joint distribution of
the cell counts in a 2-dimensional contingency table is the product of
the row and column marginals.
The p-value is computed from the asymptotic chi-squared distribution of
the test statistic.
In the contingency table case simulation is done by random sampling from
the set of all contingency tables with given marginals, and works only
if the marginals are strictly positive. Note that this is not the usual
sampling situation assumed for a chi-squared test (such as the *G*-test)
but rather that for Fisher's exact test.
In the goodness-of-fit case simulation is done by random sampling from
the discrete distribution specified by `p`, each sample being of size
`n = sum(x)`. This simulation is done in R and may be slow.
### *G*-test Of Goodness-of-Fit (Likelihood Ratio Test)
Use the *G*-test of goodness-of-fit when you have one nominal variable
with two or more values (such as male and female, or red, pink and white
flowers). You compare the observed counts of numbers of observations in
each category with the expected counts, which you calculate using some
kind of theoretical expectation (such as a 1:1 sex ratio or a 1:2:1
ratio in a genetic cross).
If the expected number of observations in any category is too small, the
*G*-test may give inaccurate results, and you should use an exact test
instead ([`fisher.test()`](https://rdrr.io/r/stats/fisher.test.html)).
The *G*-test of goodness-of-fit is an alternative to the chi-square test
of goodness-of-fit
([`chisq.test()`](https://rdrr.io/r/stats/chisq.test.html)); each of
these tests has some advantages and some disadvantages, and the results
of the two tests are usually very similar.
### *G*-test of Independence
Use the *G*-test of independence when you have two nominal variables,
each with two or more possible values. You want to know whether the
proportions for one variable are different among values of the other
variable.
It is also possible to do a *G*-test of independence with more than two
nominal variables. For example, Jackson et al. (2013) also had data for
children under 3, so you could do an analysis of old vs. young, thigh
vs. arm, and reaction vs. no reaction, all analyzed together.
Fisher's exact test
([`fisher.test()`](https://rdrr.io/r/stats/fisher.test.html)) is an
**exact** test, where the *G*-test is still only an **approximation**.
For any 2x2 table, Fisher's Exact test may be slower but will still run
in seconds, even if the sum of your observations is multiple millions.
The *G*-test of independence is an alternative to the chi-square test of
independence
([`chisq.test()`](https://rdrr.io/r/stats/chisq.test.html)), and they
will give approximately the same results.
### How the Test Works
Unlike the exact test of goodness-of-fit
([`fisher.test()`](https://rdrr.io/r/stats/fisher.test.html)), the
*G*-test does not directly calculate the probability of obtaining the
observed results or something more extreme. Instead, like almost all
statistical tests, the *G*-test has an intermediate step; it uses the
data to calculate a test statistic that measures how far the observed
data are from the null expectation. You then use a mathematical
relationship, in this case the chi-square distribution, to estimate the
probability of obtaining that value of the test statistic.
The *G*-test uses the log of the ratio of two likelihoods as the test
statistic, which is why it is also called a likelihood ratio test or
log-likelihood ratio test. The formula to calculate a *G*-statistic is:
\\G = 2 \* sum(x \* log(x / E))\\
where `E` are the expected values. Since this is chi-square distributed,
the p value can be calculated in R with:
p <- stats::pchisq(G, df, lower.tail = FALSE)
where `df` are the degrees of freedom.
If there are more than two categories and you want to find out which
ones are significantly different from their null expectation, you can
use the same method of testing each category vs. the sum of all
categories, with the Bonferroni correction. You use *G*-tests for each
category, of course.
## References
1. McDonald, J.H. 2014. **Handbook of Biological Statistics (3rd
ed.)**. Sparky House Publishing, Baltimore, Maryland.
## See also
[`chisq.test()`](https://rdrr.io/r/stats/chisq.test.html)
## Examples
``` r
# = EXAMPLE 1 =
# Shivrain et al. (2006) crossed clearfield rice (which are resistant
# to the herbicide imazethapyr) with red rice (which are susceptible to
# imazethapyr). They then crossed the hybrid offspring and examined the
# F2 generation, where they found 772 resistant plants, 1611 moderately
# resistant plants, and 737 susceptible plants. If resistance is controlled
# by a single gene with two co-dominant alleles, you would expect a 1:2:1
# ratio.
x <- c(772, 1611, 737)
g.test(x, p = c(1, 2, 1) / 4)
#>
#> G-test of goodness-of-fit (likelihood ratio test)
#>
#> data: x
#> X-squared = 4.1471, p-value = 0.1257
#>
# There is no significant difference from a 1:2:1 ratio.
# Meaning: resistance controlled by a single gene with two co-dominant
# alleles, is plausible.
# = EXAMPLE 2 =
# Red crossbills (Loxia curvirostra) have the tip of the upper bill either
# right or left of the lower bill, which helps them extract seeds from pine
# cones. Some have hypothesized that frequency-dependent selection would
# keep the number of right and left-billed birds at a 1:1 ratio. Groth (1992)
# observed 1752 right-billed and 1895 left-billed crossbills.
x <- c(1752, 1895)
g.test(x)
#>
#> G-test of goodness-of-fit (likelihood ratio test)
#>
#> data: x
#> X-squared = 5.6085, p-value = 0.01787
#>
# There is a significant difference from a 1:1 ratio.
# Meaning: there are significantly more left-billed birds.
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

336
reference/get_episode.md Normal file
View File

@@ -0,0 +1,336 @@
# Determine Clinical or Epidemic Episodes
These functions determine which items in a vector can be considered (the
start of) a new episode. This can be used to determine clinical episodes
for any epidemiological analysis. The `get_episode()` function returns
the index number of the episode per group, while the `is_new_episode()`
function returns `TRUE` for every new `get_episode()` index. Both
absolute and relative episode determination are supported.
## Usage
``` r
get_episode(x, episode_days = NULL, case_free_days = NULL, ...)
is_new_episode(x, episode_days = NULL, case_free_days = NULL, ...)
```
## Arguments
- x:
Vector of dates (class `Date` or `POSIXt`), will be sorted internally
to determine episodes.
- episode_days:
Episode length in days to specify the time period after which a new
episode begins, can also be less than a day or `Inf`, see *Details*.
- case_free_days:
(inter-epidemic) interval length in days after which a new episode
will start, can also be less than a day or `Inf`, see *Details*.
- ...:
Ignored, only in place to allow future extensions.
## Value
- `get_episode()`: an [integer](https://rdrr.io/r/base/integer.html)
vector
- `is_new_episode()`: a [logical](https://rdrr.io/r/base/logical.html)
vector
## Details
Episodes can be determined in two ways: absolute and relative.
1. Absolute
This method uses `episode_days` to define an episode length in days,
after which a new episode will start. A common use case in AMR data
analysis is microbial epidemiology: episodes of *S. aureus*
bacteraemia in ICU patients for example. The episode length could
then be 30 days, so that new *S. aureus* isolates after an ICU
episode of 30 days will be considered a different (or new) episode.
Thus, this method counts **since the start of the previous
episode**.
2. Relative
This method uses `case_free_days` to quantify the duration of
case-free days (the inter-epidemic interval), after which a new
episode will start. A common use case is infectious disease
epidemiology: episodes of norovirus outbreaks in a hospital for
example. The case-free period could then be 14 days, so that new
norovirus cases after that time will be considered a different (or
new) episode.
Thus, this methods counts **since the last case in the previous
episode**.
In a table:
| | | |
|------------|--------------------------|----------------------------|
| Date | Using `episode_days = 7` | Using `case_free_days = 7` |
| 2023-01-01 | 1 | 1 |
| 2023-01-02 | 1 | 1 |
| 2023-01-05 | 1 | 1 |
| 2023-01-08 | 2\*\* | 1 |
| 2023-02-21 | 3 | 2\*\*\* |
| 2023-02-22 | 3 | 2 |
| 2023-02-23 | 3 | 2 |
| 2023-02-24 | 3 | 2 |
| 2023-03-01 | 4 | 2 |
\*\* This marks the start of a new episode, because 8 January 2023 is
more than 7 days since the start of the previous episode (1 January
2023).
\*\*\* This marks the start of a new episode, because 21 January 2023 is
more than 7 days since the last case in the previous episode (8 January
2023).
Either `episode_days` or `case_free_days` must be provided in the
function.
### Difference between `get_episode()` and `is_new_episode()`
The `get_episode()` function returns the index number of the episode, so
all cases/patients/isolates in the first episode will have the number 1,
all cases/patients/isolates in the second episode will have the number
2, etc.
The `is_new_episode()` function on the other hand, returns `TRUE` for
every new `get_episode()` index.
To specify, when setting `episode_days = 365` (using method 1 as
explained above), this is how the two functions differ:
| | | | |
|---------|------------|-----------------|--------------------|
| patient | date | `get_episode()` | `is_new_episode()` |
| A | 2019-01-01 | 1 | TRUE |
| A | 2019-03-01 | 1 | FALSE |
| A | 2021-01-01 | 2 | TRUE |
| B | 2008-01-01 | 1 | TRUE |
| B | 2008-01-01 | 1 | FALSE |
| C | 2020-01-01 | 1 | TRUE |
### Other
The
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
function is a wrapper around the `is_new_episode()` function, but is
more efficient for data sets containing microorganism codes or names and
allows for different isolate selection methods.
The `dplyr` package is not required for these functions to work, but
these episode functions do support [variable
grouping](https://dplyr.tidyverse.org/reference/group_by.html) and work
conveniently inside `dplyr` verbs such as
[`filter()`](https://dplyr.tidyverse.org/reference/filter.html),
[`mutate()`](https://dplyr.tidyverse.org/reference/mutate.html) and
[`summarise()`](https://dplyr.tidyverse.org/reference/summarise.html).
## See also
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
## Examples
``` r
# difference between absolute and relative determination of episodes:
x <- data.frame(dates = as.Date(c(
"2021-01-01",
"2021-01-02",
"2021-01-05",
"2021-01-08",
"2021-02-21",
"2021-02-22",
"2021-02-23",
"2021-02-24",
"2021-03-01",
"2021-03-01"
)))
x$absolute <- get_episode(x$dates, episode_days = 7)
x$relative <- get_episode(x$dates, case_free_days = 7)
x
#> dates absolute relative
#> 1 2021-01-01 1 1
#> 2 2021-01-02 1 1
#> 3 2021-01-05 1 1
#> 4 2021-01-08 2 1
#> 5 2021-02-21 3 2
#> 6 2021-02-22 3 2
#> 7 2021-02-23 3 2
#> 8 2021-02-24 3 2
#> 9 2021-03-01 4 2
#> 10 2021-03-01 4 2
# `example_isolates` is a data set available in the AMR package.
# See ?example_isolates
df <- example_isolates[sample(seq_len(2000), size = 100), ]
get_episode(df$date, episode_days = 60) # indices
#> [1] 17 19 32 7 48 16 36 11 41 30 43 42 3 37 6 42 16 46 12 6 38 15 31 23 44
#> [26] 35 42 21 10 21 18 22 9 29 40 8 22 14 31 47 18 26 28 18 25 20 11 49 8 27
#> [51] 50 23 46 3 27 6 31 1 33 10 23 31 11 20 46 13 4 24 4 27 8 48 16 2 20
#> [76] 35 31 19 33 34 16 14 33 17 46 24 15 17 7 9 39 14 50 5 12 2 45 35 8 28
is_new_episode(df$date, episode_days = 60) # TRUE/FALSE
#> [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> [13] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE
#> [25] TRUE TRUE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#> [37] FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE
#> [49] FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
#> [61] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
#> [73] FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
#> [85] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE
#> [97] TRUE FALSE FALSE FALSE
# filter on results from the third 60-day episode only, using base R
df[which(get_episode(df$date, 60) == 3), ]
#> # A tibble: 2 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-07-23 F35553 51 M ICU B_STPHY_AURS R NA S R
#> 2 2002-07-23 F35553 51 M ICU B_STPHY_AURS R NA S R
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, RIF <sir>
# the functions also work for less than a day, e.g. to include one per hour:
get_episode(
c(
Sys.time(),
Sys.time() + 60 * 60
),
episode_days = 1 / 24
)
#> [1] 1 2
# \donttest{
if (require("dplyr")) {
# is_new_episode() can also be used in dplyr verbs to determine patient
# episodes based on any (combination of) grouping variables:
df %>%
mutate(condition = sample(
x = c("A", "B", "C"),
size = 100,
replace = TRUE
)) %>%
group_by(patient, condition) %>%
mutate(new_episode = is_new_episode(date, 365)) %>%
select(patient, date, condition, new_episode) %>%
arrange(patient, condition, date)
}
#> # A tibble: 100 × 4
#> # Groups: patient, condition [95]
#> patient date condition new_episode
#> <chr> <date> <chr> <lgl>
#> 1 011307 2011-09-20 B TRUE
#> 2 011307 2011-09-20 C TRUE
#> 3 021368 2016-03-25 A TRUE
#> 4 060287 2007-03-11 B TRUE
#> 5 078381 2014-07-17 A TRUE
#> 6 097186 2015-10-28 B TRUE
#> 7 0DBB93 2003-10-02 A TRUE
#> 8 0DBF93 2015-12-03 C TRUE
#> 9 114570 2003-04-22 A TRUE
#> 10 141061 2014-10-22 C TRUE
#> # 90 more rows
if (require("dplyr")) {
df %>%
group_by(ward, patient) %>%
transmute(date,
patient,
new_index = get_episode(date, 60),
new_logical = is_new_episode(date, 60)
) %>%
arrange(patient, ward, date)
}
#> # A tibble: 100 × 5
#> # Groups: ward, patient [93]
#> ward date patient new_index new_logical
#> <chr> <date> <chr> <int> <lgl>
#> 1 Clinical 2011-09-20 011307 1 TRUE
#> 2 Clinical 2011-09-20 011307 1 FALSE
#> 3 Outpatient 2016-03-25 021368 1 TRUE
#> 4 Clinical 2007-03-11 060287 1 TRUE
#> 5 ICU 2014-07-17 078381 1 TRUE
#> 6 Clinical 2015-10-28 097186 1 TRUE
#> 7 ICU 2003-10-02 0DBB93 1 TRUE
#> 8 ICU 2015-12-03 0DBF93 1 TRUE
#> 9 ICU 2003-04-22 114570 1 TRUE
#> 10 Clinical 2014-10-22 141061 1 TRUE
#> # 90 more rows
if (require("dplyr")) {
df %>%
group_by(ward) %>%
summarise(
n_patients = n_distinct(patient),
n_episodes_365 = sum(is_new_episode(date, episode_days = 365)),
n_episodes_60 = sum(is_new_episode(date, episode_days = 60)),
n_episodes_30 = sum(is_new_episode(date, episode_days = 30))
)
}
#> # A tibble: 3 × 5
#> ward n_patients n_episodes_365 n_episodes_60 n_episodes_30
#> <chr> <int> <int> <int> <int>
#> 1 Clinical 51 12 33 43
#> 2 ICU 31 11 26 30
#> 3 Outpatient 11 8 11 11
# grouping on patients and microorganisms leads to the same
# results as first_isolate() when using 'episode-based':
if (require("dplyr")) {
x <- df %>%
filter_first_isolate(
include_unknown = TRUE,
method = "episode-based"
)
y <- df %>%
group_by(patient, mo) %>%
filter(is_new_episode(date, 365)) %>%
ungroup()
identical(x, y)
}
#> [1] TRUE
# but is_new_episode() has a lot more flexibility than first_isolate(),
# since you can now group on anything that seems relevant:
if (require("dplyr")) {
df %>%
group_by(patient, mo, ward) %>%
mutate(flag_episode = is_new_episode(date, 365)) %>%
select(group_vars(.), flag_episode)
}
#> # A tibble: 100 × 4
#> # Groups: patient, mo, ward [95]
#> patient mo ward flag_episode
#> <chr> <mo> <chr> <lgl>
#> 1 690B42 B_ESCHR_COLI ICU TRUE
#> 2 550406 B_ESCHR_COLI Outpatient TRUE
#> 3 F86227 B_STPHY_CONS Clinical TRUE
#> 4 859863 B_STPHY_EPDR ICU TRUE
#> 5 987C84 B_ESCHR_COLI Clinical TRUE
#> 6 E19440 B_ESCHR_COLI ICU TRUE
#> 7 F42C5F B_MRGNL_MRGN Clinical TRUE
#> 8 F54261 B_STPHY_AURS Clinical TRUE
#> 9 5D1690 B_ESCHR_COLI Outpatient TRUE
#> 10 874171 B_STPHY_CONS Clinical TRUE
#> # 90 more rows
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

228
reference/ggplot_pca.md Normal file
View File

@@ -0,0 +1,228 @@
# PCA Biplot with `ggplot2`
Produces a `ggplot2` variant of a so-called
[biplot](https://en.wikipedia.org/wiki/Biplot) for PCA (principal
component analysis), but is more flexible and more appealing than the
base R [`biplot()`](https://rdrr.io/r/stats/biplot.html) function.
## Usage
``` r
ggplot_pca(x, choices = 1:2, scale = 1, pc.biplot = TRUE,
labels = NULL, labels_textsize = 3, labels_text_placement = 1.5,
groups = NULL, ellipse = TRUE, ellipse_prob = 0.68,
ellipse_size = 0.5, ellipse_alpha = 0.5, points_size = 2,
points_alpha = 0.25, arrows = TRUE, arrows_colour = "darkblue",
arrows_size = 0.5, arrows_textsize = 3, arrows_textangled = TRUE,
arrows_alpha = 0.75, base_textsize = 10, ...)
```
## Source
The `ggplot_pca()` function is based on the `ggbiplot()` function from
the `ggbiplot` package by Vince Vu, as found on GitHub:
<https://github.com/vqv/ggbiplot> (retrieved: 2 March 2020, their latest
commit:
[`7325e88`](https://github.com/vqv/ggbiplot/commit/7325e880485bea4c07465a0304c470608fffb5d9);
12 February 2015).
As per their GPL-2 licence that demands documentation of code changes,
the changes made based on the source code were:
1. Rewritten code to remove the dependency on packages `plyr`, `scales`
and `grid`
2. Parametrised more options, like arrow and ellipse settings
3. Hardened all input possibilities by defining the exact type of user
input for every argument
4. Added total amount of explained variance as a caption in the plot
5. Cleaned all syntax based on the `lintr` package, fixed grammatical
errors and added integrity checks
6. Updated documentation
## Arguments
- x:
An object returned by
[`pca()`](https://amr-for-r.org/reference/pca.md),
[`prcomp()`](https://rdrr.io/r/stats/prcomp.html) or
[`princomp()`](https://rdrr.io/r/stats/princomp.html).
- choices:
length 2 vector specifying the components to plot. Only the default is
a biplot in the strict sense.
- scale:
The variables are scaled by `lambda ^ scale` and the observations are
scaled by `lambda ^ (1-scale)` where `lambda` are the singular values
as computed by [`princomp`](https://rdrr.io/r/stats/princomp.html).
Normally `0 <= scale <= 1`, and a warning will be issued if the
specified `scale` is outside this range.
- pc.biplot:
If true, use what Gabriel (1971) refers to as a "principal component
biplot", with `lambda = 1` and observations scaled up by sqrt(n) and
variables scaled down by sqrt(n). Then inner products between
variables approximate covariances and distances between observations
approximate Mahalanobis distance.
- labels:
An optional vector of labels for the observations. If set, the labels
will be placed below their respective points. When using the
[`pca()`](https://amr-for-r.org/reference/pca.md) function as input
for `x`, this will be determined automatically based on the attribute
`non_numeric_cols`, see
[`pca()`](https://amr-for-r.org/reference/pca.md).
- labels_textsize:
The size of the text used for the labels.
- labels_text_placement:
Adjustment factor the placement of the variable names (`>=1` means
further away from the arrow head).
- groups:
An optional vector of groups for the labels, with the same length as
`labels`. If set, the points and labels will be coloured according to
these groups. When using the
[`pca()`](https://amr-for-r.org/reference/pca.md) function as input
for `x`, this will be determined automatically based on the attribute
`non_numeric_cols`, see
[`pca()`](https://amr-for-r.org/reference/pca.md).
- ellipse:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether a
normal data ellipse should be drawn for each group (set with
`groups`).
- ellipse_prob:
Statistical size of the ellipse in normal probability.
- ellipse_size:
The size of the ellipse line.
- ellipse_alpha:
The alpha (transparency) of the ellipse line.
- points_size:
The size of the points.
- points_alpha:
The alpha (transparency) of the points.
- arrows:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
arrows should be drawn.
- arrows_colour:
The colour of the arrow and their text.
- arrows_size:
The size (thickness) of the arrow lines.
- arrows_textsize:
The size of the text at the end of the arrows.
- arrows_textangled:
A [logical](https://rdrr.io/r/base/logical.html) whether the text at
the end of the arrows should be angled.
- arrows_alpha:
The alpha (transparency) of the arrows and their text.
- base_textsize:
The text size for all plot elements except the labels and arrows.
- ...:
Arguments passed on to functions.
## Details
The colours for labels and points can be changed by adding another scale
layer for colour, such as
[`scale_colour_viridis_d()`](https://ggplot2.tidyverse.org/reference/scale_viridis.html)
and
[`scale_colour_brewer()`](https://ggplot2.tidyverse.org/reference/scale_brewer.html).
## Examples
``` r
# `example_isolates` is a data set available in the AMR package.
# See ?example_isolates.
# \donttest{
if (require("dplyr")) {
# calculate the resistance per group first
resistance_data <- example_isolates %>%
group_by(
order = mo_order(mo), # group on anything, like order
genus = mo_genus(mo)
) %>% # and genus as we do here;
filter(n() >= 30) %>% # filter on only 30 results per group
summarise_if(is.sir, resistance) # then get resistance of all drugs
# now conduct PCA for certain antimicrobial drugs
pca_result <- resistance_data %>%
pca(AMC, CXM, CTX, CAZ, GEN, TOB, TMP, SXT)
summary(pca_result)
# old base R plotting method:
biplot(pca_result, main = "Base R biplot")
# new ggplot2 plotting method using this package:
if (require("ggplot2")) {
ggplot_pca(pca_result) +
labs(title = "ggplot2 biplot")
}
if (require("ggplot2")) {
# still extendible with any ggplot2 function
ggplot_pca(pca_result) +
scale_colour_viridis_d() +
labs(title = "ggplot2 biplot")
}
}
#> Warning: There were 73 warnings in `summarise()`.
#> The first warning was:
#> In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE,
#> only_all_tested = FALSE) ...`.
#> In group 5: `order = "Lactobacillales"` `genus = "Enterococcus"`.
#> Caused by warning:
#> ! Introducing NA: only 14 results available for PEN in group: order =
#> "Lactobacillales", genus = "Enterococcus" (`minimum` = 30).
#> Run `dplyr::last_dplyr_warnings()` to see the 72 remaining warnings.
#> Columns selected for PCA: "AMC", "CAZ", "CTX", "CXM", "GEN", "SXT",
#> "TMP", and "TOB". Total observations available: 7.
#> Groups (n=4, named as 'order'):
#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"
#>
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

301
reference/ggplot_sir.md Normal file
View File

@@ -0,0 +1,301 @@
# AMR Plots with `ggplot2`
Use these functions to create bar plots for AMR data analysis. All
functions rely on
[ggplot2](https://ggplot2.tidyverse.org/reference/ggplot.html)
functions.
## Usage
``` r
ggplot_sir(data, position = NULL, x = "antibiotic",
fill = "interpretation", facet = NULL, breaks = seq(0, 1, 0.1),
limits = NULL, translate_ab = "name", combine_SI = TRUE,
minimum = 30, language = get_AMR_locale(), nrow = NULL, colours = c(S
= "#3CAEA3", SDD = "#8FD6C4", SI = "#3CAEA3", I = "#F6D55C", IR = "#ED553B",
R = "#ED553B"), datalabels = TRUE, datalabels.size = 2.5,
datalabels.colour = "grey15", title = NULL, subtitle = NULL,
caption = NULL, x.title = "Antimicrobial", y.title = "Proportion", ...)
geom_sir(position = NULL, x = c("antibiotic", "interpretation"),
fill = "interpretation", translate_ab = "name", minimum = 30,
language = get_AMR_locale(), combine_SI = TRUE, ...)
```
## Arguments
- data:
A [data.frame](https://rdrr.io/r/base/data.frame.html) with column(s)
of class [`sir`](https://amr-for-r.org/reference/as.sir.md) (see
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)).
- position:
Position adjustment of bars, either `"fill"`, `"stack"` or `"dodge"`.
- x:
Variable to show on x axis, either `"antibiotic"` (default) or
`"interpretation"` or a grouping variable.
- fill:
Variable to categorise using the plots legend, either `"antibiotic"`
(default) or `"interpretation"` or a grouping variable.
- facet:
Variable to split plots by, either `"interpretation"` (default) or
`"antibiotic"` or a grouping variable.
- breaks:
A [numeric](https://rdrr.io/r/base/numeric.html) vector of positions.
- limits:
A [numeric](https://rdrr.io/r/base/numeric.html) vector of length two
providing limits of the scale, use `NA` to refer to the existing
minimum or maximum.
- translate_ab:
A column name of the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set to translate the antibiotic abbreviations to, using
[`ab_property()`](https://amr-for-r.org/reference/ab_property.md).
- combine_SI:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
all values of S, SDD, and I must be merged into one, so the output
only consists of S+SDD+I vs. R (susceptible vs. resistant) - the
default is `TRUE`.
- minimum:
The minimum allowed number of available (tested) isolates. Any isolate
count lower than `minimum` will return `NA` with a warning. The
default number of `30` isolates is advised by the Clinical and
Laboratory Standards Institute (CLSI) as best practice, see *Source*.
- language:
Language of the returned text - the default is the current system
language (see
[`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md))
and can also be set with the package option
[`AMR_locale`](https://amr-for-r.org/reference/AMR-options.md). Use
`language = NULL` or `language = ""` to prevent translation.
- nrow:
(when using `facet`) number of rows.
- colours:
A named vactor with colour to be used for filling. The default colours
are colour-blind friendly.
- datalabels:
Show datalabels using
[`labels_sir_count()`](https://amr-for-r.org/reference/plot.md).
- datalabels.size:
Size of the datalabels.
- datalabels.colour:
Colour of the datalabels.
- title:
Text to show as title of the plot.
- subtitle:
Text to show as subtitle of the plot.
- caption:
Text to show as caption of the plot.
- x.title:
Text to show as x axis description.
- y.title:
Text to show as y axis description.
- ...:
Other arguments passed on to `geom_sir()` or, in case of
[`scale_sir_colours()`](https://amr-for-r.org/reference/plot.md),
named values to set colours. The default colours are colour-blind
friendly, while maintaining the convention that e.g. 'susceptible'
should be green and 'resistant' should be red. See *Examples*.
## Details
At default, the names of antimicrobials will be shown on the plots using
[`ab_name()`](https://amr-for-r.org/reference/ab_property.md). This can
be set with the `translate_ab` argument. See
[`count_df()`](https://amr-for-r.org/reference/count.md).
`geom_sir()` will take any variable from the data that has an
[`sir`](https://amr-for-r.org/reference/as.sir.md) class (created with
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md)) using
[`sir_df()`](https://amr-for-r.org/reference/proportion.md) and will
plot bars with the percentage S, I, and R. The default behaviour is to
have the bars stacked and to have the different antimicrobials on the x
axis.
Additional functions include:
- [`facet_sir()`](https://amr-for-r.org/reference/plot.md) creates 2d
plots (at default based on S/I/R) using
[`ggplot2::facet_wrap()`](https://ggplot2.tidyverse.org/reference/facet_wrap.html).
- [`scale_y_percent()`](https://amr-for-r.org/reference/plot.md)
transforms the y axis to a 0 to 100% range using
[`ggplot2::scale_y_continuous()`](https://ggplot2.tidyverse.org/reference/scale_continuous.html).
- [`scale_sir_colours()`](https://amr-for-r.org/reference/plot.md) sets
colours to the bars (green for S, yellow for I, and red for R). with
multilingual support. The default colours are colour-blind friendly,
while maintaining the convention that e.g. 'susceptible' should be
green and 'resistant' should be red.
- [`theme_sir()`](https://amr-for-r.org/reference/plot.md) is a [ggplot2
theme](https://ggplot2.tidyverse.org/reference/theme.html) with
minimal distraction.
- [`labels_sir_count()`](https://amr-for-r.org/reference/plot.md) print
datalabels on the bars with percentage and amount of isolates using
[`ggplot2::geom_text()`](https://ggplot2.tidyverse.org/reference/geom_text.html).
`ggplot_sir()` is a wrapper around all above functions that uses data as
first input. This makes it possible to use this function after a pipe
(`%>%`). See *Examples*.
## Examples
``` r
# \donttest{
if (require("ggplot2") && require("dplyr")) {
# get antimicrobial results for drugs against a UTI:
ggplot(example_isolates %>% select(AMX, NIT, FOS, TMP, CIP)) +
geom_sir()
}
if (require("ggplot2") && require("dplyr")) {
# prettify the plot using some additional functions:
df <- example_isolates %>% select(AMX, NIT, FOS, TMP, CIP)
ggplot(df) +
geom_sir() +
scale_y_percent() +
scale_sir_colours(aesthetics = "fill") +
labels_sir_count() +
theme_sir()
}
if (require("ggplot2") && require("dplyr")) {
# or better yet, simplify this using the wrapper function - a single command:
example_isolates %>%
select(AMX, NIT, FOS, TMP, CIP) %>%
ggplot_sir()
}
if (require("ggplot2") && require("dplyr")) {
# get only proportions and no counts:
example_isolates %>%
select(AMX, NIT, FOS, TMP, CIP) %>%
ggplot_sir(datalabels = FALSE)
}
if (require("ggplot2") && require("dplyr")) {
# add other ggplot2 arguments as you like:
example_isolates %>%
select(AMX, NIT, FOS, TMP, CIP) %>%
ggplot_sir(
width = 0.5,
colour = "black",
size = 1,
linetype = 2,
alpha = 0.25
)
}
#> Warning: Ignoring unknown parameters: `size`
if (require("ggplot2") && require("dplyr")) {
# you can alter the colours with colour names:
example_isolates %>%
select(AMX) %>%
ggplot_sir(colours = c(SI = "yellow"))
}
if (require("ggplot2") && require("dplyr")) {
# but you can also use the built-in colour-blind friendly colours for
# your plots, where "S" is green, "I" is yellow and "R" is red:
data.frame(
x = c("Value1", "Value2", "Value3"),
y = c(1, 2, 3),
z = c("Value4", "Value5", "Value6")
) %>%
ggplot() +
geom_col(aes(x = x, y = y, fill = z)) +
scale_sir_colours(
aesthetics = "fill",
Value4 = "S", Value5 = "I", Value6 = "R"
)
}
if (require("ggplot2") && require("dplyr")) {
# resistance of ciprofloxacine per age group
example_isolates %>%
mutate(first_isolate = first_isolate()) %>%
filter(
first_isolate == TRUE,
mo == as.mo("Escherichia coli")
) %>%
# age_groups() is also a function in this AMR package:
group_by(age_group = age_groups(age)) %>%
select(age_group, CIP) %>%
ggplot_sir(x = "age_group")
}
#> Warning: Removed 6 rows containing missing values or values outside the scale range
#> (`geom_col()`).
#> Warning: Removed 6 rows containing missing values or values outside the scale range
#> (`geom_text()`).
if (require("ggplot2") && require("dplyr")) {
# a shorter version which also adjusts data label colours:
example_isolates %>%
select(AMX, NIT, FOS, TMP, CIP) %>%
ggplot_sir(colours = FALSE)
}
if (require("ggplot2") && require("dplyr")) {
# it also supports groups (don't forget to use the group var on `x` or `facet`):
example_isolates %>%
filter(mo_is_gram_negative(), ward != "Outpatient") %>%
# select only UTI-specific drugs
select(ward, AMX, NIT, FOS, TMP, CIP) %>%
group_by(ward) %>%
ggplot_sir(
x = "ward",
facet = "antibiotic",
nrow = 1,
title = "AMR of Anti-UTI Drugs Per Ward",
x.title = "Ward",
datalabels = FALSE
)
}
#> Using column 'mo' as input for `mo_is_gram_negative()`
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

83
reference/guess_ab_col.md Normal file
View File

@@ -0,0 +1,83 @@
# Guess Antibiotic Column
This tries to find a column name in a data set based on information from
the [antimicrobials](https://amr-for-r.org/reference/antimicrobials.md)
data set. Also supports WHONET abbreviations.
## Usage
``` r
guess_ab_col(x = NULL, search_string = NULL, verbose = FALSE,
only_sir_columns = FALSE)
```
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html).
- search_string:
A text to search `x` for, will be checked with
[`as.ab()`](https://amr-for-r.org/reference/as.ab.md) if this value is
not a column in `x`.
- verbose:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
additional info should be printed.
- only_sir_columns:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
only antimicrobial columns must be included that were transformed to
class [sir](https://amr-for-r.org/reference/as.sir.md) on beforehand.
Defaults to `FALSE` if no columns of `x` have a class
[sir](https://amr-for-r.org/reference/as.sir.md).
## Value
A column name of `x`, or `NULL` when no result is found.
## Details
You can look for an antibiotic (trade) name or abbreviation and it will
search `x` and the
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md) data
set for any column containing a name or code of that antibiotic.
## Examples
``` r
df <- data.frame(
amox = "S",
tetr = "R"
)
guess_ab_col(df, "amoxicillin")
#> [1] "amox"
guess_ab_col(df, "J01AA07") # ATC code of tetracycline
#> [1] "tetr"
guess_ab_col(df, "J01AA07", verbose = TRUE)
#> Auto-guessing columns suitable for analysis
#> ...
#> OK.
#> Using column 'amox' as input for AMX (amoxicillin).
#> Using column 'tetr' as input for TCY (tetracycline).
#> Using column 'tetr' as input for J01AA07 (tetracycline).
#> [1] "tetr"
# WHONET codes
df <- data.frame(
AMP_ND10 = "R",
AMC_ED20 = "S"
)
guess_ab_col(df, "ampicillin")
#> [1] "AMP_ND10"
guess_ab_col(df, "J01CR02")
#> [1] "AMC_ED20"
guess_ab_col(df, "augmentin")
#> [1] "AMC_ED20"
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -52,8 +52,7 @@
<div class="section-desc"><p>Please find the introduction to (and some general information about) our package here.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -69,8 +68,7 @@
<div class="section-desc"><p>These functions are meant to get taxonomically valid properties of microorganisms from any input, but also properties derived from taxonomy, such as the Gram stain (<code><a href="../reference/mo_property.html">mo_gramstain()</a></code>) , or <code><a href="../reference/mo_property.html">mo_is_yeast()</a></code>. Use <code><a href="../reference/mo_source.html">mo_source()</a></code> to teach this package how to translate your own codes to valid microorganisms, and use <code><a href="../reference/add_custom_microorganisms.html">add_custom_microorganisms()</a></code> to add your own custom microorganisms to this package.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -81,19 +79,22 @@
</dt>
<dd>Transform Arbitrary Input to Valid Microbial Taxonomy</dd>
</dl><dl><dt>
<dt>
<code><a href="mo_property.html">mo_name()</a></code> <code><a href="mo_property.html">mo_fullname()</a></code> <code><a href="mo_property.html">mo_shortname()</a></code> <code><a href="mo_property.html">mo_subspecies()</a></code> <code><a href="mo_property.html">mo_species()</a></code> <code><a href="mo_property.html">mo_genus()</a></code> <code><a href="mo_property.html">mo_family()</a></code> <code><a href="mo_property.html">mo_order()</a></code> <code><a href="mo_property.html">mo_class()</a></code> <code><a href="mo_property.html">mo_phylum()</a></code> <code><a href="mo_property.html">mo_kingdom()</a></code> <code><a href="mo_property.html">mo_domain()</a></code> <code><a href="mo_property.html">mo_type()</a></code> <code><a href="mo_property.html">mo_status()</a></code> <code><a href="mo_property.html">mo_pathogenicity()</a></code> <code><a href="mo_property.html">mo_gramstain()</a></code> <code><a href="mo_property.html">mo_is_gram_negative()</a></code> <code><a href="mo_property.html">mo_is_gram_positive()</a></code> <code><a href="mo_property.html">mo_is_yeast()</a></code> <code><a href="mo_property.html">mo_is_intrinsic_resistant()</a></code> <code><a href="mo_property.html">mo_oxygen_tolerance()</a></code> <code><a href="mo_property.html">mo_is_anaerobic()</a></code> <code><a href="mo_property.html">mo_snomed()</a></code> <code><a href="mo_property.html">mo_ref()</a></code> <code><a href="mo_property.html">mo_authors()</a></code> <code><a href="mo_property.html">mo_year()</a></code> <code><a href="mo_property.html">mo_lpsn()</a></code> <code><a href="mo_property.html">mo_mycobank()</a></code> <code><a href="mo_property.html">mo_gbif()</a></code> <code><a href="mo_property.html">mo_rank()</a></code> <code><a href="mo_property.html">mo_taxonomy()</a></code> <code><a href="mo_property.html">mo_synonyms()</a></code> <code><a href="mo_property.html">mo_current()</a></code> <code><a href="mo_property.html">mo_group_members()</a></code> <code><a href="mo_property.html">mo_info()</a></code> <code><a href="mo_property.html">mo_url()</a></code> <code><a href="mo_property.html">mo_property()</a></code>
</dt>
<dd>Get Properties of a Microorganism</dd>
</dl><dl><dt>
<dt>
<code><a href="add_custom_microorganisms.html">add_custom_microorganisms()</a></code> <code><a href="add_custom_microorganisms.html">clear_custom_microorganisms()</a></code>
</dt>
<dd>Add Custom Microorganisms</dd>
</dl><dl><dt>
<dt>
<code><a href="mo_source.html">set_mo_source()</a></code> <code><a href="mo_source.html">get_mo_source()</a></code>
@@ -104,8 +105,7 @@
<div class="section-desc"><p>Use these functions to get valid properties of antimicrobials from any input or to clean your input. You can even retrieve drug names and doses from clinical text records, using <code><a href="../reference/ab_from_text.html">ab_from_text()</a></code>.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -116,25 +116,29 @@
</dt>
<dd>Transform Input to an Antibiotic ID</dd>
</dl><dl><dt>
<dt>
<code><a href="ab_property.html">ab_name()</a></code> <code><a href="ab_property.html">ab_cid()</a></code> <code><a href="ab_property.html">ab_synonyms()</a></code> <code><a href="ab_property.html">ab_tradenames()</a></code> <code><a href="ab_property.html">ab_group()</a></code> <code><a href="ab_property.html">ab_atc()</a></code> <code><a href="ab_property.html">ab_atc_group1()</a></code> <code><a href="ab_property.html">ab_atc_group2()</a></code> <code><a href="ab_property.html">ab_loinc()</a></code> <code><a href="ab_property.html">ab_ddd()</a></code> <code><a href="ab_property.html">ab_ddd_units()</a></code> <code><a href="ab_property.html">ab_info()</a></code> <code><a href="ab_property.html">ab_url()</a></code> <code><a href="ab_property.html">ab_property()</a></code> <code><a href="ab_property.html">set_ab_names()</a></code>
</dt>
<dd>Get Properties of an Antibiotic</dd>
</dl><dl><dt>
<dt>
<code><a href="ab_from_text.html">ab_from_text()</a></code>
</dt>
<dd>Retrieve Antimicrobial Drug Names and Doses from Clinical Text</dd>
</dl><dl><dt>
<dt>
<code><a href="atc_online.html">atc_online_property()</a></code> <code><a href="atc_online.html">atc_online_groups()</a></code> <code><a href="atc_online.html">atc_online_ddd()</a></code> <code><a href="atc_online.html">atc_online_ddd_units()</a></code>
</dt>
<dd>Get ATC Properties from WHOCC Website</dd>
</dl><dl><dt>
<dt>
<code><a href="add_custom_antimicrobials.html">add_custom_antimicrobials()</a></code> <code><a href="add_custom_antimicrobials.html">clear_custom_antimicrobials()</a></code>
@@ -145,8 +149,7 @@
<div class="section-desc"><p>With <code><a href="../reference/as.mic.html">as.mic()</a></code> and <code><a href="../reference/as.disk.html">as.disk()</a></code> you can transform your raw input to valid MIC or disk diffusion values. Use <code><a href="../reference/as.sir.html">as.sir()</a></code> for cleaning raw data to let it only contain “R”, “I” and “S”, or to interpret MIC or disk diffusion values as SIR based on the lastest EUCAST and CLSI guidelines. Afterwards, you can extend antibiotic interpretations by applying <a href="https://www.eucast.org/expert_rules_and_intrinsic_resistance/" class="external-link">EUCAST rules</a> with <code><a href="../reference/eucast_rules.html">eucast_rules()</a></code>.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -157,25 +160,29 @@
</dt>
<dd>Interpret MIC and Disk Diffusion as SIR, or Clean Existing SIR Data</dd>
</dl><dl><dt>
<dt>
<code><a href="as.mic.html">as.mic()</a></code> <code><a href="as.mic.html">is.mic()</a></code> <code><a href="as.mic.html">NA_mic_</a></code> <code><a href="as.mic.html">rescale_mic()</a></code> <code><a href="as.mic.html">mic_p50()</a></code> <code><a href="as.mic.html">mic_p90()</a></code> <code><a href="as.mic.html">droplevels(<i>&lt;mic&gt;</i>)</a></code>
</dt>
<dd>Transform Input to Minimum Inhibitory Concentrations (MIC)</dd>
</dl><dl><dt>
<dt>
<code><a href="as.disk.html">as.disk()</a></code> <code><a href="as.disk.html">NA_disk_</a></code> <code><a href="as.disk.html">is.disk()</a></code>
</dt>
<dd>Transform Input to Disk Diffusion Diameters</dd>
</dl><dl><dt>
<dt>
<code><a href="eucast_rules.html">eucast_rules()</a></code> <code><a href="eucast_rules.html">eucast_dosage()</a></code>
</dt>
<dd>Apply EUCAST Rules</dd>
</dl><dl><dt>
<dt>
<code><a href="custom_eucast_rules.html">custom_eucast_rules()</a></code>
@@ -186,8 +193,7 @@
<div class="section-desc"><p>Use these function for the analysis part. You can use <code><a href="../reference/proportion.html">susceptibility()</a></code> or <code><a href="../reference/proportion.html">resistance()</a></code> on any antibiotic column. With <code><a href="../reference/antibiogram.html">antibiogram()</a></code>, you can generate a traditional, combined, syndromic, or weighted-incidence syndromic combination antibiogram (WISCA). This function also comes with support for R Markdown and Quarto. Be sure to first select the isolates that are appropiate for analysis, by using <code><a href="../reference/first_isolate.html">first_isolate()</a></code> or <code><a href="../reference/get_episode.html">is_new_episode()</a></code>. You can also filter your data on certain resistance in certain antibiotic classes (<code><a href="../reference/antimicrobial_selectors.html">carbapenems()</a></code>, <code><a href="../reference/antimicrobial_selectors.html">aminoglycosides()</a></code>), or determine multi-drug resistant microorganisms (MDRO, <code><a href="../reference/mdro.html">mdro()</a></code>).</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -198,79 +204,92 @@
</dt>
<dd>Generate Traditional, Combination, Syndromic, or WISCA Antibiograms</dd>
</dl><dl><dt>
<dt>
<code><a href="proportion.html">resistance()</a></code> <code><a href="proportion.html">susceptibility()</a></code> <code><a href="proportion.html">sir_confidence_interval()</a></code> <code><a href="proportion.html">proportion_R()</a></code> <code><a href="proportion.html">proportion_IR()</a></code> <code><a href="proportion.html">proportion_I()</a></code> <code><a href="proportion.html">proportion_SI()</a></code> <code><a href="proportion.html">proportion_S()</a></code> <code><a href="proportion.html">proportion_df()</a></code> <code><a href="proportion.html">sir_df()</a></code>
</dt>
<dd>Calculate Antimicrobial Resistance</dd>
</dl><dl><dt>
<dt>
<code><a href="count.html">count_resistant()</a></code> <code><a href="count.html">count_susceptible()</a></code> <code><a href="count.html">count_S()</a></code> <code><a href="count.html">count_SI()</a></code> <code><a href="count.html">count_I()</a></code> <code><a href="count.html">count_IR()</a></code> <code><a href="count.html">count_R()</a></code> <code><a href="count.html">count_all()</a></code> <code><a href="count.html">n_sir()</a></code> <code><a href="count.html">count_df()</a></code>
</dt>
<dd>Count Available Isolates</dd>
</dl><dl><dt>
<dt>
<code><a href="get_episode.html">get_episode()</a></code> <code><a href="get_episode.html">is_new_episode()</a></code>
</dt>
<dd>Determine Clinical or Epidemic Episodes</dd>
</dl><dl><dt>
<dt>
<code><a href="first_isolate.html">first_isolate()</a></code> <code><a href="first_isolate.html">filter_first_isolate()</a></code>
</dt>
<dd>Determine First Isolates</dd>
</dl><dl><dt>
<dt>
<code><a href="key_antimicrobials.html">key_antimicrobials()</a></code> <code><a href="key_antimicrobials.html">all_antimicrobials()</a></code> <code><a href="key_antimicrobials.html">antimicrobials_equal()</a></code>
</dt>
<dd>(Key) Antimicrobials for First Weighted Isolates</dd>
</dl><dl><dt>
<dt>
<code><a href="mdro.html">mdro()</a></code> <code><a href="mdro.html">brmo()</a></code> <code><a href="mdro.html">mrgn()</a></code> <code><a href="mdro.html">mdr_tb()</a></code> <code><a href="mdro.html">mdr_cmi2012()</a></code> <code><a href="mdro.html">eucast_exceptional_phenotypes()</a></code>
</dt>
<dd>Determine Multidrug-Resistant Organisms (MDRO)</dd>
</dl><dl><dt>
<dt>
<code><a href="custom_mdro_guideline.html">custom_mdro_guideline()</a></code> <code><a href="custom_mdro_guideline.html">c(<i>&lt;custom_mdro_guideline&gt;</i>)</a></code>
</dt>
<dd>Define Custom MDRO Guideline</dd>
</dl><dl><dt>
<dt>
<code><a href="bug_drug_combinations.html">bug_drug_combinations()</a></code> <code><a href="bug_drug_combinations.html">format(<i>&lt;bug_drug_combinations&gt;</i>)</a></code>
</dt>
<dd>Determine Bug-Drug Combinations</dd>
</dl><dl><dt>
<dt>
<code><a href="antimicrobial_selectors.html">aminoglycosides()</a></code> <code><a href="antimicrobial_selectors.html">aminopenicillins()</a></code> <code><a href="antimicrobial_selectors.html">antifungals()</a></code> <code><a href="antimicrobial_selectors.html">antimycobacterials()</a></code> <code><a href="antimicrobial_selectors.html">betalactams()</a></code> <code><a href="antimicrobial_selectors.html">betalactams_with_inhibitor()</a></code> <code><a href="antimicrobial_selectors.html">carbapenems()</a></code> <code><a href="antimicrobial_selectors.html">cephalosporins()</a></code> <code><a href="antimicrobial_selectors.html">cephalosporins_1st()</a></code> <code><a href="antimicrobial_selectors.html">cephalosporins_2nd()</a></code> <code><a href="antimicrobial_selectors.html">cephalosporins_3rd()</a></code> <code><a href="antimicrobial_selectors.html">cephalosporins_4th()</a></code> <code><a href="antimicrobial_selectors.html">cephalosporins_5th()</a></code> <code><a href="antimicrobial_selectors.html">fluoroquinolones()</a></code> <code><a href="antimicrobial_selectors.html">glycopeptides()</a></code> <code><a href="antimicrobial_selectors.html">isoxazolylpenicillins()</a></code> <code><a href="antimicrobial_selectors.html">lincosamides()</a></code> <code><a href="antimicrobial_selectors.html">lipoglycopeptides()</a></code> <code><a href="antimicrobial_selectors.html">macrolides()</a></code> <code><a href="antimicrobial_selectors.html">monobactams()</a></code> <code><a href="antimicrobial_selectors.html">nitrofurans()</a></code> <code><a href="antimicrobial_selectors.html">oxazolidinones()</a></code> <code><a href="antimicrobial_selectors.html">penicillins()</a></code> <code><a href="antimicrobial_selectors.html">phenicols()</a></code> <code><a href="antimicrobial_selectors.html">polymyxins()</a></code> <code><a href="antimicrobial_selectors.html">quinolones()</a></code> <code><a href="antimicrobial_selectors.html">rifamycins()</a></code> <code><a href="antimicrobial_selectors.html">streptogramins()</a></code> <code><a href="antimicrobial_selectors.html">sulfonamides()</a></code> <code><a href="antimicrobial_selectors.html">tetracyclines()</a></code> <code><a href="antimicrobial_selectors.html">trimethoprims()</a></code> <code><a href="antimicrobial_selectors.html">ureidopenicillins()</a></code> <code><a href="antimicrobial_selectors.html">amr_class()</a></code> <code><a href="antimicrobial_selectors.html">amr_selector()</a></code> <code><a href="antimicrobial_selectors.html">administrable_per_os()</a></code> <code><a href="antimicrobial_selectors.html">administrable_iv()</a></code> <code><a href="antimicrobial_selectors.html">not_intrinsic_resistant()</a></code>
</dt>
<dd>Antimicrobial Selectors</dd>
</dl><dl><dt>
<dt>
<code><a href="top_n_microorganisms.html">top_n_microorganisms()</a></code>
</dt>
<dd>Filter Top <em>n</em> Microorganisms</dd>
</dl><dl><dt>
<dt>
<code><a href="mean_amr_distance.html">mean_amr_distance()</a></code> <code><a href="mean_amr_distance.html">amr_distance_from_row()</a></code>
</dt>
<dd>Calculate the Mean AMR Distance</dd>
</dl><dl><dt>
<dt>
<code><a href="resistance_predict.html">resistance_predict()</a></code> <code><a href="resistance_predict.html">sir_predict()</a></code> <code><a href="resistance_predict.html">plot(<i>&lt;resistance_predict&gt;</i>)</a></code> <code><a href="resistance_predict.html">ggplot_sir_predict()</a></code> <code><a href="resistance_predict.html">autoplot(<i>&lt;resistance_predict&gt;</i>)</a></code>
</dt>
<dd>Predict Antimicrobial Resistance</dd>
</dl><dl><dt>
<dt>
<code><a href="guess_ab_col.html">guess_ab_col()</a></code>
@@ -281,8 +300,7 @@
<div class="section-desc"><p>Use these functions for the plotting part. The <code>scale_*_mic()</code> functions extend the ggplot2 package to allow plotting of MIC values, even within a manually set range. If using <code><a href="../reference/plot.html">plot()</a></code> (base R) or <code><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot()</a></code> (ggplot2) on MIC values or disk diffusion values, the user can set the interpretation guideline to give the bars the right SIR colours. The <code><a href="../reference/ggplot_sir.html">ggplot_sir()</a></code> function is a short wrapper for users not much accustomed to ggplot2 yet. The <code><a href="../reference/ggplot_pca.html">ggplot_pca()</a></code> function is a specific function to plot so-called biplots for PCA (principal component analysis).</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -293,13 +311,15 @@
</dt>
<dd>Plotting Helpers for AMR Data Analysis</dd>
</dl><dl><dt>
<dt>
<code><a href="ggplot_sir.html">ggplot_sir()</a></code> <code><a href="ggplot_sir.html">geom_sir()</a></code>
</dt>
<dd>AMR Plots with <code>ggplot2</code></dd>
</dl><dl><dt>
<dt>
<code><a href="ggplot_pca.html">ggplot_pca()</a></code>
@@ -310,8 +330,7 @@
<div class="section-desc"><p>The AMR package is customisable, by providing settings that can be set per user or per team. For example, the default interpretation guideline can be changed from EUCAST to CLSI, or a supported language can be set for the whole team (system-language independent) for antibiotic names in a foreign language.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -327,8 +346,7 @@
<div class="section-desc"><p>This package also provides extensive support for antiviral agents, even though it is not the primary scope of this package. Working with data containing information about antiviral drugs was never easier. Use these functions to get valid properties of antiviral drugs from any input or to clean your input. You can even retrieve drug names and doses from clinical text records, using <code><a href="../reference/av_from_text.html">av_from_text()</a></code>.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -339,13 +357,15 @@
</dt>
<dd>Transform Input to an Antiviral Drug ID</dd>
</dl><dl><dt>
<dt>
<code><a href="av_property.html">av_name()</a></code> <code><a href="av_property.html">av_cid()</a></code> <code><a href="av_property.html">av_synonyms()</a></code> <code><a href="av_property.html">av_tradenames()</a></code> <code><a href="av_property.html">av_group()</a></code> <code><a href="av_property.html">av_atc()</a></code> <code><a href="av_property.html">av_loinc()</a></code> <code><a href="av_property.html">av_ddd()</a></code> <code><a href="av_property.html">av_ddd_units()</a></code> <code><a href="av_property.html">av_info()</a></code> <code><a href="av_property.html">av_url()</a></code> <code><a href="av_property.html">av_property()</a></code>
</dt>
<dd>Get Properties of an Antiviral Drug</dd>
</dl><dl><dt>
<dt>
<code><a href="av_from_text.html">av_from_text()</a></code>
@@ -356,8 +376,7 @@
<div class="section-desc"><p>Some pages about our package and its external sources. Be sure to read our <a href="./../articles/index.html">How Tos</a> for more information about how to work with functions in this package.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -368,61 +387,71 @@
</dt>
<dd>Data Set with 78 679 Taxonomic Records of Microorganisms</dd>
</dl><dl><dt>
<dt>
<code><a href="antimicrobials.html">antimicrobials</a></code> <code><a href="antimicrobials.html">antibiotics</a></code> <code><a href="antimicrobials.html">antivirals</a></code>
</dt>
<dd>Data Sets with 616 Antimicrobial Drugs</dd>
</dl><dl><dt>
<dd>Data Sets with 618 Antimicrobial Drugs</dd>
<dt>
<code><a href="clinical_breakpoints.html">clinical_breakpoints</a></code>
</dt>
<dd>Data Set with Clinical Breakpoints for SIR Interpretation</dd>
</dl><dl><dt>
<dt>
<code><a href="example_isolates.html">example_isolates</a></code>
</dt>
<dd>Data Set with 2 000 Example Isolates</dd>
</dl><dl><dt>
<dt>
<code><a href="microorganisms.codes.html">microorganisms.codes</a></code>
</dt>
<dd>Data Set with 6 036 Common Microorganism Codes</dd>
</dl><dl><dt>
<dt>
<code><a href="microorganisms.groups.html">microorganisms.groups</a></code>
</dt>
<dd>Data Set with 534 Microorganisms In Species Groups</dd>
</dl><dl><dt>
<dt>
<code><a href="intrinsic_resistant.html">intrinsic_resistant</a></code>
</dt>
<dd>Data Set Denoting Bacterial Intrinsic Resistance</dd>
</dl><dl><dt>
<dt>
<code><a href="dosage.html">dosage</a></code>
</dt>
<dd>Data Set with Treatment Dosages as Defined by EUCAST</dd>
</dl><dl><dt>
<dt>
<code><a href="WHOCC.html">WHOCC</a></code>
</dt>
<dd>WHOCC: WHO Collaborating Centre for Drug Statistics Methodology</dd>
</dl><dl><dt>
<dt>
<code><a href="example_isolates_unclean.html">example_isolates_unclean</a></code>
</dt>
<dd>Data Set with Unclean Data</dd>
</dl><dl><dt>
<dt>
<code><a href="WHONET.html">WHONET</a></code>
@@ -433,8 +462,7 @@
<div class="section-desc"><p>These functions are mostly for internal use, but some of them may also be suitable for your analysis. Especially the like function can be useful: <code>if (x %like% y) {...}</code>.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -445,61 +473,71 @@
</dt>
<dd>Split Ages into Age Groups</dd>
</dl><dl><dt>
<dt>
<code><a href="age.html">age()</a></code>
</dt>
<dd>Age in Years of Individuals</dd>
</dl><dl><dt>
<dt>
<code><a href="export_ncbi_biosample.html">export_ncbi_biosample()</a></code>
</dt>
<dd>Export Data Set as NCBI BioSample Antibiogram</dd>
</dl><dl><dt>
<dt>
<code><a href="availability.html">availability()</a></code>
</dt>
<dd>Check Availability of Columns</dd>
</dl><dl><dt>
<dt>
<code><a href="translate.html">get_AMR_locale()</a></code> <code><a href="translate.html">set_AMR_locale()</a></code> <code><a href="translate.html">reset_AMR_locale()</a></code> <code><a href="translate.html">translate_AMR()</a></code>
</dt>
<dd>Translate Strings from the AMR Package</dd>
</dl><dl><dt>
<dt>
<code><a href="italicise_taxonomy.html">italicise_taxonomy()</a></code> <code><a href="italicise_taxonomy.html">italicize_taxonomy()</a></code>
</dt>
<dd>Italicise Taxonomic Families, Genera, Species, Subspecies</dd>
</dl><dl><dt>
<dt>
<code><a href="join.html">inner_join_microorganisms()</a></code> <code><a href="join.html">left_join_microorganisms()</a></code> <code><a href="join.html">right_join_microorganisms()</a></code> <code><a href="join.html">full_join_microorganisms()</a></code> <code><a href="join.html">semi_join_microorganisms()</a></code> <code><a href="join.html">anti_join_microorganisms()</a></code>
</dt>
<dd>Join microorganisms to a Data Set</dd>
</dl><dl><dt>
<dt>
<code><a href="like.html">like()</a></code> <code><a href="like.html">`%like%`</a></code> <code><a href="like.html">`%unlike%`</a></code> <code><a href="like.html">`%like_case%`</a></code> <code><a href="like.html">`%unlike_case%`</a></code>
</dt>
<dd>Vectorised Pattern Matching with Keyboard Shortcut</dd>
</dl><dl><dt>
<dt>
<code><a href="mo_matching_score.html">mo_matching_score()</a></code>
</dt>
<dd>Calculate the Matching Score for Microorganisms</dd>
</dl><dl><dt>
<dt>
<code><a href="pca.html">pca()</a></code>
</dt>
<dd>Principal Component Analysis (for AMR)</dd>
</dl><dl><dt>
<dt>
<code><a href="random.html">random_mic()</a></code> <code><a href="random.html">random_disk()</a></code> <code><a href="random.html">random_sir()</a></code>
@@ -510,8 +548,7 @@
<div class="section-desc"><p>Some statistical tests or methods are not part of base R and were added to this package for convenience.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">
@@ -522,13 +559,15 @@
</dt>
<dd><em>G</em>-test for Count Data</dd>
</dl><dl><dt>
<dt>
<code><a href="kurtosis.html">kurtosis()</a></code>
</dt>
<dd>Kurtosis of the Sample</dd>
</dl><dl><dt>
<dt>
<code><a href="skewness.html">skewness()</a></code>
@@ -539,8 +578,7 @@
<div class="section-desc"><p>These objects are deprecated, meaning that they will still work but show a warning that they will be removed in a future version.</p></div>
</div><div class="section level2">
<dl></dl></div><div class="section level2">

475
reference/index.md Normal file
View File

@@ -0,0 +1,475 @@
# Package index
## Introduction to the package
Please find the introduction to (and some general information about) our
package here.
- [`AMR-package`](https://amr-for-r.org/reference/AMR.md)
[`AMR`](https://amr-for-r.org/reference/AMR.md) :
The `AMR` Package
## Preparing data: microorganisms
These functions are meant to get taxonomically valid properties of
microorganisms from any input, but also properties derived from
taxonomy, such as the Gram stain
([`mo_gramstain()`](https://amr-for-r.org/reference/mo_property.md)) ,
or [`mo_is_yeast()`](https://amr-for-r.org/reference/mo_property.md).
Use [`mo_source()`](https://amr-for-r.org/reference/mo_source.md) to
teach this package how to translate your own codes to valid
microorganisms, and use
[`add_custom_microorganisms()`](https://amr-for-r.org/reference/add_custom_microorganisms.md)
to add your own custom microorganisms to this package.
- [`as.mo()`](https://amr-for-r.org/reference/as.mo.md)
[`is.mo()`](https://amr-for-r.org/reference/as.mo.md)
[`mo_uncertainties()`](https://amr-for-r.org/reference/as.mo.md)
[`mo_renamed()`](https://amr-for-r.org/reference/as.mo.md)
[`mo_failures()`](https://amr-for-r.org/reference/as.mo.md)
[`mo_reset_session()`](https://amr-for-r.org/reference/as.mo.md)
[`mo_cleaning_regex()`](https://amr-for-r.org/reference/as.mo.md) :
Transform Arbitrary Input to Valid Microbial Taxonomy
- [`mo_name()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_fullname()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_shortname()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_subspecies()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_species()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_genus()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_family()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_order()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_class()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_phylum()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_kingdom()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_domain()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_type()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_status()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_pathogenicity()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_gramstain()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_is_gram_negative()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_is_gram_positive()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_is_yeast()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_is_intrinsic_resistant()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_oxygen_tolerance()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_is_anaerobic()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_snomed()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_ref()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_authors()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_year()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_lpsn()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_mycobank()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_gbif()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_rank()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_taxonomy()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_synonyms()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_current()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_group_members()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_info()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_url()`](https://amr-for-r.org/reference/mo_property.md)
[`mo_property()`](https://amr-for-r.org/reference/mo_property.md) :
Get Properties of a Microorganism
- [`add_custom_microorganisms()`](https://amr-for-r.org/reference/add_custom_microorganisms.md)
[`clear_custom_microorganisms()`](https://amr-for-r.org/reference/add_custom_microorganisms.md)
: Add Custom Microorganisms
- [`set_mo_source()`](https://amr-for-r.org/reference/mo_source.md)
[`get_mo_source()`](https://amr-for-r.org/reference/mo_source.md) :
User-Defined Reference Data Set for Microorganisms
## Preparing data: antimicrobials
Use these functions to get valid properties of antimicrobials from any
input or to clean your input. You can even retrieve drug names and doses
from clinical text records, using
[`ab_from_text()`](https://amr-for-r.org/reference/ab_from_text.md).
- [`as.ab()`](https://amr-for-r.org/reference/as.ab.md)
[`is.ab()`](https://amr-for-r.org/reference/as.ab.md)
[`ab_reset_session()`](https://amr-for-r.org/reference/as.ab.md) :
Transform Input to an Antibiotic ID
- [`ab_name()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_cid()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_synonyms()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_tradenames()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_group()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_atc()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_atc_group1()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_atc_group2()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_loinc()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_ddd()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_ddd_units()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_info()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_url()`](https://amr-for-r.org/reference/ab_property.md)
[`ab_property()`](https://amr-for-r.org/reference/ab_property.md)
[`set_ab_names()`](https://amr-for-r.org/reference/ab_property.md) :
Get Properties of an Antibiotic
- [`ab_from_text()`](https://amr-for-r.org/reference/ab_from_text.md) :
Retrieve Antimicrobial Drug Names and Doses from Clinical Text
- [`atc_online_property()`](https://amr-for-r.org/reference/atc_online.md)
[`atc_online_groups()`](https://amr-for-r.org/reference/atc_online.md)
[`atc_online_ddd()`](https://amr-for-r.org/reference/atc_online.md)
[`atc_online_ddd_units()`](https://amr-for-r.org/reference/atc_online.md)
: Get ATC Properties from WHOCC Website
- [`add_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md)
[`clear_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md)
: Add Custom Antimicrobials
## Preparing data: antimicrobial results
With [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) and
[`as.disk()`](https://amr-for-r.org/reference/as.disk.md) you can
transform your raw input to valid MIC or disk diffusion values. Use
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) for cleaning raw
data to let it only contain “R”, “I” and “S”, or to interpret MIC or
disk diffusion values as SIR based on the lastest EUCAST and CLSI
guidelines. Afterwards, you can extend antibiotic interpretations by
applying [EUCAST
rules](https://www.eucast.org/expert_rules_and_intrinsic_resistance/)
with
[`eucast_rules()`](https://amr-for-r.org/reference/eucast_rules.md).
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
[`NA_sir_`](https://amr-for-r.org/reference/as.sir.md)
[`is.sir()`](https://amr-for-r.org/reference/as.sir.md)
[`is_sir_eligible()`](https://amr-for-r.org/reference/as.sir.md)
[`sir_interpretation_history()`](https://amr-for-r.org/reference/as.sir.md)
: Interpret MIC and Disk Diffusion as SIR, or Clean Existing SIR Data
- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md)
[`is.mic()`](https://amr-for-r.org/reference/as.mic.md)
[`NA_mic_`](https://amr-for-r.org/reference/as.mic.md)
[`rescale_mic()`](https://amr-for-r.org/reference/as.mic.md)
[`mic_p50()`](https://amr-for-r.org/reference/as.mic.md)
[`mic_p90()`](https://amr-for-r.org/reference/as.mic.md)
[`droplevels(`*`<mic>`*`)`](https://amr-for-r.org/reference/as.mic.md)
: Transform Input to Minimum Inhibitory Concentrations (MIC)
- [`as.disk()`](https://amr-for-r.org/reference/as.disk.md)
[`NA_disk_`](https://amr-for-r.org/reference/as.disk.md)
[`is.disk()`](https://amr-for-r.org/reference/as.disk.md) : Transform
Input to Disk Diffusion Diameters
- [`eucast_rules()`](https://amr-for-r.org/reference/eucast_rules.md)
[`eucast_dosage()`](https://amr-for-r.org/reference/eucast_rules.md) :
Apply EUCAST Rules
- [`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md)
: Define Custom EUCAST Rules
## Analysing data
Use these function for the analysis part. You can use
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md) or
[`resistance()`](https://amr-for-r.org/reference/proportion.md) on any
antibiotic column. With
[`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md), you
can generate a traditional, combined, syndromic, or weighted-incidence
syndromic combination antibiogram (WISCA). This function also comes with
support for R Markdown and Quarto. Be sure to first select the isolates
that are appropiate for analysis, by using
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md) or
[`is_new_episode()`](https://amr-for-r.org/reference/get_episode.md).
You can also filter your data on certain resistance in certain
antibiotic classes
([`carbapenems()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
[`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)),
or determine multi-drug resistant microorganisms (MDRO,
[`mdro()`](https://amr-for-r.org/reference/mdro.md)).
- [`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md)
[`wisca()`](https://amr-for-r.org/reference/antibiogram.md)
[`retrieve_wisca_parameters()`](https://amr-for-r.org/reference/antibiogram.md)
[`plot(`*`<antibiogram>`*`)`](https://amr-for-r.org/reference/antibiogram.md)
[`autoplot(`*`<antibiogram>`*`)`](https://amr-for-r.org/reference/antibiogram.md)
[`knit_print(`*`<antibiogram>`*`)`](https://amr-for-r.org/reference/antibiogram.md)
: Generate Traditional, Combination, Syndromic, or WISCA Antibiograms
- [`resistance()`](https://amr-for-r.org/reference/proportion.md)
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
[`sir_confidence_interval()`](https://amr-for-r.org/reference/proportion.md)
[`proportion_R()`](https://amr-for-r.org/reference/proportion.md)
[`proportion_IR()`](https://amr-for-r.org/reference/proportion.md)
[`proportion_I()`](https://amr-for-r.org/reference/proportion.md)
[`proportion_SI()`](https://amr-for-r.org/reference/proportion.md)
[`proportion_S()`](https://amr-for-r.org/reference/proportion.md)
[`proportion_df()`](https://amr-for-r.org/reference/proportion.md)
[`sir_df()`](https://amr-for-r.org/reference/proportion.md) :
Calculate Antimicrobial Resistance
- [`count_resistant()`](https://amr-for-r.org/reference/count.md)
[`count_susceptible()`](https://amr-for-r.org/reference/count.md)
[`count_S()`](https://amr-for-r.org/reference/count.md)
[`count_SI()`](https://amr-for-r.org/reference/count.md)
[`count_I()`](https://amr-for-r.org/reference/count.md)
[`count_IR()`](https://amr-for-r.org/reference/count.md)
[`count_R()`](https://amr-for-r.org/reference/count.md)
[`count_all()`](https://amr-for-r.org/reference/count.md)
[`n_sir()`](https://amr-for-r.org/reference/count.md)
[`count_df()`](https://amr-for-r.org/reference/count.md) : Count
Available Isolates
- [`get_episode()`](https://amr-for-r.org/reference/get_episode.md)
[`is_new_episode()`](https://amr-for-r.org/reference/get_episode.md) :
Determine Clinical or Epidemic Episodes
- [`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
[`filter_first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
: Determine First Isolates
- [`key_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
[`all_antimicrobials()`](https://amr-for-r.org/reference/key_antimicrobials.md)
[`antimicrobials_equal()`](https://amr-for-r.org/reference/key_antimicrobials.md)
: (Key) Antimicrobials for First Weighted Isolates
- [`mdro()`](https://amr-for-r.org/reference/mdro.md)
[`brmo()`](https://amr-for-r.org/reference/mdro.md)
[`mrgn()`](https://amr-for-r.org/reference/mdro.md)
[`mdr_tb()`](https://amr-for-r.org/reference/mdro.md)
[`mdr_cmi2012()`](https://amr-for-r.org/reference/mdro.md)
[`eucast_exceptional_phenotypes()`](https://amr-for-r.org/reference/mdro.md)
: Determine Multidrug-Resistant Organisms (MDRO)
- [`custom_mdro_guideline()`](https://amr-for-r.org/reference/custom_mdro_guideline.md)
[`c(`*`<custom_mdro_guideline>`*`)`](https://amr-for-r.org/reference/custom_mdro_guideline.md)
: Define Custom MDRO Guideline
- [`bug_drug_combinations()`](https://amr-for-r.org/reference/bug_drug_combinations.md)
[`format(`*`<bug_drug_combinations>`*`)`](https://amr-for-r.org/reference/bug_drug_combinations.md)
: Determine Bug-Drug Combinations
- [`aminoglycosides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`aminopenicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`antifungals()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`antimycobacterials()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`betalactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`betalactams_with_inhibitor()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`carbapenems()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`cephalosporins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`cephalosporins_1st()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`cephalosporins_2nd()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`cephalosporins_3rd()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`cephalosporins_4th()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`cephalosporins_5th()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`fluoroquinolones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`glycopeptides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`isoxazolylpenicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`lincosamides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`lipoglycopeptides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`macrolides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`monobactams()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`nitrofurans()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`oxazolidinones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`penicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`phenicols()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`polymyxins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`quinolones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`rifamycins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`streptogramins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`sulfonamides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`tetracyclines()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`trimethoprims()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`ureidopenicillins()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`amr_class()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`amr_selector()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`administrable_per_os()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`administrable_iv()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
[`not_intrinsic_resistant()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
: Antimicrobial Selectors
- [`top_n_microorganisms()`](https://amr-for-r.org/reference/top_n_microorganisms.md)
:
Filter Top *n* Microorganisms
- [`mean_amr_distance()`](https://amr-for-r.org/reference/mean_amr_distance.md)
[`amr_distance_from_row()`](https://amr-for-r.org/reference/mean_amr_distance.md)
: Calculate the Mean AMR Distance
- [`resistance_predict()`](https://amr-for-r.org/reference/resistance_predict.md)
[`sir_predict()`](https://amr-for-r.org/reference/resistance_predict.md)
[`plot(`*`<resistance_predict>`*`)`](https://amr-for-r.org/reference/resistance_predict.md)
[`ggplot_sir_predict()`](https://amr-for-r.org/reference/resistance_predict.md)
[`autoplot(`*`<resistance_predict>`*`)`](https://amr-for-r.org/reference/resistance_predict.md)
: Predict Antimicrobial Resistance
- [`guess_ab_col()`](https://amr-for-r.org/reference/guess_ab_col.md) :
Guess Antibiotic Column
## Plotting data
Use these functions for the plotting part. The `scale_*_mic()` functions
extend the ggplot2 package to allow plotting of MIC values, even within
a manually set range. If using
[`plot()`](https://amr-for-r.org/reference/plot.md) (base R) or
[`autoplot()`](https://ggplot2.tidyverse.org/reference/autoplot.html)
(ggplot2) on MIC values or disk diffusion values, the user can set the
interpretation guideline to give the bars the right SIR colours. The
[`ggplot_sir()`](https://amr-for-r.org/reference/ggplot_sir.md) function
is a short wrapper for users not much accustomed to ggplot2 yet. The
[`ggplot_pca()`](https://amr-for-r.org/reference/ggplot_pca.md) function
is a specific function to plot so-called biplots for PCA (principal
component analysis).
- [`scale_x_mic()`](https://amr-for-r.org/reference/plot.md)
[`scale_y_mic()`](https://amr-for-r.org/reference/plot.md)
[`scale_colour_mic()`](https://amr-for-r.org/reference/plot.md)
[`scale_fill_mic()`](https://amr-for-r.org/reference/plot.md)
[`scale_x_sir()`](https://amr-for-r.org/reference/plot.md)
[`scale_colour_sir()`](https://amr-for-r.org/reference/plot.md)
[`scale_fill_sir()`](https://amr-for-r.org/reference/plot.md)
[`plot(`*`<mic>`*`)`](https://amr-for-r.org/reference/plot.md)
[`autoplot(`*`<mic>`*`)`](https://amr-for-r.org/reference/plot.md)
[`plot(`*`<disk>`*`)`](https://amr-for-r.org/reference/plot.md)
[`autoplot(`*`<disk>`*`)`](https://amr-for-r.org/reference/plot.md)
[`plot(`*`<sir>`*`)`](https://amr-for-r.org/reference/plot.md)
[`autoplot(`*`<sir>`*`)`](https://amr-for-r.org/reference/plot.md)
[`facet_sir()`](https://amr-for-r.org/reference/plot.md)
[`scale_y_percent()`](https://amr-for-r.org/reference/plot.md)
[`scale_sir_colours()`](https://amr-for-r.org/reference/plot.md)
[`theme_sir()`](https://amr-for-r.org/reference/plot.md)
[`labels_sir_count()`](https://amr-for-r.org/reference/plot.md) :
Plotting Helpers for AMR Data Analysis
- [`ggplot_sir()`](https://amr-for-r.org/reference/ggplot_sir.md)
[`geom_sir()`](https://amr-for-r.org/reference/ggplot_sir.md) :
AMR Plots with `ggplot2`
- [`ggplot_pca()`](https://amr-for-r.org/reference/ggplot_pca.md) :
PCA Biplot with `ggplot2`
## AMR-specific options
The AMR package is customisable, by providing settings that can be set
per user or per team. For example, the default interpretation guideline
can be changed from EUCAST to CLSI, or a supported language can be set
for the whole team (system-language independent) for antibiotic names in
a foreign language.
- [`AMR-options`](https://amr-for-r.org/reference/AMR-options.md) :
Options for the AMR package
## Other: antiviral drugs
This package also provides extensive support for antiviral agents, even
though it is not the primary scope of this package. Working with data
containing information about antiviral drugs was never easier. Use these
functions to get valid properties of antiviral drugs from any input or
to clean your input. You can even retrieve drug names and doses from
clinical text records, using
[`av_from_text()`](https://amr-for-r.org/reference/av_from_text.md).
- [`as.av()`](https://amr-for-r.org/reference/as.av.md)
[`is.av()`](https://amr-for-r.org/reference/as.av.md) : Transform
Input to an Antiviral Drug ID
- [`av_name()`](https://amr-for-r.org/reference/av_property.md)
[`av_cid()`](https://amr-for-r.org/reference/av_property.md)
[`av_synonyms()`](https://amr-for-r.org/reference/av_property.md)
[`av_tradenames()`](https://amr-for-r.org/reference/av_property.md)
[`av_group()`](https://amr-for-r.org/reference/av_property.md)
[`av_atc()`](https://amr-for-r.org/reference/av_property.md)
[`av_loinc()`](https://amr-for-r.org/reference/av_property.md)
[`av_ddd()`](https://amr-for-r.org/reference/av_property.md)
[`av_ddd_units()`](https://amr-for-r.org/reference/av_property.md)
[`av_info()`](https://amr-for-r.org/reference/av_property.md)
[`av_url()`](https://amr-for-r.org/reference/av_property.md)
[`av_property()`](https://amr-for-r.org/reference/av_property.md) :
Get Properties of an Antiviral Drug
- [`av_from_text()`](https://amr-for-r.org/reference/av_from_text.md) :
Retrieve Antiviral Drug Names and Doses from Clinical Text
## Other: background information on included data
Some pages about our package and its external sources. Be sure to read
our [How Tos](https://amr-for-r.org/articles/index.md) for more
information about how to work with functions in this package.
- [`microorganisms`](https://amr-for-r.org/reference/microorganisms.md)
: Data Set with 78 679 Taxonomic Records of Microorganisms
- [`antimicrobials`](https://amr-for-r.org/reference/antimicrobials.md)
[`antibiotics`](https://amr-for-r.org/reference/antimicrobials.md)
[`antivirals`](https://amr-for-r.org/reference/antimicrobials.md) :
Data Sets with 618 Antimicrobial Drugs
- [`clinical_breakpoints`](https://amr-for-r.org/reference/clinical_breakpoints.md)
: Data Set with Clinical Breakpoints for SIR Interpretation
- [`example_isolates`](https://amr-for-r.org/reference/example_isolates.md)
: Data Set with 2 000 Example Isolates
- [`microorganisms.codes`](https://amr-for-r.org/reference/microorganisms.codes.md)
: Data Set with 6 036 Common Microorganism Codes
- [`microorganisms.groups`](https://amr-for-r.org/reference/microorganisms.groups.md)
: Data Set with 534 Microorganisms In Species Groups
- [`intrinsic_resistant`](https://amr-for-r.org/reference/intrinsic_resistant.md)
: Data Set Denoting Bacterial Intrinsic Resistance
- [`dosage`](https://amr-for-r.org/reference/dosage.md) : Data Set with
Treatment Dosages as Defined by EUCAST
- [`WHOCC`](https://amr-for-r.org/reference/WHOCC.md) : WHOCC: WHO
Collaborating Centre for Drug Statistics Methodology
- [`example_isolates_unclean`](https://amr-for-r.org/reference/example_isolates_unclean.md)
: Data Set with Unclean Data
- [`WHONET`](https://amr-for-r.org/reference/WHONET.md) : Data Set with
500 Isolates - WHONET Example
## Other: miscellaneous functions
These functions are mostly for internal use, but some of them may also
be suitable for your analysis. Especially the like function can be
useful: `if (x %like% y) {...}`.
- [`age_groups()`](https://amr-for-r.org/reference/age_groups.md) :
Split Ages into Age Groups
- [`age()`](https://amr-for-r.org/reference/age.md) : Age in Years of
Individuals
- [`export_ncbi_biosample()`](https://amr-for-r.org/reference/export_ncbi_biosample.md)
: Export Data Set as NCBI BioSample Antibiogram
- [`availability()`](https://amr-for-r.org/reference/availability.md) :
Check Availability of Columns
- [`get_AMR_locale()`](https://amr-for-r.org/reference/translate.md)
[`set_AMR_locale()`](https://amr-for-r.org/reference/translate.md)
[`reset_AMR_locale()`](https://amr-for-r.org/reference/translate.md)
[`translate_AMR()`](https://amr-for-r.org/reference/translate.md) :
Translate Strings from the AMR Package
- [`italicise_taxonomy()`](https://amr-for-r.org/reference/italicise_taxonomy.md)
[`italicize_taxonomy()`](https://amr-for-r.org/reference/italicise_taxonomy.md)
: Italicise Taxonomic Families, Genera, Species, Subspecies
- [`inner_join_microorganisms()`](https://amr-for-r.org/reference/join.md)
[`left_join_microorganisms()`](https://amr-for-r.org/reference/join.md)
[`right_join_microorganisms()`](https://amr-for-r.org/reference/join.md)
[`full_join_microorganisms()`](https://amr-for-r.org/reference/join.md)
[`semi_join_microorganisms()`](https://amr-for-r.org/reference/join.md)
[`anti_join_microorganisms()`](https://amr-for-r.org/reference/join.md)
: Join microorganisms to a Data Set
- [`like()`](https://amr-for-r.org/reference/like.md)
[`` `%like%` ``](https://amr-for-r.org/reference/like.md)
[`` `%unlike%` ``](https://amr-for-r.org/reference/like.md)
[`` `%like_case%` ``](https://amr-for-r.org/reference/like.md)
[`` `%unlike_case%` ``](https://amr-for-r.org/reference/like.md) :
Vectorised Pattern Matching with Keyboard Shortcut
- [`mo_matching_score()`](https://amr-for-r.org/reference/mo_matching_score.md)
: Calculate the Matching Score for Microorganisms
- [`pca()`](https://amr-for-r.org/reference/pca.md) : Principal
Component Analysis (for AMR)
- [`random_mic()`](https://amr-for-r.org/reference/random.md)
[`random_disk()`](https://amr-for-r.org/reference/random.md)
[`random_sir()`](https://amr-for-r.org/reference/random.md) : Random
MIC Values/Disk Zones/SIR Generation
## Other: statistical tests
Some statistical tests or methods are not part of base R and were added
to this package for convenience.
- [`g.test()`](https://amr-for-r.org/reference/g.test.md) :
*G*-test for Count Data
- [`kurtosis()`](https://amr-for-r.org/reference/kurtosis.md) : Kurtosis
of the Sample
- [`skewness()`](https://amr-for-r.org/reference/skewness.md) : Skewness
of the Sample
## Other: deprecated functions/arguments/datasets
These objects are deprecated, meaning that they will still work but show
a warning that they will be removed in a future version.
- [`ab_class()`](https://amr-for-r.org/reference/AMR-deprecated.md)
[`ab_selector()`](https://amr-for-r.org/reference/AMR-deprecated.md) :
Deprecated Functions, Arguments, or Datasets

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,81 @@
# Data Set Denoting Bacterial Intrinsic Resistance
Data set containing 'EUCAST Expected Resistant Phenotypes' of *all*
bug-drug combinations between the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md) and
[antimicrobials](https://amr-for-r.org/reference/antimicrobials.md) data
sets.
## Usage
``` r
intrinsic_resistant
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 271
905 observations and 2 variables:
- `mo`
Microorganism ID which occurs in
[`microorganisms$mo`](https://amr-for-r.org/reference/microorganisms.md).
Names can be retrieved using
[`mo_name()`](https://amr-for-r.org/reference/mo_property.md).
- `ab`
Antimicrobial ID which occurs in
[`antimicrobials$ab`](https://amr-for-r.org/reference/antimicrobials.md).
Names can be retrieved using
[`ab_name()`](https://amr-for-r.org/reference/ab_property.md).
## Details
This data set is currently based on ['EUCAST Expected Resistant
Phenotypes'
v1.2](https://www.eucast.org/expert_rules_and_expected_phenotypes)
(2023).
This data set is internally used by:
- [`not_intrinsic_resistant()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
(an [antimicrobial
selector](https://amr-for-r.org/reference/antimicrobial_selectors.md))
- [`mo_is_intrinsic_resistant()`](https://amr-for-r.org/reference/mo_property.md)
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## Examples
``` r
intrinsic_resistant
#> # A tibble: 271,905 × 2
#> mo ab
#> <mo> <ab>
#> 1 B_GRAMP ATM
#> 2 B_GRAMP COL
#> 3 B_GRAMP NAL
#> 4 B_GRAMP PLB
#> 5 B_GRAMP TEM
#> 6 B_ANAER-POS ATM
#> 7 B_ANAER-POS COL
#> 8 B_ANAER-POS NAL
#> 9 B_ANAER-POS PLB
#> 10 B_ANAER-POS TEM
#> # 271,895 more rows
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,51 @@
# Italicise Taxonomic Families, Genera, Species, Subspecies
According to the binomial nomenclature, the lowest four taxonomic levels
(family, genus, species, subspecies) should be printed in italics. This
function finds taxonomic names within strings and makes them italic.
## Usage
``` r
italicise_taxonomy(string, type = c("markdown", "ansi", "html"))
italicize_taxonomy(string, type = c("markdown", "ansi", "html"))
```
## Arguments
- string:
A [character](https://rdrr.io/r/base/character.html) (vector).
- type:
Type of conversion of the taxonomic names, either "markdown", "html"
or "ansi", see *Details*.
## Details
This function finds the taxonomic names and makes them italic based on
the [microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set.
The taxonomic names can be italicised using markdown (the default) by
adding `*` before and after the taxonomic names, or `<i>` and `</i>`
when using html. When using 'ansi', ANSI colours will be added using
`\033[3m` before and `\033[23m` after the taxonomic names. If multiple
ANSI colours are not available, no conversion will occur.
This function also supports abbreviation of the genus if it is followed
by a species, such as "E. coli" and "K. pneumoniae ozaenae".
## Examples
``` r
italicise_taxonomy("An overview of Staphylococcus aureus isolates")
#> [1] "An overview of *Staphylococcus aureus* isolates"
italicise_taxonomy("An overview of S. aureus isolates")
#> [1] "An overview of *S. aureus* isolates"
cat(italicise_taxonomy("An overview of S. aureus isolates", type = "ansi"))
#> An overview of S. aureus isolates
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

156
reference/join.md Normal file
View File

@@ -0,0 +1,156 @@
# Join [microorganisms](https://amr-for-r.org/reference/microorganisms.md) to a Data Set
Join the data set
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
easily to an existing data set or to a
[character](https://rdrr.io/r/base/character.html) vector.
## Usage
``` r
inner_join_microorganisms(x, by = NULL, suffix = c("2", ""), ...)
left_join_microorganisms(x, by = NULL, suffix = c("2", ""), ...)
right_join_microorganisms(x, by = NULL, suffix = c("2", ""), ...)
full_join_microorganisms(x, by = NULL, suffix = c("2", ""), ...)
semi_join_microorganisms(x, by = NULL, ...)
anti_join_microorganisms(x, by = NULL, ...)
```
## Arguments
- x:
Existing data set to join, or
[character](https://rdrr.io/r/base/character.html) vector. In case of
a [character](https://rdrr.io/r/base/character.html) vector, the
resulting [data.frame](https://rdrr.io/r/base/data.frame.html) will
contain a column 'x' with these values.
- by:
A variable to join by - if left empty will search for a column with
class [`mo`](https://amr-for-r.org/reference/as.mo.md) (created with
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) or will be
`"mo"` if that column name exists in `x`, could otherwise be a column
name of `x` with values that exist in `microorganisms$mo` (such as
`by = "bacteria_id"`), or another column in
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
(but then it should be named, like
`by = c("bacteria_id" = "fullname")`).
- suffix:
If there are non-joined duplicate variables in `x` and `y`, these
suffixes will be added to the output to disambiguate them. Should be a
[character](https://rdrr.io/r/base/character.html) vector of length 2.
- ...:
Ignored, only in place to allow future extensions.
## Value
a [data.frame](https://rdrr.io/r/base/data.frame.html)
## Details
**Note:** As opposed to the `join()` functions of `dplyr`,
[character](https://rdrr.io/r/base/character.html) vectors are supported
and at default existing columns will get a suffix `"2"` and the newly
joined columns will not get a suffix.
If the `dplyr` package is installed, their join functions will be used.
Otherwise, the much slower
[`merge()`](https://rdatatable.gitlab.io/data.table/reference/merge.html)
and [`interaction()`](https://rdrr.io/r/base/interaction.html) functions
from base R will be used.
## Examples
``` r
left_join_microorganisms(as.mo("K. pneumoniae"))
#> # A tibble: 1 × 26
#> mo fullname status kingdom phylum class order family genus species
#> <mo> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 B_KLBSL_PNMN Klebsiell… accep… Bacter… Pseud… Gamm… Ente… Enter… Kleb… pneumo…
#> # 16 more variables: subspecies <chr>, rank <chr>, ref <chr>,
#> # oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>,
#> # lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>,
#> # mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>,
#> # gbif_renamed_to <chr>, prevalence <dbl>, snomed <list>
left_join_microorganisms("B_KLBSL_PNMN")
#> # A tibble: 1 × 26
#> mo fullname status kingdom phylum class order family genus species
#> <mo> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 B_KLBSL_PNMN Klebsiell… accep… Bacter… Pseud… Gamm… Ente… Enter… Kleb… pneumo…
#> # 16 more variables: subspecies <chr>, rank <chr>, ref <chr>,
#> # oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>,
#> # lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>,
#> # mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>,
#> # gbif_renamed_to <chr>, prevalence <dbl>, snomed <list>
df <- data.frame(
date = seq(
from = as.Date("2018-01-01"),
to = as.Date("2018-01-07"),
by = 1
),
bacteria = as.mo(c(
"S. aureus", "MRSA", "MSSA", "STAAUR",
"E. coli", "E. coli", "E. coli"
)),
stringsAsFactors = FALSE
)
colnames(df)
#> [1] "date" "bacteria"
df_joined <- left_join_microorganisms(df, "bacteria")
colnames(df_joined)
#> [1] "date" "bacteria" "fullname"
#> [4] "status" "kingdom" "phylum"
#> [7] "class" "order" "family"
#> [10] "genus" "species" "subspecies"
#> [13] "rank" "ref" "oxygen_tolerance"
#> [16] "source" "lpsn" "lpsn_parent"
#> [19] "lpsn_renamed_to" "mycobank" "mycobank_parent"
#> [22] "mycobank_renamed_to" "gbif" "gbif_parent"
#> [25] "gbif_renamed_to" "prevalence" "snomed"
# \donttest{
if (require("dplyr")) {
example_isolates %>%
left_join_microorganisms() %>%
colnames()
}
#> Joining, by = "mo"
#> [1] "date" "patient" "age"
#> [4] "gender" "ward" "mo"
#> [7] "PEN" "OXA" "FLC"
#> [10] "AMX" "AMC" "AMP"
#> [13] "TZP" "CZO" "FEP"
#> [16] "CXM" "FOX" "CTX"
#> [19] "CAZ" "CRO" "GEN"
#> [22] "TOB" "AMK" "KAN"
#> [25] "TMP" "SXT" "NIT"
#> [28] "FOS" "LNZ" "CIP"
#> [31] "MFX" "VAN" "TEC"
#> [34] "TCY" "TGC" "DOX"
#> [37] "ERY" "CLI" "AZM"
#> [40] "IPM" "MEM" "MTR"
#> [43] "CHL" "COL" "MUP"
#> [46] "RIF" "fullname" "status"
#> [49] "kingdom" "phylum" "class"
#> [52] "order" "family" "genus"
#> [55] "species" "subspecies" "rank"
#> [58] "ref" "oxygen_tolerance" "source"
#> [61] "lpsn" "lpsn_parent" "lpsn_renamed_to"
#> [64] "mycobank" "mycobank_parent" "mycobank_renamed_to"
#> [67] "gbif" "gbif_parent" "gbif_renamed_to"
#> [70] "prevalence" "snomed"
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,223 @@
# (Key) Antimicrobials for First Weighted Isolates
These functions can be used to determine first weighted isolates by
considering the phenotype for isolate selection (see
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)).
Using a phenotype-based method to determine first isolates is more
reliable than methods that disregard phenotypes.
## Usage
``` r
key_antimicrobials(x = NULL, col_mo = NULL, universal = c("ampicillin",
"amoxicillin/clavulanic acid", "cefuroxime", "piperacillin/tazobactam",
"ciprofloxacin", "trimethoprim/sulfamethoxazole"),
gram_negative = c("gentamicin", "tobramycin", "colistin", "cefotaxime",
"ceftazidime", "meropenem"), gram_positive = c("vancomycin", "teicoplanin",
"tetracycline", "erythromycin", "oxacillin", "rifampin"),
antifungal = c("anidulafungin", "caspofungin", "fluconazole", "miconazole",
"nystatin", "voriconazole"), only_sir_columns = any(is.sir(x)), ...)
all_antimicrobials(x = NULL, only_sir_columns = any(is.sir(x)), ...)
antimicrobials_equal(y, z, type = c("points", "keyantimicrobials"),
ignore_I = TRUE, points_threshold = 2, ...)
```
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) with
antimicrobials columns, like `AMX` or `amox`. Can be left blank to
determine automatically.
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- universal:
Names of **broad-spectrum** antimicrobial drugs, case-insensitive. Set
to `NULL` to ignore. See *Details* for the default antimicrobial
drugs.
- gram_negative:
Names of antibiotic drugs for **Gram-positives**, case-insensitive.
Set to `NULL` to ignore. See *Details* for the default antibiotic
drugs.
- gram_positive:
Names of antibiotic drugs for **Gram-negatives**, case-insensitive.
Set to `NULL` to ignore. See *Details* for the default antibiotic
drugs.
- antifungal:
Names of antifungal drugs for **fungi**, case-insensitive. Set to
`NULL` to ignore. See *Details* for the default antifungal drugs.
- only_sir_columns:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
only antimicrobial columns must be included that were transformed to
class [sir](https://amr-for-r.org/reference/as.sir.md) on beforehand.
Defaults to `FALSE` if no columns of `x` have a class
[sir](https://amr-for-r.org/reference/as.sir.md).
- ...:
Ignored, only in place to allow future extensions.
- y, z:
[character](https://rdrr.io/r/base/character.html) vectors to compare.
- type:
Type to determine weighed isolates; can be `"keyantimicrobials"` or
`"points"`, see *Details*.
- ignore_I:
[logical](https://rdrr.io/r/base/logical.html) to indicate whether
antibiotic interpretations with `"I"` will be ignored when
`type = "keyantimicrobials"`, see *Details*.
- points_threshold:
Minimum number of points to require before differences in the
antibiogram will lead to inclusion of an isolate when
`type = "points"`, see *Details*.
## Details
The `key_antimicrobials()` and `all_antimicrobials()` functions are
context-aware. This means that the `x` argument can be left blank if
used inside a [data.frame](https://rdrr.io/r/base/data.frame.html) call,
see *Examples*.
The function `key_antimicrobials()` returns a
[character](https://rdrr.io/r/base/character.html) vector with 12
antimicrobial results for every isolate. The function
`all_antimicrobials()` returns a
[character](https://rdrr.io/r/base/character.html) vector with all
antimicrobial drug results for every isolate. These vectors can then be
compared using `antimicrobials_equal()`, to check if two isolates have
generally the same antibiogram. Missing and invalid values are replaced
with a dot (`"."`) by `key_antimicrobials()` and ignored by
`antimicrobials_equal()`.
Please see the
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
function how these important functions enable the 'phenotype-based'
method for determination of first isolates.
The default antimicrobial drugs used for **all rows** (set in
`universal`) are:
- Ampicillin
- Amoxicillin/clavulanic acid
- Cefuroxime
- Ciprofloxacin
- Piperacillin/tazobactam
- Trimethoprim/sulfamethoxazole
The default antimicrobial drugs used for **Gram-negative bacteria** (set
in `gram_negative`) are:
- Cefotaxime
- Ceftazidime
- Colistin
- Gentamicin
- Meropenem
- Tobramycin
The default antimicrobial drugs used for **Gram-positive bacteria** (set
in `gram_positive`) are:
- Erythromycin
- Oxacillin
- Rifampin
- Teicoplanin
- Tetracycline
- Vancomycin
The default antimicrobial drugs used for **fungi** (set in `antifungal`)
are:
- Anidulafungin
- Caspofungin
- Fluconazole
- Miconazole
- Nystatin
- Voriconazole
## See also
[`first_isolate()`](https://amr-for-r.org/reference/first_isolate.md)
## Examples
``` r
# `example_isolates` is a data set available in the AMR package.
# See ?example_isolates.
# output of the `key_antimicrobials()` function could be like this:
strainA <- "SSSRR.S.R..S"
strainB <- "SSSIRSSSRSSS"
# those strings can be compared with:
antimicrobials_equal(strainA, strainB, type = "keyantimicrobials")
#> [1] TRUE
# TRUE, because I is ignored (as well as missing values)
antimicrobials_equal(strainA, strainB, type = "keyantimicrobials", ignore_I = FALSE)
#> [1] FALSE
# FALSE, because I is not ignored and so the 4th [character] differs
# \donttest{
if (require("dplyr")) {
# set key antimicrobials to a new variable
my_patients <- example_isolates %>%
mutate(keyab = key_antimicrobials(antifungal = NULL)) %>% # no need to define `x`
mutate(
# now calculate first isolates
first_regular = first_isolate(col_keyantimicrobials = FALSE),
# and first WEIGHTED isolates
first_weighted = first_isolate(col_keyantimicrobials = "keyab")
)
# Check the difference in this data set, 'weighted' results in more isolates:
sum(my_patients$first_regular, na.rm = TRUE)
sum(my_patients$first_weighted, na.rm = TRUE)
}
#> [1] 1383
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

51
reference/kurtosis.md Normal file
View File

@@ -0,0 +1,51 @@
# Kurtosis of the Sample
Kurtosis is a measure of the "tailedness" of the probability
distribution of a real-valued random variable. A normal distribution has
a kurtosis of 3 and a excess kurtosis of 0.
## Usage
``` r
kurtosis(x, na.rm = FALSE, excess = FALSE)
# Default S3 method
kurtosis(x, na.rm = FALSE, excess = FALSE)
# S3 method for class 'matrix'
kurtosis(x, na.rm = FALSE, excess = FALSE)
# S3 method for class 'data.frame'
kurtosis(x, na.rm = FALSE, excess = FALSE)
```
## Arguments
- x:
A vector of values, a [matrix](https://rdrr.io/r/base/matrix.html) or
a [data.frame](https://rdrr.io/r/base/data.frame.html).
- na.rm:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
`NA` values should be stripped before the computation proceeds.
- excess:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
the *excess kurtosis* should be returned, defined as the kurtosis
minus 3.
## See also
[`skewness()`](https://amr-for-r.org/reference/skewness.md)
## Examples
``` r
kurtosis(rnorm(10000))
#> [1] 3.071712
kurtosis(rnorm(10000), excess = TRUE)
#> [1] -0.02774835
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

163
reference/like.md Normal file
View File

@@ -0,0 +1,163 @@
# Vectorised Pattern Matching with Keyboard Shortcut
Convenient wrapper around [`grepl()`](https://rdrr.io/r/base/grep.html)
to match a pattern: `x %like% pattern`. It always returns a
[`logical`](https://rdrr.io/r/base/logical.html) vector and is always
case-insensitive (use `x %like_case% pattern` for case-sensitive
matching). Also, `pattern` can be as long as `x` to compare items of
each index in both vectors, or they both can have the same length to
iterate over all cases.
## Usage
``` r
like(x, pattern, ignore.case = TRUE)
x %like% pattern
x %unlike% pattern
x %like_case% pattern
x %unlike_case% pattern
```
## Source
Idea from the [`like` function from the `data.table`
package](https://github.com/Rdatatable/data.table/blob/ec1259af1bf13fc0c96a1d3f9e84d55d8106a9a4/R/like.R),
although altered as explained in *Details*.
## Arguments
- x:
A [character](https://rdrr.io/r/base/character.html) vector where
matches are sought, or an object which can be coerced by
[`as.character()`](https://rdrr.io/r/base/character.html) to a
[character](https://rdrr.io/r/base/character.html) vector.
- pattern:
A [character](https://rdrr.io/r/base/character.html) vector containing
regular expressions (or a
[character](https://rdrr.io/r/base/character.html) string for
`fixed = TRUE`) to be matched in the given
[character](https://rdrr.io/r/base/character.html) vector. Coerced by
[`as.character()`](https://rdrr.io/r/base/character.html) to a
[character](https://rdrr.io/r/base/character.html) string if possible.
- ignore.case:
If `FALSE`, the pattern matching is *case sensitive* and if `TRUE`,
case is ignored during matching.
## Value
A [logical](https://rdrr.io/r/base/logical.html) vector
## Details
These `like()` and `%like%`/`%unlike%` functions:
- Are case-insensitive (use `%like_case%`/`%unlike_case%` for
case-sensitive matching)
- Support multiple patterns
- Check if `pattern` is a valid regular expression and sets
`fixed = TRUE` if not, to greatly improve speed (vectorised over
`pattern`)
- Always use compatibility with Perl unless `fixed = TRUE`, to greatly
improve speed
Using RStudio? The `%like%`/`%unlike%` functions can also be directly
inserted in your code from the Addins menu and can have its own keyboard
shortcut like `Shift+Ctrl+L` or `Shift+Cmd+L` (see menu `Tools` \>
`Modify Keyboard Shortcuts...`). If you keep pressing your shortcut, the
inserted text will be iterated over `%like%` -\> `%unlike%` -\>
`%like_case%` -\> `%unlike_case%`.
## See also
[`grepl()`](https://rdrr.io/r/base/grep.html)
## Examples
``` r
# data.table has a more limited version of %like%, so unload it:
try(detach("package:data.table", unload = TRUE), silent = TRUE)
a <- "This is a test"
b <- "TEST"
a %like% b
#> [1] TRUE
b %like% a
#> [1] FALSE
# also supports multiple patterns
a <- c("Test case", "Something different", "Yet another thing")
b <- c("case", "diff", "yet")
a %like% b
#> [1] TRUE TRUE TRUE
a %unlike% b
#> [1] FALSE FALSE FALSE
a[1] %like% b
#> [1] TRUE FALSE FALSE
a %like% b[1]
#> [1] TRUE FALSE FALSE
# \donttest{
# get isolates whose name start with 'Entero' (case-insensitive)
example_isolates[which(mo_name() %like% "^entero"), ]
#> Using column 'mo' as input for `mo_name()`
#> # A tibble: 106 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-02-21 4FC193 69 M Clinic… B_ENTRC_FACM NA NA NA NA
#> 2 2002-04-08 130252 78 M ICU B_ENTRC_FCLS NA NA NA NA
#> 3 2002-06-23 798871 82 M Clinic… B_ENTRC_FCLS NA NA NA NA
#> 4 2002-06-23 798871 82 M Clinic… B_ENTRC_FCLS NA NA NA NA
#> 5 2003-04-20 6BC362 62 M ICU B_ENTRC NA NA NA NA
#> 6 2003-04-21 6BC362 62 M ICU B_ENTRC NA NA NA NA
#> 7 2003-08-13 F35553 52 M ICU B_ENTRBC_CLOC R NA NA R
#> 8 2003-08-13 F35553 52 M ICU B_ENTRC_FCLS NA NA NA NA
#> 9 2003-09-05 F35553 52 M ICU B_ENTRC NA NA NA NA
#> 10 2003-09-05 F35553 52 M ICU B_ENTRBC_CLOC R NA NA R
#> # 96 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
if (require("dplyr")) {
example_isolates %>%
filter(mo_name() %like% "^ent")
}
#> Using column 'mo' as input for `mo_name()`
#> # A tibble: 106 × 46
#> date patient age gender ward mo PEN OXA FLC AMX
#> <date> <chr> <dbl> <chr> <chr> <mo> <sir> <sir> <sir> <sir>
#> 1 2002-02-21 4FC193 69 M Clinic… B_ENTRC_FACM NA NA NA NA
#> 2 2002-04-08 130252 78 M ICU B_ENTRC_FCLS NA NA NA NA
#> 3 2002-06-23 798871 82 M Clinic… B_ENTRC_FCLS NA NA NA NA
#> 4 2002-06-23 798871 82 M Clinic… B_ENTRC_FCLS NA NA NA NA
#> 5 2003-04-20 6BC362 62 M ICU B_ENTRC NA NA NA NA
#> 6 2003-04-21 6BC362 62 M ICU B_ENTRC NA NA NA NA
#> 7 2003-08-13 F35553 52 M ICU B_ENTRBC_CLOC R NA NA R
#> 8 2003-08-13 F35553 52 M ICU B_ENTRC_FCLS NA NA NA NA
#> 9 2003-09-05 F35553 52 M ICU B_ENTRC NA NA NA NA
#> 10 2003-09-05 F35553 52 M ICU B_ENTRBC_CLOC R NA NA R
#> # 96 more rows
#> # 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>,
#> # CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>,
#> # TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>,
#> # FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>,
#> # TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>,
#> # IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

322
reference/mdro.md Normal file
View File

@@ -0,0 +1,322 @@
# Determine Multidrug-Resistant Organisms (MDRO)
Determine which isolates are multidrug-resistant organisms (MDRO)
according to international, national, or custom guidelines.
## Usage
``` r
mdro(x = NULL, guideline = "CMI 2012", col_mo = NULL, esbl = NA,
carbapenemase = NA, mecA = NA, mecC = NA, vanA = NA, vanB = NA,
info = interactive(), pct_required_classes = 0.5, combine_SI = TRUE,
verbose = FALSE, only_sir_columns = any(is.sir(x)), ...)
brmo(x = NULL, only_sir_columns = any(is.sir(x)), ...)
mrgn(x = NULL, only_sir_columns = any(is.sir(x)), verbose = FALSE, ...)
mdr_tb(x = NULL, only_sir_columns = any(is.sir(x)), verbose = FALSE, ...)
mdr_cmi2012(x = NULL, only_sir_columns = any(is.sir(x)), verbose = FALSE,
...)
eucast_exceptional_phenotypes(x = NULL, only_sir_columns = any(is.sir(x)),
verbose = FALSE, ...)
```
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) with
antimicrobials columns, like `AMX` or `amox`. Can be left blank for
automatic determination.
- guideline:
A specific guideline to follow, see sections *Supported international
/ national guidelines* and *Using Custom Guidelines* below. When left
empty, the publication by Magiorakos *et al.* (see below) will be
followed.
- col_mo:
Column name of the names or codes of the microorganisms (see
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)) - the default
is the first column of class
[`mo`](https://amr-for-r.org/reference/as.mo.md). Values will be
coerced using [`as.mo()`](https://amr-for-r.org/reference/as.mo.md).
- esbl:
[logical](https://rdrr.io/r/base/logical.html) values, or a column
name containing logical values, indicating the presence of an ESBL
gene (or production of its proteins).
- carbapenemase:
[logical](https://rdrr.io/r/base/logical.html) values, or a column
name containing logical values, indicating the presence of a
carbapenemase gene (or production of its proteins).
- mecA:
[logical](https://rdrr.io/r/base/logical.html) values, or a column
name containing logical values, indicating the presence of a *mecA*
gene (or production of its proteins).
- mecC:
[logical](https://rdrr.io/r/base/logical.html) values, or a column
name containing logical values, indicating the presence of a *mecC*
gene (or production of its proteins).
- vanA:
[logical](https://rdrr.io/r/base/logical.html) values, or a column
name containing logical values, indicating the presence of a *vanA*
gene (or production of its proteins).
- vanB:
[logical](https://rdrr.io/r/base/logical.html) values, or a column
name containing logical values, indicating the presence of a *vanB*
gene (or production of its proteins).
- info:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
progress should be printed to the console - the default is only print
while in interactive sessions.
- pct_required_classes:
Minimal required percentage of antimicrobial classes that must be
available per isolate, rounded down. For example, with the default
guideline, 17 antimicrobial classes must be available for *S. aureus*.
Setting this `pct_required_classes` argument to `0.5` (default) means
that for every *S. aureus* isolate at least 8 different classes must
be available. Any lower number of available classes will return `NA`
for that isolate.
- combine_SI:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
all values of S and I must be merged into one, so resistance is only
considered when isolates are R, not I. As this is the default
behaviour of the `mdro()` function, it follows the redefinition by
EUCAST about the interpretation of I (increased exposure) in 2019, see
section 'Interpretation of S, I and R' below. When using
`combine_SI = FALSE`, resistance is considered when isolates are R or
I.
- verbose:
A [logical](https://rdrr.io/r/base/logical.html) to turn Verbose mode
on and off (default is off). In Verbose mode, the function returns a
data set with the MDRO results in logbook form with extensive info
about which isolates would be MDRO-positive, or why they are not.
- only_sir_columns:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
only antimicrobial columns must be included that were transformed to
class [sir](https://amr-for-r.org/reference/as.sir.md) on beforehand.
Defaults to `FALSE` if no columns of `x` have a class
[sir](https://amr-for-r.org/reference/as.sir.md).
- ...:
Column names of antimicrobials. To automatically detect antimicrobial
column names, do not provide any named arguments;
[`guess_ab_col()`](https://amr-for-r.org/reference/guess_ab_col.md)
will then be used for detection. To manually specify a column, provide
its name (case-insensitive) as an argument, e.g.
`AMX = "amoxicillin"`. To skip a specific antimicrobial, set it to
`NULL`, e.g. `TIC = NULL` to exclude ticarcillin. If a manually
defined column does not exist in the data, it will be skipped with a
warning.
## Value
- If `verbose` is set to `TRUE`:
A [data.frame](https://rdrr.io/r/base/data.frame.html) containing
columns `row_number`, `microorganism`, `MDRO`, `reason`,
`all_nonsusceptible_columns`, `guideline`
- CMI 2012 paper - function `mdr_cmi2012()` or `mdro()`:
Ordered [factor](https://rdrr.io/r/base/factor.html) with levels
`Negative` \< `Multi-drug-resistant (MDR)` \<
`Extensively drug-resistant (XDR)` \< `Pandrug-resistant (PDR)`
- TB guideline - function `mdr_tb()` or `mdro(..., guideline = "TB")`:
Ordered [factor](https://rdrr.io/r/base/factor.html) with levels
`Negative` \< `Mono-resistant` \< `Poly-resistant` \<
`Multi-drug-resistant` \< `Extensively drug-resistant`
- German guideline - function `mrgn()` or
`mdro(..., guideline = "MRGN")`:
Ordered [factor](https://rdrr.io/r/base/factor.html) with levels
`Negative` \< `3MRGN` \< `4MRGN`
- Everything else, except for custom guidelines:
Ordered [factor](https://rdrr.io/r/base/factor.html) with levels
`Negative` \< `Positive, unconfirmed` \< `Positive`. The value
`"Positive, unconfirmed"` means that, according to the guideline, it
is not entirely sure if the isolate is multi-drug resistant and this
should be confirmed with additional (e.g. genotypic) tests
## Details
These functions are context-aware. This means that the `x` argument can
be left blank if used inside a
[data.frame](https://rdrr.io/r/base/data.frame.html) call, see
*Examples*.
For the `pct_required_classes` argument, values above 1 will be divided
by 100. This is to support both fractions (`0.75` or `3/4`) and
percentages (`75`).
**Note:** Every test that involves the Enterobacteriaceae family, will
internally be performed using its newly named *order* Enterobacterales,
since the Enterobacteriaceae family has been taxonomically reclassified
by Adeolu *et al.* in 2016. Before that, Enterobacteriaceae was the only
family under the Enterobacteriales (with an i) order. All species under
the old Enterobacteriaceae family are still under the new
Enterobacterales (without an i) order, but divided into multiple
families. The way tests are performed now by this `mdro()` function
makes sure that results from before 2016 and after 2016 are identical.
### Supported International / National Guidelines
Please suggest to implement guidelines by [letting us
know](https://github.com/msberends/AMR/issues/new?template=2-feature-request.yml&title=Add%20new%20MDRO%20guideline).
Currently supported guidelines are (case-insensitive):
- `guideline = "CMI 2012"` (default)
Magiorakos AP, Srinivasan A *et al.* "Multidrug-resistant, extensively
drug-resistant and pandrug-resistant bacteria: an international expert
proposal for interim standard definitions for acquired resistance."
Clinical Microbiology and Infection (2012)
([doi:10.1111/j.1469-0691.2011.03570.x](https://doi.org/10.1111/j.1469-0691.2011.03570.x)
)
- `guideline = "EUCAST 3.3"` (or simply `guideline = "EUCAST"`)
The European international guideline - EUCAST Expert Rules Version 3.3
"Intrinsic Resistance and Unusual Phenotypes"
([link](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/2021/Intrinsic_Resistance_and_Unusual_Phenotypes_Tables_v3.3_20211018.pdf))
Also:
- `guideline = "EUCAST 3.2"`
The former European international guideline - EUCAST Expert Rules
Version 3.2 "Intrinsic Resistance and Unusual Phenotypes"
([link](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/2020/Intrinsic_Resistance_and_Unusual_Phenotypes_Tables_v3.2_20200225.pdf))
- `guideline = "EUCAST 3.1"`
The former European international guideline - EUCAST Expert Rules
Version 3.1 "Intrinsic Resistance and Exceptional Phenotypes Tables"
([link](https://www.eucast.org/fileadmin/src/media/PDFs/EUCAST_files/Expert_Rules/Expert_rules_intrinsic_exceptional_V3.1.pdf))
- `guideline = "TB"`
The international guideline for multi-drug resistant tuberculosis -
World Health Organization "Companion handbook to the WHO guidelines
for the programmatic management of drug-resistant tuberculosis"
([link](https://www.who.int/publications/i/item/9789241548809))
- `guideline = "MRGN"`
The German national guideline - Mueller et al. (2015) Antimicrobial
Resistance and Infection Control 4:7;
[doi:10.1186/s13756-015-0047-6](https://doi.org/10.1186/s13756-015-0047-6)
- `guideline = "BRMO 2024"` (or simply `guideline = "BRMO"`)
The Dutch national guideline - Samenwerkingverband Richtlijnen
Infectiepreventie (SRI) (2024) "Bijzonder Resistente Micro-Organismen
(BRMO)" ([link](https://www.sri-richtlijnen.nl/brmo))
Also:
- `guideline = "BRMO 2017"`
The former Dutch national guideline - Werkgroep Infectiepreventie
(WIP), RIVM, last revision as of 2017: "Bijzonder Resistente
Micro-Organismen (BRMO)"
### Using Custom Guidelines
Using a custom MDRO guideline is of importance if you have custom rules
to determine MDROs in your hospital, e.g., rules that are dependent on
ward, state of contact isolation or other variables in your data.
Custom guidelines can be set with the
[`custom_mdro_guideline()`](https://amr-for-r.org/reference/custom_mdro_guideline.md)
function.
## Interpretation of SIR
In 2019, the European Committee on Antimicrobial Susceptibility Testing
(EUCAST) has decided to change the definitions of susceptibility testing
categories S, I, and R (<https://www.eucast.org/newsiandr>).
This AMR package follows insight; use
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
(equal to
[`proportion_SI()`](https://amr-for-r.org/reference/proportion.md)) to
determine antimicrobial susceptibility and
[`count_susceptible()`](https://amr-for-r.org/reference/count.md) (equal
to [`count_SI()`](https://amr-for-r.org/reference/count.md)) to count
susceptible isolates.
## See also
[`custom_mdro_guideline()`](https://amr-for-r.org/reference/custom_mdro_guideline.md)
## Examples
``` r
out <- mdro(example_isolates)
#> Warning: in `mdro()`: NA introduced for isolates where the available percentage of
#> antimicrobial classes was below 50% (set with `pct_required_classes`)
str(out)
#> Ord.factor w/ 4 levels "Negative"<"Multi-drug-resistant (MDR)"<..: NA NA 1 1 1 1 NA NA 1 1 ...
table(out)
#> out
#> Negative Multi-drug-resistant (MDR)
#> 1617 128
#> Extensively drug-resistant (XDR) Pandrug-resistant (PDR)
#> 0 0
out <- mdro(example_isolates, guideline = "EUCAST 3.3")
table(out)
#> out
#> Negative Positive, unconfirmed Positive
#> 1994 0 6
# \donttest{
if (require("dplyr")) {
# no need to define `x` when used inside dplyr verbs:
example_isolates %>%
mutate(MDRO = mdro()) %>%
count(MDRO)
}
#> Warning: There was 1 warning in `mutate()`.
#> In argument: `MDRO = mdro()`.
#> Caused by warning:
#> ! in `mdro()`: NA introduced for isolates where the available percentage of
#> antimicrobial classes was below 50% (set with `pct_required_classes`)
#> # A tibble: 3 × 2
#> MDRO n
#> <ord> <int>
#> 1 Negative 1617
#> 2 Multi-drug-resistant (MDR) 128
#> 3 NA 255
# }
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,201 @@
# Calculate the Mean AMR Distance
Calculates a normalised mean for antimicrobial resistance between
multiple observations, to help to identify similar isolates without
comparing antibiograms by hand.
## Usage
``` r
mean_amr_distance(x, ...)
# S3 method for class 'sir'
mean_amr_distance(x, ..., combine_SI = TRUE)
# S3 method for class 'data.frame'
mean_amr_distance(x, ..., combine_SI = TRUE)
amr_distance_from_row(amr_distance, row)
```
## Arguments
- x:
A vector of class [sir](https://amr-for-r.org/reference/as.sir.md),
[mic](https://amr-for-r.org/reference/as.mic.md) or
[disk](https://amr-for-r.org/reference/as.disk.md), or a
[data.frame](https://rdrr.io/r/base/data.frame.html) containing
columns of any of these classes.
- ...:
Variables to select. Supports [tidyselect
language](https://tidyselect.r-lib.org/reference/starts_with.html)
such as `where(is.mic)`, `starts_with(...)`, or `column1:column4`, and
can thus also be [antimicrobial
selectors](https://amr-for-r.org/reference/antimicrobial_selectors.md).
- combine_SI:
A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
all values of S, SDD, and I must be merged into one, so the input only
consists of S+I vs. R (susceptible vs. resistant) - the default is
`TRUE`.
- amr_distance:
The outcome of `mean_amr_distance()`.
- row:
An index, such as a row number.
## Details
The mean AMR distance is effectively [the
Z-score](https://en.wikipedia.org/wiki/Standard_score); a normalised
numeric value to compare AMR test results which can help to identify
similar isolates, without comparing antibiograms by hand.
MIC values (see [`as.mic()`](https://amr-for-r.org/reference/as.mic.md))
are transformed with [`log2()`](https://rdrr.io/r/base/Log.html) first;
their distance is thus calculated as
`(log2(x) - mean(log2(x))) / sd(log2(x))`.
SIR values (see [`as.sir()`](https://amr-for-r.org/reference/as.sir.md))
are transformed using `"S"` = 1, `"I"` = 2, and `"R"` = 3. If
`combine_SI` is `TRUE` (default), the `"I"` will be considered to be 1.
For data sets, the mean AMR distance will be calculated per column,
after which the mean per row will be returned, see *Examples*.
Use `amr_distance_from_row()` to subtract distances from the distance of
one row, see *Examples*.
## Interpretation
Isolates with distances less than 0.01 difference from each other should
be considered similar. Differences lower than 0.025 should be considered
suspicious.
## Examples
``` r
sir <- random_sir(10)
sir
#> Class 'sir'
#> [1] I I R I R S S S I S
mean_amr_distance(sir)
#> [1] -0.4743416 -0.4743416 1.8973666 -0.4743416 1.8973666 -0.4743416
#> [7] -0.4743416 -0.4743416 -0.4743416 -0.4743416
mic <- random_mic(10)
mic
#> Class 'mic'
#> [1] 0.004 2 0.002 0.0001 0.004 0.002 >=4 0.0002 0.032 0.004
mean_amr_distance(mic)
#> [1] -0.2047915 1.5799751 -0.4038557 -1.2641969 -0.2047915 -0.4038557
#> [7] 1.7790393 -1.0651327 0.3924011 -0.2047915
# equal to the Z-score of their log2:
(log2(mic) - mean(log2(mic))) / sd(log2(mic))
#> [1] -0.2047915 1.5799751 -0.4038557 -1.2641969 -0.2047915 -0.4038557
#> [7] 1.7790393 -1.0651327 0.3924011 -0.2047915
disk <- random_disk(10)
disk
#> Class 'disk'
#> [1] 43 12 28 32 22 31 35 25 43 35
mean_amr_distance(disk)
#> [1] 1.30998909 -1.96498364 -0.27467513 0.14790199 -0.90854082 0.04225771
#> [7] 0.46483484 -0.59160798 1.30998909 0.46483484
y <- data.frame(
id = LETTERS[1:10],
amox = random_sir(10, ab = "amox", mo = "Escherichia coli"),
cipr = random_disk(10, ab = "cipr", mo = "Escherichia coli"),
gent = random_mic(10, ab = "gent", mo = "Escherichia coli"),
tobr = random_mic(10, ab = "tobr", mo = "Escherichia coli")
)
y
#> id amox cipr gent tobr
#> 1 A S 31 2 >=16
#> 2 B S 27 <=1 8
#> 3 C R 25 2 4
#> 4 D R 25 <=1 2
#> 5 E I 31 <=1 2
#> 6 F S 32 <=1 8
#> 7 G I 29 2 2
#> 8 H S 18 <=1 4
#> 9 I S 28 <=1 4
#> 10 J R 17 <=1 2
mean_amr_distance(y)
#> Calculating mean AMR distance based on columns "amox", "cipr", "gent",
#> and "tobr"
#> [1] 0.90606144 -0.03989270 0.66241774 -0.09230226 -0.32300020 0.19914999
#> [7] 0.09893189 -0.70734036 -0.22925499 -0.47477055
y$amr_distance <- mean_amr_distance(y, is.mic(y))
#> Calculating mean AMR distance based on columns "gent" and "tobr"
y[order(y$amr_distance), ]
#> id amox cipr gent tobr amr_distance
#> 4 D R 25 <=1 2 -0.7848712
#> 5 E I 31 <=1 2 -0.7848712
#> 10 J R 17 <=1 2 -0.7848712
#> 8 H S 18 <=1 4 -0.3105295
#> 9 I S 28 <=1 4 -0.3105295
#> 2 B S 27 <=1 8 0.1638121
#> 6 F S 32 <=1 8 0.1638121
#> 7 G I 29 2 2 0.2502272
#> 3 C R 25 2 4 0.7245688
#> 1 A S 31 2 >=16 1.6732521
if (require("dplyr")) {
y %>%
mutate(
amr_distance = mean_amr_distance(y),
check_id_C = amr_distance_from_row(amr_distance, id == "C")
) %>%
arrange(check_id_C)
}
#> Calculating mean AMR distance based on columns "amox", "cipr", "gent",
#> and "tobr"
#> id amox cipr gent tobr amr_distance check_id_C
#> 1 C R 25 2 4 0.66241774 0.0000000
#> 2 A S 31 2 >=16 0.90606144 0.2436437
#> 3 F S 32 <=1 8 0.19914999 0.4632678
#> 4 G I 29 2 2 0.09893189 0.5634858
#> 5 B S 27 <=1 8 -0.03989270 0.7023104
#> 6 D R 25 <=1 2 -0.09230226 0.7547200
#> 7 I S 28 <=1 4 -0.22925499 0.8916727
#> 8 E I 31 <=1 2 -0.32300020 0.9854179
#> 9 J R 17 <=1 2 -0.47477055 1.1371883
#> 10 H S 18 <=1 4 -0.70734036 1.3697581
if (require("dplyr")) {
# support for groups
example_isolates %>%
filter(mo_genus() == "Enterococcus" & mo_species() != "") %>%
select(mo, TCY, carbapenems()) %>%
group_by(mo) %>%
mutate(dist = mean_amr_distance(.)) %>%
arrange(mo, dist)
}
#> Using column 'mo' as input for `mo_genus()`
#> Using column 'mo' as input for `mo_species()`
#> For `carbapenems()` using columns 'IPM' (imipenem) and 'MEM' (meropenem)
#> Calculating mean AMR distance based on columns "TCY", "IPM", and "MEM"
#> # A tibble: 63 × 5
#> # Groups: mo [4]
#> mo TCY IPM MEM dist
#> <mo> <sir> <sir> <sir> <dbl>
#> 1 B_ENTRC_AVIM S S NA 0
#> 2 B_ENTRC_AVIM S S NA 0
#> 3 B_ENTRC_CSSL NA S NA NA
#> 4 B_ENTRC_FACM S S NA -2.66
#> 5 B_ENTRC_FACM S R R -0.423
#> 6 B_ENTRC_FACM S R R -0.423
#> 7 B_ENTRC_FACM NA R R 0.224
#> 8 B_ENTRC_FACM NA R R 0.224
#> 9 B_ENTRC_FACM NA R R 0.224
#> 10 B_ENTRC_FACM NA R R 0.224
#> # 53 more rows
```

View File

@@ -7,7 +7,7 @@
<a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9002</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9003</small>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">

View File

@@ -0,0 +1,154 @@
# Data Set with 6 036 Common Microorganism Codes
A data set containing commonly used codes for microorganisms, from
laboratory systems and [WHONET](https://whonet.org). Define your own
with [`set_mo_source()`](https://amr-for-r.org/reference/mo_source.md).
They will all be searched when using
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md) and consequently
all the [`mo_*`](https://amr-for-r.org/reference/mo_property.md)
functions.
## Usage
``` r
microorganisms.codes
```
## Format
A [tibble](https://tibble.tidyverse.org/reference/tibble.html) with 6
036 observations and 2 variables:
- `code`
Commonly used code of a microorganism. ***This is a unique
identifier.***
- `mo`
ID of the microorganism in the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set
## Download Our Reference Data
All reference data sets in the AMR package - including information on
microorganisms, antimicrobials, and clinical breakpoints - are freely
available for download in multiple formats: R, MS Excel, Apache Feather,
Apache Parquet, SPSS, and Stata.
For maximum compatibility, we also provide machine-readable,
tab-separated plain text files suitable for use in any software,
including laboratory information systems.
Visit [our website for direct download
links](https://amr-for-r.org/articles/datasets.html), or explore the
actual files in [our GitHub
repository](https://github.com/msberends/AMR/tree/main/data-raw/datasets).
## See also
[`as.mo()`](https://amr-for-r.org/reference/as.mo.md)
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
## Examples
``` r
microorganisms.codes
#> # A tibble: 6,036 × 2
#> code mo
#> <chr> <mo>
#> 1 1011 B_GRAMP
#> 2 1012 B_GRAMP
#> 3 1013 B_GRAMN
#> 4 1014 B_GRAMN
#> 5 1015 F_YEAST
#> 6 103 B_ESCHR_COLI
#> 7 104 B_SLMNL_ENTR_ENTR
#> 8 1100 B_STRPT
#> 9 1101 B_STRPT_VIRI
#> 10 1102 B_STRPT_HAEM
#> # 6,026 more rows
# 'ECO' or 'eco' is the WHONET code for E. coli:
microorganisms.codes[microorganisms.codes$code == "ECO", ]
#> # A tibble: 1 × 2
#> code mo
#> <chr> <mo>
#> 1 ECO B_ESCHR_COLI
# and therefore, 'eco' will be understood as E. coli in this package:
mo_info("eco")
#> $mo
#> [1] "B_ESCHR_COLI"
#>
#> $rank
#> [1] "species"
#>
#> $kingdom
#> [1] "Bacteria"
#>
#> $phylum
#> [1] "Pseudomonadota"
#>
#> $class
#> [1] "Gammaproteobacteria"
#>
#> $order
#> [1] "Enterobacterales"
#>
#> $family
#> [1] "Enterobacteriaceae"
#>
#> $genus
#> [1] "Escherichia"
#>
#> $species
#> [1] "coli"
#>
#> $subspecies
#> [1] ""
#>
#> $status
#> [1] "accepted"
#>
#> $synonyms
#> NULL
#>
#> $gramstain
#> [1] "Gram-negative"
#>
#> $oxygen_tolerance
#> [1] "facultative anaerobe"
#>
#> $url
#> [1] "https://lpsn.dsmz.de/species/escherichia-coli"
#>
#> $ref
#> [1] "Castellani et al., 1919"
#>
#> $snomed
#> [1] "1095001000112106" "715307006" "737528008" "416989002"
#> [5] "116397003" "414097009" "414098004" "414099007"
#> [9] "414100004" "116395006" "735270003" "116396007"
#> [13] "83285000" "116394005" "112283007" "710886005"
#> [17] "710887001" "710888006" "710889003" "414132004"
#> [21] "721892009" "416812001" "416740004" "417216001"
#> [25] "457541006" "710253004" "416530004" "417189006"
#> [29] "409800005" "713925008" "444771000124108" "838549008"
#>
#> $lpsn
#> [1] "776057"
#>
#> $mycobank
#> [1] NA
#>
#> $gbif
#> [1] "11286021"
#>
#> $group_members
#> character(0)
#>
# works for all AMR functions:
mo_is_intrinsic_resistant("eco", ab = "vancomycin")
#> [1] TRUE
```

Some files were not shown because too many files have changed in this diff Show More