diff --git a/DESCRIPTION b/DESCRIPTION index 0f63813e..6688e9fd 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: AMR -Version: 1.5.0.9036 +Version: 1.5.0.9037 Date: 2021-03-07 Title: Antimicrobial Resistance Data Analysis Authors@R: c( diff --git a/R/rsi.R b/R/rsi.R index c6cadd8a..d341f319 100755 --- a/R/rsi.R +++ b/R/rsi.R @@ -721,10 +721,10 @@ exec_as.rsi <- function(method, warned <- FALSE method_param <- toupper(method) - genera <- mo_genus(mo) - mo_genus <- as.mo(genera) - mo_family <- as.mo(mo_family(mo)) - mo_order <- as.mo(mo_order(mo)) + genera <- mo_genus(mo, language = NULL) + mo_genus <- as.mo(genera, language = NULL) + mo_family <- as.mo(mo_family(mo, language = NULL)) + mo_order <- as.mo(mo_order(mo, language = NULL)) if (any(genera == "Staphylococcus", na.rm = TRUE)) { mo_becker <- as.mo(mo, Becker = TRUE) } else { @@ -809,25 +809,40 @@ exec_as.rsi <- function(method, pm_arrange(pm_desc(nchar(mo))) } + get_record <- get_record[1L, , drop = FALSE] + if (NROW(get_record) > 0) { - get_record <- get_record[1L, , drop = FALSE] - if (is.na(x[i])) { + pkg_env$strange <- list(x_dbl = as.double(x[i]), + x_chr = as.character(x[i]), + get_record = get_record, + guideline_coerced = guideline_coerced, + lookup = c(lookup_mo[i], + lookup_genus[i], + lookup_family[i], + lookup_order[i], + lookup_becker[i], + lookup_lancefield[i], + lookup_other[i]), + is_intrinsic_r = is_intrinsic_r, + c1 = x[i] <= get_record$breakpoint_S, + c2 = guideline_coerced %like% "EUCAST" & x[i] > get_record$breakpoint_R, + c2 = guideline_coerced %like% "CLSI" & x[i] >= get_record$breakpoint_R) + + if (is.na(x[i]) | (is.na(get_record$breakpoint_S) & is.na(get_record$breakpoint_R))) { new_rsi[i] <- NA_character_ } else if (method == "mic") { - new_rsi[i] <- quick_case_when(is.na(get_record$breakpoint_S) & is.na(get_record$breakpoint_R) ~ NA_character_, - isTRUE(conserve_capped_values) & x[i] %like% "^<[0-9]" ~ "S", + new_rsi[i] <- quick_case_when(isTRUE(conserve_capped_values) & x[i] %like% "^<[0-9]" ~ "S", isTRUE(conserve_capped_values) & x[i] %like% "^>[0-9]" ~ "R", # start interpreting: EUCAST uses <= S and > R, CLSI uses <=S and >= R - as.double(x[i]) <= get_record$breakpoint_S ~ "S", - guideline_coerced %like% "EUCAST" & as.double(x[i]) > get_record$breakpoint_R ~ "R", - guideline_coerced %like% "CLSI" & as.double(x[i]) >= get_record$breakpoint_R ~ "R", + x[i] <= get_record$breakpoint_S ~ "S", + guideline_coerced %like% "EUCAST" & x[i] > get_record$breakpoint_R ~ "R", + guideline_coerced %like% "CLSI" & x[i] >= get_record$breakpoint_R ~ "R", # return "I" when not match the bottom or top !is.na(get_record$breakpoint_S) & !is.na(get_record$breakpoint_R) ~ "I", # and NA otherwise TRUE ~ NA_character_) } else if (method == "disk") { - new_rsi[i] <- quick_case_when(is.na(get_record$breakpoint_S) & is.na(get_record$breakpoint_R) ~ NA_character_, - isTRUE(as.double(x[i]) >= as.double(get_record$breakpoint_S)) ~ "S", + new_rsi[i] <- quick_case_when(isTRUE(as.double(x[i]) >= as.double(get_record$breakpoint_S)) ~ "S", # start interpreting: EUCAST uses >= S and < R, CLSI uses >=S and <= R guideline_coerced %like% "EUCAST" & isTRUE(as.double(x[i]) < as.double(get_record$breakpoint_R)) ~ "R", diff --git a/tests/testthat/test-rsi.R b/tests/testthat/test-rsi.R index 8e4d1889..44664d08 100644 --- a/tests/testthat/test-rsi.R +++ b/tests/testthat/test-rsi.R @@ -95,20 +95,20 @@ test_that("mic2rsi works", { mo = "B_STRPT_PNMN", ab = "AMP", guideline = "EUCAST 2020")), - c("S", "S", "I", "I", "R")) + c("S", "S", "I", "I", "R"), info = pkg_env$strange) # S. pneumoniae/amoxicillin in CLSI 2019: 2-8 ug/ml (R is 8 and > 8) expect_equal(as.character( as.rsi(x = as.mic(c(1, 2, 4, 8, 16)), mo = "B_STRPT_PNMN", ab = "AMX", guideline = "CLSI 2019")), - c("S", "S", "I", "R", "R")) + c("S", "S", "I", "R", "R"), info = pkg_env$strange) # cutoffs at MIC = 8 expect_equal(as.rsi(as.mic(2), "E. coli", "ampicillin", guideline = "EUCAST 2020"), - as.rsi("S"), info = paste0(as.mo("E. coli"), as.ab("ampicillin"))) + as.rsi("S"), info = pkg_env$strange) expect_equal(as.rsi(as.mic(32), "E. coli", "ampicillin", guideline = "EUCAST 2020"), - as.rsi("R")) + as.rsi("R"), info = pkg_env$strange) expect_true(suppressWarnings(example_isolates %>% mutate(amox_mic = as.mic(2)) %>%