1
0
mirror of https://github.com/msberends/AMR.git synced 2025-12-16 06:30:21 +01: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

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)
# }
```