mirror of
				https://github.com/msberends/AMR.git
				synced 2025-11-04 10:25:28 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			652 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			R
		
	
	
	
	
	
			
		
		
	
	
			652 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			R
		
	
	
	
	
	
# ==================================================================== #
 | 
						|
# TITLE:                                                               #
 | 
						|
# AMR: An R Package for Working with Antimicrobial Resistance Data     #
 | 
						|
#                                                                      #
 | 
						|
# SOURCE CODE:                                                         #
 | 
						|
# https://github.com/msberends/AMR                                     #
 | 
						|
#                                                                      #
 | 
						|
# PLEASE CITE THIS SOFTWARE AS:                                        #
 | 
						|
# Berends MS, Luz CF, Friedrich AW, et al. (2022).                     #
 | 
						|
# AMR: An R Package for Working with Antimicrobial Resistance Data.    #
 | 
						|
# Journal of Statistical Software, 104(3), 1-31.                       #
 | 
						|
# https://doi.org/10.18637/jss.v104.i03                                #
 | 
						|
#                                                                      #
 | 
						|
# Developed at the University of Groningen and the University Medical  #
 | 
						|
# Center Groningen in The Netherlands, in collaboration with many      #
 | 
						|
# colleagues from around the world, see our website.                   #
 | 
						|
#                                                                      #
 | 
						|
# This R package is free software; you can freely use and distribute   #
 | 
						|
# it for both personal and commercial purposes under the terms of the  #
 | 
						|
# GNU General Public License version 2.0 (GNU GPL-2), as published by  #
 | 
						|
# the Free Software Foundation.                                        #
 | 
						|
# We created this package for both routine data analysis and academic  #
 | 
						|
# research and it was publicly released in the hope that it will be    #
 | 
						|
# useful, but it comes WITHOUT ANY WARRANTY OR LIABILITY.              #
 | 
						|
#                                                                      #
 | 
						|
# Visit our website for the full manual and a complete tutorial about  #
 | 
						|
# how to conduct AMR data analysis: https://msberends.github.io/AMR/   #
 | 
						|
# ==================================================================== #
 | 
						|
 | 
						|
# Run this file to update the package using:
 | 
						|
# source("data-raw/_pre_commit_checks.R")
 | 
						|
 | 
						|
library(dplyr, warn.conflicts = FALSE)
 | 
						|
try(detach("package:data.table", unload = TRUE), silent = TRUE) # to prevent like() to precede over AMR::like
 | 
						|
devtools::load_all(quiet = TRUE)
 | 
						|
 | 
						|
suppressMessages(set_AMR_locale("English"))
 | 
						|
 | 
						|
pre_commit_lst <- list()
 | 
						|
 | 
						|
# Save internal data to R/sysdata.rda -------------------------------------
 | 
						|
 | 
						|
usethis::ui_info(paste0("Updating internal package data"))
 | 
						|
 | 
						|
# See 'data-raw/eucast_rules.tsv' for the EUCAST reference file
 | 
						|
pre_commit_lst$EUCAST_RULES_DF <- utils::read.delim(
 | 
						|
  file = "data-raw/eucast_rules.tsv",
 | 
						|
  skip = 9,
 | 
						|
  sep = "\t",
 | 
						|
  stringsAsFactors = FALSE,
 | 
						|
  header = TRUE,
 | 
						|
  strip.white = TRUE,
 | 
						|
  na = c(NA, "", NULL)
 | 
						|
) %>%
 | 
						|
  # take the order of the reference.rule_group column in the original data file
 | 
						|
  mutate(
 | 
						|
    reference.rule_group = factor(reference.rule_group,
 | 
						|
      levels = unique(reference.rule_group),
 | 
						|
      ordered = TRUE
 | 
						|
    ),
 | 
						|
    sorting_rule = ifelse(grepl("^Table", reference.rule, ignore.case = TRUE), 1, 2)
 | 
						|
  ) %>%
 | 
						|
  arrange(
 | 
						|
    reference.rule_group,
 | 
						|
    reference.version,
 | 
						|
    sorting_rule,
 | 
						|
    reference.rule
 | 
						|
  ) %>%
 | 
						|
  mutate(reference.rule_group = as.character(reference.rule_group)) %>%
 | 
						|
  select(-sorting_rule)
 | 
						|
 | 
						|
