Nothing
library(medicalcoder)
source('utilities.R')
# Verify that when a data.frame with zero rows is passed to comorbidities() the
# return will be a zero row data.frame with the same general structure that
# would be returned if a data.frame with at least one row was passed to
# comorbidities().
# build a zero-row data.frame for
DF <- data.frame(code = c("B", "A"), patid = 1:2)
common_args <- list(data = DF[0, ], id.vars = "patid", icd.codes = "code", poa = 1)
# fit all methods without subconditions
methods <- medicalcoder:::comorbidities_methods()
args <- lapply(methods, function(x) { if (startsWith(x, "pccc")) {c(common_args, list(method = x))} else {c(common_args, list(method = x, primarydx = 0L))} } )
args <- setNames(args, methods)
rtns <- lapply(args, do.call, what = comorbidities)
# pccc with subconditions
common_args[["subconditions"]] <- TRUE
args <- lapply(methods[startsWith(methods, "pccc")], function(x) c(common_args, list(method = x)))
args <- setNames(args, paste0(methods[startsWith(methods, "pccc")], "s"))
rtns <- c(rtns, lapply(args, do.call, what = comorbidities))
# build rtns1 with nrow = nrow(DF), this will be used to check that the names
# and general structure of the returns are the same with zero input rows or more
# than zero input rows
common_args <- list(data = DF, id.vars = "patid", icd.codes = "code", poa = 1)
args <- lapply(methods, function(x) { if (startsWith(x, "pccc")) {c(common_args, list(method = x))} else {c(common_args, list(method = x, primarydx = 0L))} } )
args <- setNames(args, methods)
rtns1 <- lapply(args, do.call, what = comorbidities)
# pccc with subconditions
common_args[["subconditions"]] <- TRUE
args <- lapply(methods[startsWith(methods, "pccc")], function(x) c(common_args, list(method = x)))
args <- setNames(args, paste0(methods[startsWith(methods, "pccc")], "s"))
rtns1 <- c(rtns1, lapply(args, do.call, what = comorbidities))
################################################################################
# verify that all the returned elements inherit the expected classes
for (m in names(rtns)) {
if (!inherits(rtns[[m]], "medicalcoder_comorbidities")) {
stop(sprintf("rtns[[%s]] does not inherit `medicalcoder_comorbidities`", m))
}
if (!startsWith(m, "pccc") & inherits(rtns[[m]], "medicalcoder_comorbidities_with_subconditions")) {
stop(sprintf("rtns[[%s]] incorrectly inherits `medicalcoder_comorbidities_with_subconditions`", m))
} else {
if (endsWith(m, "s") & !inherits(rtns[[m]], "medicalcoder_comorbidities_with_subconditions")) {
stop(sprintf("rtns[[%s]] does not inherit `medicalcoder_comorbidities_with_subconditions`", m))
} else if (!endsWith(m, "s") & inherits(rtns[[m]], "medicalcoder_comorbidities_with_subconditions")) {
stop(sprintf("rtns[[%s]] incorrectly inherits `medicalcoder_comorbidities_with_subconditions`", m))
}
}
}
# verify that all the non subcondition rtns are data.frames
for (m in names(rtns)) {
if (!startsWith(m, "pccc")) {
if (!inherits(rtns[[m]], "data.frame")) {
stop(sprintf("rtns[[%s]] is not a data.frame", m))
}
if (nrow(rtns[[m]]) != 0L) {
stop(sprintf("nrow(rtns[[%s]]) != 0", m))
}
} else {
if (endsWith(m, "s")) {
if (!inherits(rtns[[m]], "list")) {
stop(sprintf("rtns[[%s]] is not a list", m))
}
if (length(rtns[[m]]) != 2L) {
stop(sprintf("length(rtns[[%s]]) != 2L", m))
}
if (!inherits(rtns[[m]][['conditions']], "data.frame")) {
stop(sprintf("rtns[[%s]][['conditions']] is not a data.frame", m))
}
if (nrow(rtns[[m]][['conditions']]) != 0L) {
stop(sprintf("nrow(rtns[[%s]][['conditions']]) != 0", m))
}
if (!inherits(rtns[[m]][['subconditions']], "list")) {
stop(sprintf("rtns[[%s]][['subconditions']] is not a list", m))
}
if (length(rtns[[m]][['subconditions']]) != 11L) {
stop(sprintf("length(rtns[[%s]][['subconditions']]) != 11L", m))
}
if (!all(sapply(rtns[[m]][['subconditions']], nrow) == 0L)) {
stop(sprintf("!all(sapply(rtns[[%s]][['subconditions']], nrow) == 0L)", m))
}
} else {
if (!inherits(rtns[[m]], "data.frame")) {
stop(sprintf("rtns[[%s]] is not a data.frame", m))
}
if (nrow(rtns[[m]]) != 0L) {
stop(sprintf("nrow(rtns[[%s]]) != 0", m))
}
}
}
}
stopifnot(identical(lapply(rtns, names), lapply(rtns1, names)))
stopifnot(
identical(
lapply(rtns[grep("pccc_v.+s$", names(rtns))], lapply, names),
lapply(rtns1[grep("pccc_v.+s$", names(rtns))], lapply, names)
)
)
################################################################################
# End of File #
################################################################################
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.