eGFR_adult_df <- function(env = parent.frame()) { tibble::tribble( ~SCr, ~SCysC, ~Age, ~male, ~black, 0.5, 0.4, 20, FALSE, FALSE, 0.5, 0.4, 30, FALSE, TRUE, 0.5, 1.2, 20, FALSE, FALSE, 0.5, 1.2, 30, FALSE, TRUE, 1.5, 0.4, 20, FALSE, FALSE, 1.5, 0.4, 30, FALSE, TRUE, 1.5, 1.2, 20, FALSE, FALSE, 1.5, 1.2, 30, FALSE, TRUE, 0.5, 0.4, 20, TRUE, FALSE, 0.5, 0.4, 30, TRUE, TRUE, 0.5, 1.2, 20, TRUE, FALSE, 0.5, 1.2, 30, TRUE, TRUE, 1.5, 0.4, 20, TRUE, FALSE, 1.5, 0.4, 30, TRUE, TRUE, 1.5, 1.2, 20, TRUE, FALSE, 1.5, 1.2, 30, TRUE, TRUE ) %>% dplyr::mutate( SCr = units::set_units(SCr, "mg/dl"), SCysC = units::set_units(SCysC, "mg/l"), Age = units::set_units(Age, "years") ) %>% tibble::add_column( eGFR_adult_SCr = c( rep(c( 143.5 * (0.5 / 0.7)^-0.329 * 0.993^20, 143.5 * (0.5 / 0.7)^-0.329 * 0.993^30 * 1.159 ), 2), rep(c( 143.5 * (1.5 / 0.7)^-1.209 * 0.993^20, 143.5 * (1.5 / 0.7)^-1.209 * 0.993^30 * 1.159 ), 2), rep(c( 141 * (0.5 / 0.9)^-0.411 * 0.993^20, 141 * (0.5 / 0.9)^-0.411 * 0.993^30 * 1.159 ), 2), rep(c( 141 * (1.5 / 0.9)^-1.209 * 0.993^20, 141 * (1.5 / 0.9)^-1.209 * 0.993^30 * 1.159 ), 2) ), eGFR_adult_SCysC = c( rep(c( 133 * (0.4 / 0.8)^-0.499 * 0.996^20 * 0.932, 133 * (0.4 / 0.8)^-0.499 * 0.996^30 * 0.932, 133 * (1.2 / 0.8)^-1.328 * 0.996^20 * 0.932, 133 * (1.2 / 0.8)^-1.328 * 0.996^30 * 0.932 ), 2), rep(c( 133 * (0.4 / 0.8)^-0.499 * 0.996^20, 133 * (0.4 / 0.8)^-0.499 * 0.996^30, 133 * (1.2 / 0.8)^-1.328 * 0.996^20, 133 * (1.2 / 0.8)^-1.328 * 0.996^30 ), 2) ), eGFR_adult_SCr_SCysC = c( 130.8 * (0.5 / 0.7)^-0.248 * (0.4 / 0.8)^-0.375 * 0.995^20, 130.8 * (0.5 / 0.7)^-0.248 * (0.4 / 0.8)^-0.375 * 0.995^30 * 1.08, 130.8 * (0.5 / 0.7)^-0.248 * (1.2 / 0.8)^-0.711 * 0.995^20, 130.8 * (0.5 / 0.7)^-0.248 * (1.2 / 0.8)^-0.711 * 0.995^30 * 1.08, 130.8 * (1.5 / 0.7)^-0.601 * (0.4 / 0.8)^-0.375 * 0.995^20, 130.8 * (1.5 / 0.7)^-0.601 * (0.4 / 0.8)^-0.375 * 0.995^30 * 1.08, 130.8 * (1.5 / 0.7)^-0.601 * (1.2 / 0.8)^-0.711 * 0.995^20, 130.8 * (1.5 / 0.7)^-0.601 * (1.2 / 0.8)^-0.711 * 0.995^30 * 1.08, 135 * (0.5 / 0.9)^-0.207 * (0.4 / 0.8)^-0.375 * 0.995^20, 135 * (0.5 / 0.9)^-0.207 * (0.4 / 0.8)^-0.375 * 0.995^30 * 1.08, 135 * (0.5 / 0.9)^-0.207 * (1.2 / 0.8)^-0.711 * 0.995^20, 135 * (0.5 / 0.9)^-0.207 * (1.2 / 0.8)^-0.711 * 0.995^30 * 1.08, 135 * (1.5 / 0.9)^-0.601 * (0.4 / 0.8)^-0.375 * 0.995^20, 135 * (1.5 / 0.9)^-0.601 * (0.4 / 0.8)^-0.375 * 0.995^30 * 1.08, 135 * (1.5 / 0.9)^-0.601 * (1.2 / 0.8)^-0.711 * 0.995^20, 135 * (1.5 / 0.9)^-0.601 * (1.2 / 0.8)^-0.711 * 0.995^30 * 1.08 ) ) %>% dplyr::mutate(dplyr::across( dplyr::starts_with("eGFR"), function(x) units::set_units(x, "mL/min/1.73m2") )) } eGFR_child_df <- function(env = parent.frame()) { tibble::tibble( SCr = units::set_units(0.5, "mg/dl"), height = units::set_units(1.2, "m"), BUN = units::set_units(0.8, "mg/dl"), SCysC = units::set_units(0.4, "mg/l") ) %>% tibble::add_column( eGFR_child_SCr = 41.3 * (1.2 / 0.5), eGFR_child_SCr_BUN = 40.7 * (1.2 / 0.5)^0.64 * (30 / 0.8)^0.202, eGFR_child_SCysC = 70.69 * (0.4)^-0.931 ) %>% dplyr::mutate(dplyr::across( dplyr::starts_with("eGFR"), function(x) units::set_units(x, "mL/min/1.73m2") )) } eGFR_df <- function(env = parent.frame()) { dplyr::bind_rows(eGFR_adult_df(), eGFR_child_df()) %>% tidyr::pivot_longer( dplyr::starts_with("eGFR_"), names_to = "eGFR_calc_type", values_to = "eGFR" ) %>% dplyr::mutate( pediatric = grepl("child", eGFR_calc_type), SCr = dplyr::if_else(grepl("SCr", eGFR_calc_type), SCr, SCr[NA_integer_]), SCysC = dplyr::if_else(grepl("SCysC", eGFR_calc_type), SCysC, SCysC[NA_integer_]), BUN = dplyr::if_else(grepl("BUN", eGFR_calc_type), BUN, BUN[NA_integer_]), Age = dplyr::if_else(pediatric, units::set_units(10, "years"), Age) ) %>% dplyr::filter(!is.na(eGFR)) %>% dplyr::rename_with(~ paste0(.x, "_")) } eGFR_tol <- function(env = parent.frame()) { units::set_units(0.05, "mL/min/1.73m2") } test_that("eGFR() on full eGFR_df()", { ep <- eGFR_df()$eGFR_ df_str <- eGFR(eGFR_df(), SCr = "SCr_", SCysC = "SCysC_", Age = "Age_", height = "height_", BUN = "BUN_", male = "male_", black = "black_", pediatric = "pediatric_" ) df_mut <- eGFR_df() %>% dplyr::mutate(eGFR = eGFR( SCr = SCr_, SCysC = SCysC_, Age = Age_, height = height_, BUN = BUN_, male = male_, black = black_, pediatric = pediatric_ )) %>% dplyr::pull(eGFR) df_uvec <- eGFR( eGFR_df()$SCr_, eGFR_df()$SCysC_, eGFR_df()$Age_, eGFR_df()$height_, eGFR_df()$BUN_, eGFR_df()$male_, eGFR_df()$black_, eGFR_df()$pediatric_ ) df_nvec <- eGFR( as.numeric(eGFR_df()$SCr_), as.numeric(eGFR_df()$SCysC_), as.numeric(eGFR_df()$Age_), as.numeric(eGFR_df()$height_), as.numeric(eGFR_df()$BUN_), as.numeric(eGFR_df()$male_), as.numeric(eGFR_df()$black_), as.numeric(eGFR_df()$pediatric_) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("eGFR() on individual data.frames", { df_adult_SCr <- eGFR(eGFR_adult_df(), SCr = "SCr", Age = "Age", male = "male", black = "black") lapply(abs(df_adult_SCr - eGFR_adult_df()$eGFR_adult_SCr), expect_lte, eGFR_tol()) df_adult_SCysC <- eGFR(eGFR_adult_df(), SCysC = "SCysC", Age = "Age", male = "male") lapply(abs(df_adult_SCysC - eGFR_adult_df()$eGFR_adult_SCysC), expect_lte, eGFR_tol()) df_adult_SCr_SCysC <- eGFR(eGFR_adult_df(), SCr = "SCr", SCysC = "SCysC", Age = "Age", male = "male", black = "black") lapply(abs(df_adult_SCr_SCysC - eGFR_adult_df()$eGFR_adult_SCr_SCysC), expect_lte, eGFR_tol()) df_child_SCr <- suppressWarnings(eGFR(eGFR_child_df(), SCr = "SCr", height = "height")) lapply(abs(df_child_SCr - eGFR_child_df()$eGFR_child_SCr), expect_lte, eGFR_tol()) df_child_SCr_BUN <- suppressWarnings(eGFR(eGFR_child_df(), SCr = "SCr", height = "height", BUN = "BUN")) lapply(abs(df_child_SCr_BUN - eGFR_child_df()$eGFR_child_SCr_BUN), expect_lte, eGFR_tol()) df_child_SCysC <- suppressWarnings(eGFR(eGFR_child_df(), SCysC = "SCysC")) lapply(abs(df_child_SCysC - eGFR_child_df()$eGFR_child_SCysC), expect_lte, eGFR_tol()) }) test_that("eGFR() warnings", { testthat::expect_warning( eGFR(eGFR_child_df(), SCr = "SCr", height = "height"), "Assuming pediatric patients as Age must be provided for adults." ) df_no_age <- eGFR_child_df() %>% dplyr::mutate(pediatric = TRUE) df_child_SCr <- eGFR(df_no_age, SCr = "SCr", height = "height", pediatric = "pediatric") lapply(abs(df_child_SCr - eGFR_child_df()$eGFR_child_SCr), expect_lte, eGFR_tol()) df_wrong_ped <- eGFR_adult_df() %>% dplyr::mutate(pediatric = TRUE) testthat::expect_error( eGFR(df_wrong_ped, SCr = "SCr", Age = "Age", male = "male", black = "black", pediatric = "pediatric"), "Inconsistencies found between pediatric and age colums" ) testthat::expect_warning( eGFR(eGFR_adult_df()[1, ], SCr = "SCr", Age = "Age", male = "male"), ) }) test_that("eGFR_adult_SCr()", { ep <- eGFR_adult_df()$eGFR_adult_SCr df_str <- eGFR_adult_SCr(eGFR_adult_df(), "SCr", "Age", "male", "black") df_sym <- eGFR_adult_SCr(eGFR_adult_df(), SCr, Age, male, black) df_mut <- eGFR_adult_df() %>% dplyr::mutate(eGFR = eGFR_adult_SCr(SCr, Age, male, black)) %>% dplyr::pull(eGFR) df_uvec <- eGFR_adult_SCr( eGFR_adult_df()$SCr, eGFR_adult_df()$Age, eGFR_adult_df()$male, eGFR_adult_df()$black ) df_nvec <- eGFR_adult_SCr( as.numeric(eGFR_adult_df()$SCr), as.numeric(eGFR_adult_df()$Age), as.numeric(eGFR_adult_df()$male), as.numeric(eGFR_adult_df()$black) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_sym - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("eGFR_adult_SCysC()", { ep <- eGFR_adult_df()$eGFR_adult_SCysC df_str <- eGFR_adult_SCysC(eGFR_adult_df(), "SCysC", "Age", "male") df_sym <- eGFR_adult_SCysC(eGFR_adult_df(), SCysC, Age, male) df_mut <- eGFR_adult_df() %>% dplyr::mutate(eGFR = eGFR_adult_SCysC(SCysC, Age, male)) %>% dplyr::pull(eGFR) df_uvec <- eGFR_adult_SCysC( eGFR_adult_df()$SCysC, eGFR_adult_df()$Age, eGFR_adult_df()$male ) df_nvec <- eGFR_adult_SCysC( as.numeric(eGFR_adult_df()$SCysC), as.numeric(eGFR_adult_df()$Age), as.numeric(eGFR_adult_df()$male) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_sym - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("eGFR_adult_SCr_SCysC()", { ep <- eGFR_adult_df()$eGFR_adult_SCr_SCysC df_str <- eGFR_adult_SCr_SCysC(eGFR_adult_df(), "SCr", "SCysC", "Age", "male", "black") df_sym <- eGFR_adult_SCr_SCysC(eGFR_adult_df(), SCr, SCysC, Age, male, black) df_mut <- eGFR_adult_df() %>% dplyr::mutate(eGFR = eGFR_adult_SCr_SCysC(SCr, SCysC, Age, male, black)) %>% dplyr::pull(eGFR) df_uvec <- eGFR_adult_SCr_SCysC( eGFR_adult_df()$SCr, eGFR_adult_df()$SCysC, eGFR_adult_df()$Age, eGFR_adult_df()$male, eGFR_adult_df()$black ) df_nvec <- eGFR_adult_SCr_SCysC( as.numeric(eGFR_adult_df()$SCr), as.numeric(eGFR_adult_df()$SCysC), as.numeric(eGFR_adult_df()$Age), as.numeric(eGFR_adult_df()$male), as.numeric(eGFR_adult_df()$black) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_sym - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("eGFR_child_SCr()", { ep <- eGFR_child_df()$eGFR_child_SCr df_str <- eGFR_child_SCr(eGFR_child_df(), "SCr", "height") df_sym <- eGFR_child_SCr(eGFR_child_df(), SCr, height) df_mut <- eGFR_child_df() %>% dplyr::mutate(eGFR = eGFR_child_SCr(SCr, height)) %>% dplyr::pull(eGFR) df_uvec <- eGFR_child_SCr( eGFR_child_df()$SCr, eGFR_child_df()$height ) df_nvec <- eGFR_child_SCr( as.numeric(eGFR_child_df()$SCr), as.numeric(eGFR_child_df()$height) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_sym - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("eGFR_child_SCr_BUN()", { ep <- eGFR_child_df()$eGFR_child_SCr_BUN df_str <- eGFR_child_SCr_BUN(eGFR_child_df(), "SCr", "height", "BUN") df_sym <- eGFR_child_SCr_BUN(eGFR_child_df(), SCr, height, BUN) df_mut <- eGFR_child_df() %>% dplyr::mutate(eGFR = eGFR_child_SCr_BUN(SCr, height, BUN)) %>% dplyr::pull(eGFR) df_uvec <- eGFR_child_SCr_BUN( eGFR_child_df()$SCr, eGFR_child_df()$height, eGFR_child_df()$BUN ) df_nvec <- eGFR_child_SCr_BUN( as.numeric(eGFR_child_df()$SCr), as.numeric(eGFR_child_df()$height), as.numeric(eGFR_child_df()$BUN) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_sym - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("eGFR_child_SCysC()", { ep <- eGFR_child_df()$eGFR_child_SCysC df_str <- eGFR_child_SCysC(eGFR_child_df(), "SCysC") df_sym <- eGFR_child_SCysC(eGFR_child_df(), SCysC) df_mut <- eGFR_child_df() %>% dplyr::mutate(eGFR = eGFR_child_SCysC(SCysC)) %>% dplyr::pull(eGFR) df_uvec <- eGFR_child_SCysC( eGFR_child_df()$SCysC ) df_nvec <- eGFR_child_SCysC( as.numeric(eGFR_child_df()$SCysC) ) lapply(abs(df_str - ep), expect_lte, eGFR_tol()) lapply(abs(df_sym - ep), expect_lte, eGFR_tol()) lapply(abs(df_mut - ep), expect_lte, eGFR_tol()) lapply(abs(df_uvec - ep), expect_lte, eGFR_tol()) lapply(abs(df_nvec - as.numeric(ep)), expect_lte, as.numeric(eGFR_tol())) }) test_that("GFR_staging()", { ep <- vctrs::vec_c(NA, NA, GFR_stages) df <- tibble::tibble( eGFR = units::set_units(c(-1, NA, 100, 70, 50, 35, 20, 10), "mL/min/1.73m2") ) df_str <- GFR_staging(df, "eGFR") df_sym <- GFR_staging(df, eGFR) df_mut <- df %>% dplyr::mutate(GFR_level = GFR_staging(eGFR)) %>% dplyr::pull(GFR_level) df_uvec <- GFR_staging(df$eGFR) df_nvec <- GFR_staging(as.numeric(df$eGFR)) expect_identical(df_str, ep) expect_identical(df_sym, ep) expect_identical(df_mut, ep) expect_identical(df_uvec, ep) expect_identical(df_nvec, ep) }) test_that("Albuminuria_staging_AER()", { ep <- Albuminuria_stages[c(4, 4, 1:3)] df <- tibble::tibble( AER = units::set_units(c(-1, NA, 15, 100, 500), "mg/day") ) df_str <- Albuminuria_staging_AER(df, "AER") df_sym <- Albuminuria_staging_AER(df, AER) df_mut <- df %>% dplyr::mutate(GFR_level = Albuminuria_staging_AER(AER)) %>% dplyr::pull(GFR_level) df_uvec <- Albuminuria_staging_AER(df$AER) df_nvec <- Albuminuria_staging_AER(as.numeric(df$AER)) expect_identical(df_str, ep) expect_identical(df_sym, ep) expect_identical(df_mut, ep) expect_identical(df_uvec, ep) expect_identical(df_nvec, ep) }) test_that("Albuminuria_staging_ACR()", { ep <- Albuminuria_stages[c(4, 4, 1:3)] df <- tibble::tibble( ACR = units::set_units(c(-1, NA, 1, 10, 50), "mg/g") ) df_str <- Albuminuria_staging_ACR(df, "ACR") df_sym <- Albuminuria_staging_ACR(df, ACR) df_mut <- df %>% dplyr::mutate(GFR_level = Albuminuria_staging_ACR(ACR)) %>% dplyr::pull(GFR_level) df_uvec <- Albuminuria_staging_ACR(df$ACR) df_nvec <- Albuminuria_staging_ACR(as.numeric(df$ACR)) expect_identical(df_str, ep) expect_identical(df_sym, ep) expect_identical(df_mut, ep) expect_identical(df_uvec, ep) expect_identical(df_nvec, ep) })