# consider adding KDIGO Table 7 as the test cases
aki_bCr_test_df <- function(env = parent.frame()) {
tibble::tibble(
SCr_ = units::set_units(seq(2.0, 4.5, by = 0.5), "mg/dl"),
bCr_ = units::set_units(1.5, "mg/dl"),
aki_bCr = vctrs::vec_c(
dplyr::last(aki_stages),
aki_stages[1],
aki_stages[2],
aki_stages[2],
aki_stages[3],
aki_stages[3]
)
)
}
aki_SCr_test_raw_df <- function(env = parent.frame()) {
tibble::tibble(
pt_id_ = c(rep("pt1", 3 + 3), rep("pt2", 3)),
dttm_ = c(
seq(
lubridate::as_datetime("2020-10-18 09:00:00", tz = "Australia/Melbourne"),
lubridate::as_datetime("2020-10-20 09:00:00", tz = "Australia/Melbourne"),
length.out = 3
),
seq(
lubridate::as_datetime("2020-10-23 09:00:00", tz = "Australia/Melbourne"),
lubridate::as_datetime("2020-10-25 21:00:00", tz = "Australia/Melbourne"),
length.out = 3
),
seq(
lubridate::as_datetime("2020-10-18 10:00:00", tz = "Australia/Melbourne"),
lubridate::as_datetime("2020-10-19 10:00:00", tz = "Australia/Melbourne"),
length.out = 3
)
),
SCr_ = c(
units::set_units(seq(2.0, 3.0, by = 0.5), "mg/dl"),
units::set_units(seq(3.4, 3.9, by = 0.25), "mg/dl"),
units::set_units(seq(3.3, 3.5, by = 0.10), "mg/dl")
),
bCr_ = c(
rep(units::set_units(1.8, "mg/dl"), 3 + 3),
rep(units::set_units(3.0, "mg/dl"), 3)
),
aki_SCr = vctrs::vec_c(
dplyr::last(aki_stages),
rep(aki_stages[1], 2),
rep(dplyr::last(aki_stages), 6)
)
)
}
aki_SCr_test_rand_df <- function(env = parent.frame()) {
aki_SCr_test_raw_df()[c(4, 6, 3, 8, 1, 2, 7, 9, 5), ]
}
aki_UO_test_raw_df <- function(env = parent.frame()) {
tibble::tribble(
~pt_id_, ~dttm_, ~UO_, ~aki_UO,
3, "2020-10-18 09:00:00", 8, 4,
3, "2020-10-18 15:00:00", 5, 4,
3, "2020-10-18 21:00:00", 2, 1,
3, "2020-10-19 01:00:00", 1, 1,
3, "2020-10-19 03:00:00", 1, 2,
3, "2020-10-19 09:00:00", 1, 2,
3, "2020-10-19 15:00:00", 1, 3,
3, "2020-10-19 21:00:00", 1, 3,
4, "2020-10-18 12:00:00", 2, 4,
4, "2020-10-18 18:00:00", 0, 1,
4, "2020-10-19 00:00:00", 0, 3,
4, "2020-10-19 06:00:00", 0, 3,
) %>%
dplyr::mutate(
pt_id_ = paste0("pt", pt_id_),
dttm_ = lubridate::as_datetime(dttm_, tz = "Australia/Melbourne"),
UO_ = units::set_units(UO_, "ml/kg"),
aki_UO = aki_stages[aki_UO]
)
}
aki_UO_test_rand_df <- function(env = parent.frame()) {
aki_UO_test_raw_df()[c(10, 9, 5, 8, 3, 11, 6, 2, 4, 12, 7, 1), ]
}
aki_test_df <- function(env = parent.frame()) {
dplyr::bind_rows(aki_bCr_test_df(), aki_SCr_test_rand_df(), aki_UO_test_rand_df()) %>%
tidyr::pivot_longer(
dplyr::starts_with("aki_"),
names_to = "aki_staging_type",
values_to = "aki_"
) %>%
dplyr::mutate(
SCr_ = dplyr::if_else(grepl("bCr|SCr", aki_staging_type), SCr_, SCr_[NA_integer_]),
bCr_ = dplyr::if_else(grepl("bCr", aki_staging_type), bCr_, bCr_[NA_integer_]),
UO_ = dplyr::if_else(grepl("UO", aki_staging_type), UO_, UO_[NA_integer_])
) %>%
dplyr::filter(!is.na(aki_))
}
test_that("aki_staging() on full aki_test_df()", {
ep <- aki_test_df()$aki_
df_str <- aki_staging(aki_test_df(),
SCr = "SCr_", bCr = "bCr_", UO = "UO_", dttm = "dttm_", pt_id = "pt_id_"
)
df_mut <- aki_test_df() %>%
dplyr::mutate(aki = aki_staging(
SCr = SCr_, bCr = bCr_, UO = UO_, dttm = dttm_, pt_id = pt_id_
)) %>%
dplyr::pull(aki)
df_uvec <- aki_staging(
aki_test_df()$SCr_,
aki_test_df()$bCr_,
aki_test_df()$UO_,
aki_test_df()$dttm_,
aki_test_df()$pt_id_
)
df_nvec <- aki_staging(
as.numeric(aki_test_df()$SCr_),
as.numeric(aki_test_df()$bCr_),
as.numeric(aki_test_df()$UO_),
aki_test_df()$dttm_,
aki_test_df()$pt_id_
)
expect_identical(df_str, ep)
expect_identical(df_mut, ep)
expect_identical(df_uvec, ep)
expect_identical(df_nvec, ep)
})
test_that("aki_staging() on individual data.frames", {
expect_identical(
aki_staging(aki_bCr_test_df(), SCr = "SCr_", bCr = "bCr_"),
aki_bCr_test_df()$aki_bCr
)
expect_identical(
aki_staging(aki_SCr_test_rand_df(), SCr = "SCr_", dttm = "dttm_", pt_id = "pt_id_"),
aki_SCr_test_rand_df()$aki_SCr
)
expect_identical(
aki_staging(aki_UO_test_rand_df(), UO = "UO_", dttm = "dttm_", pt_id = "pt_id_"),
aki_UO_test_rand_df()$aki_UO
)
})
test_that("aki_staging() warnings", {
df_no_pt_id <- aki_SCr_test_raw_df() %>%
dplyr::filter(pt_id_ == "pt1")
expect_warning(
aki_staging(df_no_pt_id, SCr = "SCr_", dttm = "dttm_"),
".*Assuming provided data is for a single patient"
)
expect_identical(
suppressWarnings(aki_staging(df_no_pt_id, SCr = "SCr_", dttm = "dttm_")),
df_no_pt_id$aki_SCr
)
})
test_that("aki_bCr() for data.frame", {
expect_identical(aki_bCr(aki_bCr_test_df(), "SCr_", "bCr_"), aki_bCr_test_df()$aki_bCr)
expect_identical(aki_bCr(aki_bCr_test_df(), SCr_, bCr_), aki_bCr_test_df()$aki_bCr)
})
test_that("aki_bCr() for units vector", {
SCr_ <- aki_bCr_test_df()$SCr_
bCr_ <- aki_bCr_test_df()$bCr_
expect_identical(aki_bCr(SCr_, bCr_), aki_bCr_test_df()$aki_bCr)
})
test_that("aki_bCr() for dplyr::mutate on units", {
df <- aki_bCr_test_df() %>%
dplyr::mutate(aki = aki_bCr(SCr_, bCr_))
expect_identical(df$aki, aki_bCr_test_df()$aki_bCr)
})
test_that("aki_bCr() for dplyr::mutate on numeric", {
df <- aki_bCr_test_df() %>%
dplyr::mutate(dplyr::across(dplyr::everything(), as.numeric)) %>%
dplyr::mutate(aki = aki_bCr(SCr_, bCr_))
expect_identical(df$aki, aki_bCr_test_df()$aki_bCr)
})
test_that("aki_SCr() for data.frame", {
expect_identical(aki_SCr(aki_SCr_test_rand_df(), "SCr_", "dttm_", "pt_id_"), aki_SCr_test_rand_df()$aki_SCr)
expect_identical(aki_SCr(aki_SCr_test_rand_df(), SCr_, dttm_, pt_id_), aki_SCr_test_rand_df()$aki_SCr)
})
test_that("aki_SCr() for units vector", {
SCr_ <- aki_SCr_test_rand_df()$SCr_
dttm_ <- aki_SCr_test_rand_df()$dttm_
pt_id_ <- aki_SCr_test_rand_df()$pt_id_
expect_identical(aki_SCr(SCr_, dttm_, pt_id_), aki_SCr_test_rand_df()$aki_SCr)
})
test_that("aki_SCr() for dplyr::mutate on units", {
df <- aki_SCr_test_rand_df() %>%
dplyr::mutate(aki = aki_SCr(SCr_, dttm_, pt_id_))
expect_identical(df$aki, aki_SCr_test_rand_df()$aki_SCr)
})
test_that("aki_bCr() for dplyr::mutate on numeric", {
df <- aki_SCr_test_rand_df() %>%
dplyr::mutate(dplyr::across(where(is.numeric), as.numeric)) %>%
dplyr::mutate(aki = aki_SCr(SCr_, dttm_, pt_id_))
expect_identical(df$aki, aki_SCr_test_rand_df()$aki_SCr)
})
test_that("aki_UO() for data.frame", {
expect_identical(aki_UO(aki_UO_test_rand_df(), "UO_", "dttm_", "pt_id_"), aki_UO_test_rand_df()$aki_UO)
expect_identical(aki_UO(aki_UO_test_rand_df(), UO_, dttm_, pt_id_), aki_UO_test_rand_df()$aki_UO)
})
test_that("aki_UO() for units vector", {
UO_ <- aki_UO_test_rand_df()$UO_
dttm_ <- aki_UO_test_rand_df()$dttm_
pt_id_ <- aki_UO_test_rand_df()$pt_id_
expect_identical(aki_UO(UO_, dttm_, pt_id_), aki_UO_test_rand_df()$aki_UO)
})
test_that("aki_UO() for dplyr::mutate on units", {
df <- aki_UO_test_rand_df() %>%
dplyr::mutate(aki = aki_UO(UO_, dttm_, pt_id_))
expect_identical(df$aki, aki_UO_test_rand_df()$aki_UO)
})
test_that("aki_UO() for dplyr::mutate on numeric", {
df <- aki_UO_test_rand_df() %>%
dplyr::mutate(dplyr::across(where(is.numeric), as.numeric)) %>%
dplyr::mutate(aki = aki_UO(UO_, dttm_, pt_id_))
expect_identical(df$aki, aki_UO_test_rand_df()$aki_UO)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.