With the function mdro()
, you can determine which
-micro-organisms are multi-drug resistant organisms (MDRO).
Type of input -
-The mdro()
function takes a data set as input, such as a
-regular data.frame
. It tries to automatically determine the
-right columns for info about your isolates, such as the name of the
-species and all columns with results of antimicrobial agents. See the
-help page for more info about how to set the right settings for your
-data with the command ?mdro
.
For WHONET data (and most other data), all settings are automatically -set correctly.
-Guidelines -
-The mdro()
function support multiple guidelines. You can
-select a guideline with the guideline
parameter. Currently
-supported guidelines are (case-insensitive):
-
-
-
-
-guideline = "CMI2012"
(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) (link)
-
- -
-
-guideline = "EUCAST3.2"
(or simply -guideline = "EUCAST"
)The European international guideline - EUCAST Expert Rules Version -3.2 “Intrinsic Resistance and Unusual Phenotypes” (link)
-
- -
-
-guideline = "EUCAST3.1"
The European international guideline - EUCAST Expert Rules Version -3.1 “Intrinsic Resistance and Exceptional Phenotypes Tables” (link)
-
- -
-
-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)
-
- -
-
-guideline = "MRGN"
The German national guideline - Mueller et al. (2015) -Antimicrobial Resistance and Infection Control 4:7. DOI: -10.1186/s13756-015-0047-6
-
- -
-
-guideline = "BRMO"
The Dutch national guideline - Rijksinstituut voor Volksgezondheid en -Milieu “WIP-richtlijn BRMO (Bijzonder Resistente Micro-Organismen) -(ZKH)” (link)
-
-
Please suggest your own (country-specific) guidelines by letting us -know: https://github.com/msberends/AMR/issues/new.
-Custom Guidelines -
-You can also use your own custom guideline. Custom guidelines can be
-set with the custom_mdro_guideline()
function. This is of
-great 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.
If you are familiar with case_when()
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’:
-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
-maximum 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()
function:
-x <- mdro(example_isolates, guideline = custom)
-table(x)
-#> x
-#> Negative Elderly Type A Elderly Type B
-#> 1070 198 732
The rules set (the custom
object in this case) could be
-exported to a shared file location using saveRDS()
if you
-collaborate with multiple users. The custom rules set could then be
-imported using readRDS()
.
Examples -
-The mdro()
function always returns an ordered
-factor
for predefined guidelines. For example, the output
-of the default guideline by Magiorakos et al. returns a
-factor
with levels ‘Negative’, ‘MDR’, ‘XDR’ or ‘PDR’ in
-that order.
The next example uses the example_isolates
data set.
-This is a data set included with this package and contains full
-antibiograms of 2,000 microbial isolates. It reflects reality and can be
-used to practise AMR data analysis. If we test the MDR/XDR/PDR guideline
-on this data set, we get:
-example_isolates %>%
- mdro() %>%
- freq() # show frequency table of the result
-#> Warning: in mdro(): NA introduced for isolates where the available percentage of
-#> antimicrobial classes was below 50% (set with pct_required_classes)
Frequency table
-Class: factor > ordered (numeric)
-Length: 2,000
-Levels: 4: Negative < Multi-drug-resistant (MDR) < Extensively
-drug-resistant …
-Available: 1,745 (87.25%, NA: 255 = 12.75%)
-Unique: 2
- | Item | -Count | -Percent | -Cum. Count | -Cum. Percent | -
---|---|---|---|---|---|
1 | -Negative | -1617 | -92.66% | -1617 | -92.66% | -
2 | -Multi-drug-resistant (MDR) | -128 | -7.34% | -1745 | -100.00% | -
For another example, I will create a data set to determine multi-drug -resistant TB:
-
-# random_sir() is a helper function to generate
-# a random vector with values S, I and R
-my_TB_data <- data.frame(
- rifampicin = random_sir(5000),
- isoniazid = random_sir(5000),
- gatifloxacin = random_sir(5000),
- ethambutol = random_sir(5000),
- pyrazinamide = random_sir(5000),
- moxifloxacin = random_sir(5000),
- kanamycin = random_sir(5000)
-)
Because all column names are automatically verified for valid drug -names or codes, this would have worked exactly the same way:
-
-my_TB_data <- data.frame(
- RIF = random_sir(5000),
- INH = random_sir(5000),
- GAT = random_sir(5000),
- ETH = random_sir(5000),
- PZA = random_sir(5000),
- MFX = random_sir(5000),
- KAN = random_sir(5000)
-)
The data set now looks like this:
-
-head(my_TB_data)
-#> rifampicin isoniazid gatifloxacin ethambutol pyrazinamide moxifloxacin
-#> 1 I R S S S S
-#> 2 S S I R R S
-#> 3 R I I I R I
-#> 4 I S S S S S
-#> 5 I I I S I S
-#> 6 R S R S I I
-#> kanamycin
-#> 1 R
-#> 2 I
-#> 3 S
-#> 4 I
-#> 5 I
-#> 6 I
We can now add the interpretation of MDR-TB to our data set. You can -use:
-
-mdro(my_TB_data, guideline = "TB")
or its shortcut mdr_tb()
:
-my_TB_data$mdr <- mdr_tb(my_TB_data)
-#> ℹ No column found as input for col_mo, assuming all rows contain
-#> Mycobacterium tuberculosis.
Create a frequency table of the results:
-
-freq(my_TB_data$mdr)
Frequency table
-Class: factor > ordered (numeric)
-Length: 5,000
-Levels: 5: Negative < Mono-resistant < Poly-resistant <
-Multi-drug-resistant <…
-Available: 5,000 (100%, NA: 0 = 0%)
-Unique: 5
- | Item | -Count | -Percent | -Cum. Count | -Cum. Percent | -
---|---|---|---|---|---|
1 | -Mono-resistant | -3223 | -64.46% | -3223 | -64.46% | -
2 | -Negative | -967 | -19.34% | -4190 | -83.80% | -
3 | -Multi-drug-resistant | -454 | -9.08% | -4644 | -92.88% | -
4 | -Poly-resistant | -245 | -4.90% | -4889 | -97.78% | -
5 | -Extensively drug-resistant | -111 | -2.22% | -5000 | -100.00% | -