pre_commit_lst$TRANSLATIONS <- utils::read.delim(
 | 
						|
  file = "data-raw/translations.tsv",
 | 
						|
  sep = "\t",
 | 
						|
  stringsAsFactors = FALSE,
 | 
						|
  header = TRUE,
 | 
						|
  blank.lines.skip = TRUE,
 | 
						|
  fill = TRUE,
 | 
						|
  strip.white = TRUE,
 | 
						|
  encoding = "UTF-8",
 | 
						|
  fileEncoding = "UTF-8",
 | 
						|
  na.strings = c(NA, "", NULL),
 | 
						|
  allowEscapes = TRUE, # else "\\1" will be imported as "\\\\1"
 | 
						|
  quote = ""
 | 
						|
)
 | 
						|
 | 
						|
pre_commit_lst$LANGUAGES_SUPPORTED_NAMES <- c(
 | 
						|
  list(en = list(exonym = "English", endonym = "English")),
 | 
						|
  lapply(
 | 
						|
    TRANSLATIONS[, which(nchar(colnames(pre_commit_lst$TRANSLATIONS)) == 2), drop = FALSE],
 | 
						|
    function(x) list(exonym = x[1], endonym = x[2])
 | 
						|
  )
 | 
						|
)
 | 
						|
 | 
						|
pre_commit_lst$LANGUAGES_SUPPORTED <- names(pre_commit_lst$LANGUAGES_SUPPORTED_NAMES)
 | 
						|
 | 
						|
# vectors of CoNS and CoPS, improves speed in as.mo()
 | 
						|
create_species_cons_cops <- function(type = c("CoNS", "CoPS")) {
 | 
						|
  # Determination of which staphylococcal species are CoNS/CoPS according to:
 | 
						|
  # - Becker et al. 2014, PMID 25278577
 | 
						|
  # - Becker et al. 2019, PMID 30872103
 | 
						|
  # - Becker et al. 2020, PMID 32056452
 | 
						|
  # this function returns class <mo>
 | 
						|
  MO_staph <- AMR::microorganisms
 | 
						|
  MO_staph <- MO_staph[which(MO_staph$genus == "Staphylococcus"), , drop = FALSE]
 | 
						|
  if (type == "CoNS") {
 | 
						|
    MO_staph[
 | 
						|
      which(MO_staph$species %in% c(
 | 
						|
        "coagulase-negative", "argensis", "arlettae",
 | 
						|
        "auricularis", "borealis", "caeli", "capitis", "caprae",
 | 
						|
        "carnosus", "casei", "caseolyticus", "chromogenes", "cohnii", "condimenti",
 | 
						|
        "croceilyticus",
 | 
						|
        "debuckii", "devriesei", "edaphicus", "epidermidis",
 | 
						|
        "equorum", "felis", "fleurettii", "gallinarum",
 | 
						|
        "haemolyticus", "hominis", "jettensis", "kloosii",
 | 
						|
        "lentus", "lugdunensis", "massiliensis", "microti",
 | 
						|
        "muscae", "nepalensis", "pasteuri", "petrasii",
 | 
						|
        "pettenkoferi", "piscifermentans", "pragensis", "pseudoxylosus",
 | 
						|
        "pulvereri", "rostri", "saccharolyticus", "saprophyticus",
 | 
						|
        "sciuri", "simulans", "stepanovicii", "succinus",
 | 
						|
        "ureilyticus",
 | 
						|
        "vitulinus", "vitulus", "warneri", "xylosus",
 | 
						|
        "caledonicus", "canis",
 | 
						|
        "durrellii", "lloydii",
 | 
						|
        "ratti", "taiwanensis", "veratri", "urealyticus",
 | 
						|
        "americanisciuri", "marylandisciuri", "shinii", "brunensis"
 | 
						|
      ) |
 | 
						|
        # old, now renamed to S. schleiferi (but still as synonym in our data of course):
 | 
						|
        (MO_staph$species == "schleiferi" & MO_staph$subspecies %in% c("schleiferi", ""))),
 | 
						|
      "mo",
 | 
						|
      drop = TRUE
 | 
						|
    ]
 | 
						|
  } else if (type == "CoPS") {
 | 
						|
    MO_staph[
 | 
						|
      which(MO_staph$species %in% c(
 | 
						|
        "coagulase-positive", "coagulans",
 | 
						|
        "agnetis", "argenteus",
 | 
						|
        "cornubiensis",
 | 
						|
        "delphini", "lutrae",
 | 
						|
        "hyicus", "intermedius",
 | 
						|
        "pseudintermedius", "pseudointermedius",
 | 
						|
        "schweitzeri", "simiae",
 | 
						|
        "roterodami",
 | 
						|
        "singaporensis"
 | 
						|
      ) |
 | 
						|
        # old, now renamed to S. coagulans (but still as synonym in our data of course):
 | 
						|
        (MO_staph$species == "schleiferi" & MO_staph$subspecies == "coagulans")),
 | 
						|
      "mo",
 | 
						|
      drop = TRUE
 | 
						|
    ]
 | 
						|
  }
 | 
						|
}
 | 
						|
