Nothing
# nocov start
#' Generate all package data
#'
#' Parses (and downloads if necessary) CDC annual revisions of ICD-9-CM to get
#' the 'billable' codes. Also parses the AHRQ, Quan/Deyo, and CMS HCC
#' comorbidity mappings from the source SAS data. Elixhauser and Quan/Elixhauser
#' mappings are generated from transcribed codes.
#' @keywords internal datagen
#' @noRd
.update_everything <- function() {
old_opt <- .set_opt(
offline = FALSE,
verbose = TRUE
)
on.exit(options(old_opt), add = TRUE)
.parse_icd9cm_leaf_year(
year = "2014",
save_pkg_data = TRUE
)
.print_options()
.set_icd_data_dir()
.print_options()
.icd10cm_extract_sub_chapters(save_pkg_data = TRUE)
.generate_sysdata()
load(file.path("R", "sysdata.rda"))
.generate_spelling()
message("Parsing comorbidity mappings from SAS and text sources.
(Make sure lookup files are updated first.)
Depends on icd9cm_hierarchy being updated.")
# ICD 9
icd9_parse_ahrq_sas(save_pkg_data = TRUE)
icd9_parse_quan_deyo_sas(save_pkg_data = TRUE)
.parse_icd9cm_cc(save_pkg_data = TRUE)
icd9_parse_ahrq_ccs(single = TRUE, save_pkg_data = TRUE)
icd9_parse_ahrq_ccs(single = FALSE, save_pkg_data = TRUE)
icd10_parse_ahrq_ccs(version = "2018.1", save_pkg_data = TRUE)
icd9_generate_map_quan_elix(save_pkg_data = TRUE)
icd9_generate_map_elix(save_pkg_data = TRUE)
# ICD 10
.parse_icd10cm_all(save_pkg_data = TRUE)
icd10_parse_ahrq_sas(save_pkg_data = TRUE)
.parse_icd10cm_cc(save_pkg_data = TRUE)
icd10_generate_map_quan_elix(save_pkg_data = TRUE)
icd10_generate_map_quan_deyo(save_pkg_data = TRUE)
icd10_generate_map_elix(save_pkg_data = TRUE)
generate_maps_pccc(save_pkg_data = TRUE)
icd10_parse_map_ahrq_pc(save_pkg_data = TRUE)
.parse_cc_hierarchy(save_pkg_data = TRUE)
# icd9cm2014_leaf was formerly "icd9cm_billable[[version_number]]"
icd9cm2014_leaf <- get_icd9cm2014_leaf()
.save_in_data_dir(icd9cm2014_leaf)
icd10cm2019 <- .parse_icd10cm_year(2019)
.save_in_data_dir(icd10cm2019)
icd9cm_hierarchy <- get_icd9cm2014()
names(icd9cm_hierarchy)[names(icd9cm_hierarchy) == "leaf"] <- "billable"
.save_in_data_dir(icd9cm_hierarchy)
}
#' Generate \code{sysdata.rda}
#'
#' Generate correctly ordered look-up tables of numeric-only, V and E codes.
#' This is quick, but much too slow when it appears many times in a loop.
#' @template save_pkg_data
#' @return invisibly returns the data as a list
#' @keywords internal
#' @noRd
.generate_sysdata <- function(save_pkg_data = TRUE) {
path <- file.path("R", "sysdata.rda")
icd9_short_n <- icd9_generate_all_n()
icd9_short_v <- icd9_generate_all_v()
icd9_short_e <- icd9_generate_all_e()
# we can either use the is_defined functions on these lists, or just grep the
# canonical list directly to get the numeric, V and E codes.
codes <- icd9cm_hierarchy[["code"]]
icd9_short_n_defined <- vec_to_lookup_pair(grep("^[^VE]+", codes, perl = TRUE, value = TRUE))
icd9_short_v_defined <- vec_to_lookup_pair(grep("^V", codes, perl = TRUE, value = TRUE))
icd9_short_e_defined <- vec_to_lookup_pair(grep("^E", codes, perl = TRUE, value = TRUE))
# also consider doing this in the ranging functions, even though slower, so
# version can be chosen each time.
icd9_short_n_leaf <- vec_to_lookup_pair(get_billable.icd10cm(
icd9_short_n_defined$vec,
short_code = TRUE, icd9cm_edition = "32"
)) # nolint
icd9_short_v_leaf <- vec_to_lookup_pair(get_billable.icd10cm(
icd9_short_v_defined$vec,
short_code = TRUE, icd9cm_edition = "32"
)) # nolint
icd9_short_e_leaf <- vec_to_lookup_pair(get_billable.icd10cm(
icd9_short_e_defined$vec,
short_code = TRUE, icd9cm_edition = "32"
)) # nolint
# minimal test here just to use variable names to avoid warnings!
stopifnot(length(icd9_short_n$vec) == length(icd9_short_n$env))
stopifnot(length(icd9_short_v$vec) == length(icd9_short_v$env))
stopifnot(length(icd9_short_e$vec) == length(icd9_short_e$env))
stopifnot(length(icd9_short_n_leaf$vec) == length(icd9_short_n_leaf$env))
stopifnot(length(icd9_short_v_leaf$vec) == length(icd9_short_v_leaf$env))
stopifnot(length(icd9_short_e_leaf$vec) == length(icd9_short_e_leaf$env))
icd9_short_e
icd9_short_n_leaf
icd9_short_v_leaf
icd9_short_e_leaf
sysdata_names <- c(
"icd9_short_n",
"icd9_short_v",
"icd9_short_e",
"icd9_short_n_defined",
"icd9_short_v_defined",
"icd9_short_e_defined",
"icd9_short_n_leaf",
"icd9_short_v_leaf",
"icd9_short_e_leaf"
)
# we assume we are in the root of the package directory. Save to sysdata.rda
# because these are probably not of interest to a user and would clutter an
# already busy namespace.
if (save_pkg_data) {
save(
list = sysdata_names,
file = path,
compress = "xz",
version = 2
)
}
invisible(mget(sysdata_names))
}
icd9_generate_all_major_n <- function() {
sprintf("%03d", 1:999)
}
icd9_generate_all_major_v <- function() {
sprintf("V%02d", 1:99)
}
icd9_generate_all_major_e <- function() {
sprintf("E%03d", 0:999)
}
icd9_generate_all_n <- function(...) {
icd9_generate_all_(major_fun = icd9_generate_all_major_n, ...)
}
icd9_generate_all_v <- function(...) {
icd9_generate_all_(major_fun = icd9_generate_all_major_v, ...)
}
icd9_generate_all_e <- function(...) {
icd9_generate_all_(major_fun = icd9_generate_all_major_e, ...)
}
#' Generate lookup data for each class of ICD-9 code
#'
#' This is a little painful but the data is small enough, with huge speed gains
#' in common operations
#' @return list with two items, the first being an environment, the second being
#' a vector. The environment has short ICD-9 codes as the names, and the
#' sequence number as the contents. The vector contains the codes in order.
#' @keywords internal
#' @noRd
icd9_generate_all_ <- function(major_fun,
short_code = TRUE,
env = new.env(hash = TRUE, baseenv())) {
vec <- character()
for (i in major_fun()) {
kids <- children.icd9(i, short_code = short_code, defined = FALSE)
vec <- c(vec, kids)
}
vec_to_env_count(vec, env = env)
invisible(list(env = env, vec = env_to_vec_flip(env)))
}
# nocov end
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.