pre_commit_lst$MO_CONS <- create_species_cons_cops("CoNS")
 | 
						|
pre_commit_lst$MO_COPS <- create_species_cons_cops("CoPS")
 | 
						|
pre_commit_lst$MO_STREP_ABCG <- AMR::microorganisms$mo[which(AMR::microorganisms$genus == "Streptococcus" &
 | 
						|
  tolower(AMR::microorganisms$species) %in% c(
 | 
						|
    "pyogenes", "agalactiae", "dysgalactiae", "equi", "canis",
 | 
						|
    "group a", "group b", "group c", "group g"
 | 
						|
  ))]
 | 
						|
pre_commit_lst$MO_LANCEFIELD <- AMR::microorganisms$mo[which(AMR::microorganisms$mo %like% "^(B_STRPT_PYGN(_|$)|B_STRPT_AGLC(_|$)|B_STRPT_(DYSG|EQUI)(_|$)|B_STRPT_ANGN(_|$)|B_STRPT_(DYSG|CANS)(_|$)|B_STRPT_SNGN(_|$)|B_STRPT_SLVR(_|$))")]
 | 
						|
pre_commit_lst$MO_WHO_PRIORITY_GENERA <- c(
 | 
						|
  # World Health Organization's (WHO) Priority Pathogen List (some are from the group Enterobacteriaceae)
 | 
						|
  "Acinetobacter",
 | 
						|
  "Aspergillus",
 | 
						|
  "Blastomyces",
 | 
						|
  "Campylobacter",
 | 
						|
  "Candida",
 | 
						|
  "Citrobacter",
 | 
						|
  "Clostridioides",
 | 
						|
  "Coccidioides",
 | 
						|
  "Cryptococcus",
 | 
						|
  "Edwardsiella",
 | 
						|
  "Enterobacter",
 | 
						|
  "Enterococcus",
 | 
						|
  "Escherichia",
 | 
						|
  "Fusarium",
 | 
						|
  "Haemophilus",
 | 
						|
  "Helicobacter",
 | 
						|
  "Histoplasma",
 | 
						|
  "Klebsiella",
 | 
						|
  "Morganella",
 | 
						|
  "Mycobacterium",
 | 
						|
  "Neisseria",
 | 
						|
  "Paracoccidioides",
 | 
						|
  "Pneumocystis",
 | 
						|
  "Proteus",
 | 
						|
  "Providencia",
 | 
						|
  "Pseudomonas",
 | 
						|
  "Salmonella",
 | 
						|
  "Serratia",
 | 
						|
  "Shigella",
 | 
						|
  "Staphylococcus",
 | 
						|
  "Streptococcus",
 | 
						|
  "Yersinia"
 | 
						|
)
 | 
						|
pre_commit_lst$MO_RELEVANT_GENERA <- c(
 | 
						|
  "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",
 | 
						|
  "Zygosaccharomyces"
 | 
						|
)
 | 
						|
 | 
						|
# antibiotic groups
 | 
						|
# (these will also be used for eucast_rules() and understanding data-raw/eucast_rules.tsv)
 | 
						|
pre_commit_lst$AB_AMINOGLYCOSIDES <- antibiotics %>%
 | 
						|
  filter(group %like% "aminoglycoside") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_AMINOPENICILLINS <- as.ab(c("AMP", "AMX"))
 | 
						|
pre_commit_lst$AB_ANTIFUNGALS <- antibiotics %>%
 | 
						|
  filter(group %like% "antifungal") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_ANTIMYCOBACTERIALS <- antibiotics %>%
 | 
						|
  filter(group %like% "antimycobacterial") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CARBAPENEMS <- antibiotics %>%
 | 
						|
  filter(group %like% "carbapenem") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS <- antibiotics %>%
 | 
						|
  filter(group %like% "cephalosporin") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS_1ST <- antibiotics %>%
 | 
						|
  filter(group %like% "cephalosporin.*1") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS_2ND <- antibiotics %>%
 | 
						|
  filter(group %like% "cephalosporin.*2") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS_3RD <- antibiotics %>%
 | 
						|
  filter(group %like% "cephalosporin.*3") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS_4TH <- antibiotics %>%
 | 
						|
  filter(group %like% "cephalosporin.*4") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS_5TH <- antibiotics %>%
 | 
						|
  filter(group %like% "cephalosporin.*5") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_CEPHALOSPORINS_EXCEPT_CAZ <- pre_commit_lst$AB_CEPHALOSPORINS[pre_commit_lst$AB_CEPHALOSPORINS != "CAZ"]
 | 
						|
pre_commit_lst$AB_FLUOROQUINOLONES <- antibiotics %>%
 | 
						|
  filter(atc_group2 %like% "fluoroquinolone" | (group %like% "quinolone" & is.na(atc_group2))) %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_GLYCOPEPTIDES <- antibiotics %>%
 | 
						|
  filter(group %like% "glycopeptide") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_LIPOGLYCOPEPTIDES <- as.ab(c("DAL", "ORI", "TLV")) # dalba/orita/tela
 | 
						|
pre_commit_lst$AB_GLYCOPEPTIDES_EXCEPT_LIPO <- pre_commit_lst$AB_GLYCOPEPTIDES[!pre_commit_lst$AB_GLYCOPEPTIDES %in% pre_commit_lst$AB_LIPOGLYCOPEPTIDES]
 | 
						|
pre_commit_lst$AB_LINCOSAMIDES <- antibiotics %>%
 | 
						|
  filter(atc_group2 %like% "lincosamide" | (group %like% "lincosamide" & is.na(atc_group2))) %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_MACROLIDES <- antibiotics %>%
 | 
						|
  filter(atc_group2 %like% "macrolide" | (group %like% "macrolide" & is.na(atc_group2) & name %unlike% "screening|inducible")) %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_NITROFURANS <- antibiotics %>%
 | 
						|
  filter(name %like% "^furaz|nitrofura" | atc_group2 %like% "nitrofuran") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_OXAZOLIDINONES <- antibiotics %>%
 | 
						|
  filter(group %like% "oxazolidinone") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_PENICILLINS <- antibiotics %>%
 | 
						|
  filter(group %like% "penicillin") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_POLYMYXINS <- antibiotics %>%
 | 
						|
  filter(group %like% "polymyxin") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_QUINOLONES <- antibiotics %>%
 | 
						|
  filter(group %like% "quinolone") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_RIFAMYCINS <- antibiotics %>%
 | 
						|
  filter(name %like% "Rifampi|Rifabutin|Rifapentine|rifamy") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_STREPTOGRAMINS <- antibiotics %>%
 | 
						|
  filter(atc_group2 %like% "streptogramin") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_TETRACYCLINES <- antibiotics %>%
 | 
						|
  filter(group %like% "tetracycline") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_TETRACYCLINES_EXCEPT_TGC <- pre_commit_lst$AB_TETRACYCLINES[pre_commit_lst$AB_TETRACYCLINES != "TGC"]
 | 
						|
pre_commit_lst$AB_TRIMETHOPRIMS <- antibiotics %>%
 | 
						|
  filter(group %like% "trimethoprim") %>%
 | 
						|
  pull(ab)
 | 
						|
pre_commit_lst$AB_UREIDOPENICILLINS <- as.ab(c("PIP", "TZP", "AZL", "MEZ"))
 | 
						|
pre_commit_lst$AB_BETALACTAMS <- c(pre_commit_lst$AB_PENICILLINS, pre_commit_lst$AB_CEPHALOSPORINS, pre_commit_lst$AB_CARBAPENEMS)
 | 
						|
# this will be used for documentation:
 | 
						|
pre_commit_lst$DEFINED_AB_GROUPS <- sort(names(pre_commit_lst)[names(pre_commit_lst) %like% "^AB_" & names(pre_commit_lst) != "AB_LOOKUP"])
 | 
						|
create_AB_AV_lookup <- function(df) {
 | 
						|
  new_df <- df
 | 
						|
  new_df$generalised_name <- generalise_antibiotic_name(new_df$name)
 | 
						|
  new_df$generalised_synonyms <- lapply(new_df$synonyms, generalise_antibiotic_name)
 | 
						|
  if ("abbreviations" %in% colnames(df)) {
 | 
						|
    new_df$generalised_abbreviations <- lapply(new_df$abbreviations, generalise_antibiotic_name)
 | 
						|
  }
 | 
						|
  new_df$generalised_loinc <- lapply(new_df$loinc, generalise_antibiotic_name)
 | 
						|
  new_df$generalised_all <- unname(lapply(
 | 
						|
    as.list(as.data.frame(
 | 
						|
      t(new_df[,
 | 
						|
        c(
 | 
						|
          colnames(new_df)[colnames(new_df) %in% c("ab", "av", "atc", "cid", "name")],
 | 
						|
          colnames(new_df)[colnames(new_df) %like% "generalised"]
 | 
						|
        ),
 | 
						|
        drop = FALSE
 | 
						|
      ]),
 | 
						|
      stringsAsFactors = FALSE
 | 
						|
    )),
 | 
						|
    function(x) {
 | 
						|
      x <- generalise_antibiotic_name(unname(unlist(x)))
 | 
						|
      x[x != ""]
 | 
						|
    }
 | 
						|
  ))
 | 
						|
  new_df[, colnames(new_df)[colnames(new_df) %like% "^generalised"]]
 | 
						|
}
 | 
						|
pre_commit_lst$AB_LOOKUP <- create_AB_AV_lookup(AMR::antibiotics)
 | 
						|
pre_commit_lst$AV_LOOKUP <- create_AB_AV_lookup(AMR::antivirals)
 | 
						|
 | 
						|
# Export to package as internal data ----
 | 
						|
# usethis::use_data() must receive unquoted object names, which is not flexible at all.
 | 
						|
# we'll use good old base::save() instead
 | 
						|
save(list = names(pre_commit_lst),
 | 
						|
     file = "R/sysdata.rda",
 | 
						|
     envir = as.environment(pre_commit_lst),
 | 
						|
     compress = "xz",
 | 
						|
     version = 2,
 | 
						|
     ascii = FALSE)
 | 
						|
usethis::ui_done("Saved to {usethis::ui_value('R/sysdata.rda')}")
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
# Export data sets to the repository in different formats -----------------
 | 
						|
 | 
						|
for (pkg in c("haven", "openxlsx2", "arrow")) {
 | 
						|
  if (!pkg %in% rownames(utils::installed.packages())) {
 | 
						|
    message("NOTE: package '", pkg, "' not installed! Ignoring export where this package is required.")
 | 
						|
  }
 | 
						|
}
 | 
						|
if ("digest" %in% rownames(utils::installed.packages())) {
 | 
						|
  md5 <- function(object) digest::digest(object, "md5")
 | 
						|
} else {
 | 
						|
  # will write all files anyway, since MD5 hash cannot be determined
 | 
						|
  md5 <- function(object) "unknown-md5-hash"
 | 
						|
}
 | 
						|
 | 
						|
write_md5 <- function(object) {
 | 
						|
  conn <- file(paste0("data-raw/", deparse(substitute(object)), ".md5"))
 | 
						|
  writeLines(md5(object), conn)
 | 
						|
  close(conn)
 | 
						|
}
 | 
						|
changed_md5 <- function(object) {
 | 
						|
  tryCatch(
 | 
						|
    {
 | 
						|
      conn <- file(paste0("data-raw/", deparse(substitute(object)), ".md5"))
 | 
						|
      compared <- md5(object) != readLines(con = conn)
 | 
						|
      close(conn)
 | 
						|
      compared
 | 
						|
    },
 | 
						|
    error = function(e) TRUE
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
# give official names to ABs and MOs
 | 
						|
clin_break <- clinical_breakpoints %>%
 | 
						|
  mutate(mo_name = mo_name(mo, language = NULL, keep_synonyms = TRUE, info = FALSE), .after = mo) %>%
 | 
						|
  mutate(ab_name = ab_name(ab, language = NULL), .after = ab)
 | 
						|
if (changed_md5(clin_break)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('clinical_breakpoints')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(clin_break)
 | 
						|
  try(saveRDS(clin_break, "data-raw/clinical_breakpoints.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(write.table(clinical_breakpoints, "data-raw/clinical_breakpoints.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(haven::write_sav(clin_break, "data-raw/clinical_breakpoints.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(clin_break, "data-raw/clinical_breakpoints.dta"), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(clin_break, "data-raw/clinical_breakpoints.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(clin_break, "data-raw/clinical_breakpoints.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(clin_break, "data-raw/clinical_breakpoints.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
if (changed_md5(microorganisms)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('microorganisms')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(microorganisms)
 | 
						|
  try(saveRDS(microorganisms, "data-raw/microorganisms.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  max_50_snomed <- sapply(microorganisms$snomed, function(x) paste(x[seq_len(min(50, length(x), na.rm = TRUE))], collapse = " "))
 | 
						|
  mo <- microorganisms
 | 
						|
  mo$snomed <- max_50_snomed
 | 
						|
  mo <- dplyr::mutate_if(mo, ~ !is.numeric(.), as.character)
 | 
						|
  try(haven::write_sav(mo, "data-raw/microorganisms.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(mo, "data-raw/microorganisms.dta"), silent = TRUE)
 | 
						|
  mo_all_snomed <- microorganisms %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ","))
 | 
						|
  try(write.table(mo_all_snomed, "data-raw/microorganisms.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(mo_all_snomed, "data-raw/microorganisms.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(microorganisms, "data-raw/microorganisms.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(microorganisms, "data-raw/microorganisms.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
if (changed_md5(microorganisms.codes)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('microorganisms.codes')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(microorganisms.codes)
 | 
						|
  try(saveRDS(microorganisms.codes, "data-raw/microorganisms.codes.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(write.table(microorganisms.codes, "data-raw/microorganisms.codes.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(haven::write_sav(microorganisms.codes, "data-raw/microorganisms.codes.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(microorganisms.codes, "data-raw/microorganisms.codes.dta"), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(microorganisms.codes, "data-raw/microorganisms.codes.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(microorganisms.codes, "data-raw/microorganisms.codes.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(microorganisms.codes, "data-raw/microorganisms.codes.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
if (changed_md5(microorganisms.groups)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('microorganisms.groups')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(microorganisms.groups)
 | 
						|
  try(saveRDS(microorganisms.groups, "data-raw/microorganisms.groups.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(write.table(microorganisms.groups, "data-raw/microorganisms.groups.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(haven::write_sav(microorganisms.groups, "data-raw/microorganisms.groups.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(microorganisms.groups, "data-raw/microorganisms.groups.dta"), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(microorganisms.groups, "data-raw/microorganisms.groups.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(microorganisms.groups, "data-raw/microorganisms.groups.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(microorganisms.groups, "data-raw/microorganisms.groups.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
ab <- dplyr::mutate_if(antibiotics, ~ !is.numeric(.), as.character)
 | 
						|
if (changed_md5(ab)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('antibiotics')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(ab)
 | 
						|
  try(saveRDS(antibiotics, "data-raw/antibiotics.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(haven::write_sav(ab, "data-raw/antibiotics.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(ab, "data-raw/antibiotics.dta"), silent = TRUE)
 | 
						|
  ab_lists <- antibiotics %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ","))
 | 
						|
  try(write.table(ab_lists, "data-raw/antibiotics.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(ab_lists, "data-raw/antibiotics.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(antibiotics, "data-raw/antibiotics.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(antibiotics, "data-raw/antibiotics.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
av <- dplyr::mutate_if(antivirals, ~ !is.numeric(.), as.character)
 | 
						|
if (changed_md5(av)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('antivirals')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(av)
 | 
						|
  try(saveRDS(antivirals, "data-raw/antivirals.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(haven::write_sav(av, "data-raw/antivirals.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(av, "data-raw/antivirals.dta"), silent = TRUE)
 | 
						|
  av_lists <- antivirals %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ","))
 | 
						|
  try(write.table(av_lists, "data-raw/antivirals.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(av_lists, "data-raw/antivirals.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(antivirals, "data-raw/antivirals.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(antivirals, "data-raw/antivirals.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
# give official names to ABs and MOs
 | 
						|
intrinsicR <- data.frame(
 | 
						|
  microorganism = mo_name(intrinsic_resistant$mo, language = NULL, keep_synonyms = TRUE, info = FALSE),
 | 
						|
  antibiotic = ab_name(intrinsic_resistant$ab, language = NULL),
 | 
						|
  stringsAsFactors = FALSE
 | 
						|
)
 | 
						|
if (changed_md5(intrinsicR)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('intrinsic_resistant')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(intrinsicR)
 | 
						|
  try(saveRDS(intrinsicR, "data-raw/intrinsic_resistant.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(write.table(intrinsicR, "data-raw/intrinsic_resistant.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(haven::write_sav(intrinsicR, "data-raw/intrinsic_resistant.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(intrinsicR, "data-raw/intrinsic_resistant.dta"), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(intrinsicR, "data-raw/intrinsic_resistant.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(intrinsicR, "data-raw/intrinsic_resistant.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(intrinsicR, "data-raw/intrinsic_resistant.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
if (changed_md5(dosage)) {
 | 
						|
  usethis::ui_info(paste0("Saving {usethis::ui_value('dosage')} to {usethis::ui_value('data-raw/')}"))
 | 
						|
  write_md5(dosage)
 | 
						|
  try(saveRDS(dosage, "data-raw/dosage.rds", version = 2, compress = "xz"), silent = TRUE)
 | 
						|
  try(write.table(dosage, "data-raw/dosage.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
 | 
						|
  try(haven::write_sav(dosage, "data-raw/dosage.sav"), silent = TRUE)
 | 
						|
  try(haven::write_dta(dosage, "data-raw/dosage.dta"), silent = TRUE)
 | 
						|
  try(openxlsx2::write_xlsx(dosage, "data-raw/dosage.xlsx"), silent = TRUE)
 | 
						|
  try(arrow::write_feather(dosage, "data-raw/dosage.feather"), silent = TRUE)
 | 
						|
  try(arrow::write_parquet(dosage, "data-raw/dosage.parquet"), silent = TRUE)
 | 
						|
}
 | 
						|
 | 
						|
suppressMessages(reset_AMR_locale())
 | 
						|
 | 
						|
devtools::load_all(quiet = TRUE)
 | 
						|
suppressMessages(set_AMR_locale("English"))
 | 
						|
 | 
						|
# Update URLs -------------------------------------------------------------
 | 
						|
usethis::ui_info("Checking URLs for redirects")
 | 
						|
invisible(capture.output(urlchecker::url_update()))
 | 
						|
 | 
						|
 | 
						|
# Document pkg ------------------------------------------------------------
 | 
						|
usethis::ui_info("Documenting package")
 | 
						|
suppressMessages(devtools::document(quiet = TRUE))
 | 
						|
 | 
						|
 | 
						|
# Finished ----------------------------------------------------------------
 | 
						|
usethis::ui_done("All done")
 | 
						|
suppressMessages(reset_AMR_locale())
 |