diff --git a/R/module-data-wrangling.R b/R/module-data-wrangling.R index fe2e5db..f4f645b 100644 --- a/R/module-data-wrangling.R +++ b/R/module-data-wrangling.R @@ -175,12 +175,32 @@ module_server_wrangling <- function(id, data) { w <- switch(EXPR = input$wrangle, "wfhz" = { shiny::req(input$sex, input$weight, input$height) - data() |> - dplyr::rename( + + ### Wrangle age dynamically ---- + df <- if (nzchar(input$dos)) { + dplyr::mutate( + .data = data(), + dos = as.Date(!!rlang::sym(input$dos), format = "%d/%m/%Y"), + dob = as.Date(!!rlang::sym(input$dob), format = "%d/%m/%Y"), + age = as.numeric(!!rlang::sym(input$age)), sex = !!rlang::sym(input$sex), weight = !!rlang::sym(input$weight), height = !!rlang::sym(input$height) ) |> + mwana::mw_wrangle_age(.data$dos, .data$dob, .data$age) + } else { + dplyr::mutate( + .data = data(), + dos = NULL, + dob = NULL, + sex = !!rlang::sym(input$sex), + weight = !!rlang::sym(input$weight), + height = !!rlang::sym(input$height) + ) + } + + ### Wrangle WFHZ data ---- + df |> mwana::mw_wrangle_wfhz( sex = .data$sex, .recode_sex = TRUE, @@ -188,18 +208,34 @@ module_server_wrangling <- function(id, data) { height = .data$height ) }, + "mfaz" = { shiny::req(input$age, input$sex, input$muac) - data() |> + ### Wrangle age dynamically ---- + df <- if (nzchar(input$dos)) { dplyr::mutate( - muac = mwana::recode_muac(x = !!rlang::sym(input$muac), .to = "cm") + .data = data(), + muac = mwana::recode_muac(!!rlang::sym(input$muac), "cm"), + dos = as.Date(!!rlang::sym(input$dos), format = "%d/%m/%Y"), + dob = as.Date(!!rlang::sym(input$dob), format = "%d/%m/%Y"), + age = as.numeric(!!rlang::sym(input$age)), + sex = !!rlang::sym(input$sex) ) |> - dplyr::rename( - age = !!rlang::sym(input$age), + mwana::mw_wrangle_age(.data$dos, .data$dob, .data$age) + } else { + dplyr::mutate( + .data = data(), + muac = mwana::recode_muac(!!rlang::sym(input$muac), "cm"), + dos = NULL, + dob = NULL, sex = !!rlang::sym(input$sex) ) |> - mwana::mw_wrangle_age(dos = NULL, dob = NULL, age = .data$age) |> + mwana::mw_wrangle_age(NULL, NULL, .data$age) + } + + ### Wrangle MUAC ---- + df |> mwana::mw_wrangle_muac( sex = .data$sex, .recode_sex = TRUE, @@ -232,23 +268,40 @@ module_server_wrangling <- function(id, data) { input$muac ) - data() |> + ### Wrangle age dynamically ---- + df <- if (nzchar(input$dos)) { dplyr::mutate( - muac = mwana::recode_muac(x = !!rlang::sym(input$muac), .to = "cm") + .data = data(), + muac = mwana::recode_muac(!!rlang::sym(input$muac), "cm"), + dos = as.Date(!!rlang::sym(input$dos), format = "%d/%m/%Y"), + dob = as.Date(!!rlang::sym(input$dob), format = "%d/%m/%Y"), + age = as.numeric(!!rlang::sym(input$age)), + sex = !!rlang::sym(input$sex), + weight = !!rlang::sym(input$weight), + height = !!rlang::sym(input$height) ) |> - dplyr::rename( - age = !!rlang::sym(input$age), + mwana::mw_wrangle_age(.data$dos, .data$dob, .data$age) + } else { + dplyr::mutate( + .data = data(), + muac = mwana::recode_muac(!!rlang::sym(input$muac), "cm"), + dos = NULL, + dob = NULL, sex = !!rlang::sym(input$sex), weight = !!rlang::sym(input$weight), height = !!rlang::sym(input$height) ) |> + mwana::mw_wrangle_age(NULL, NULL, .data$age) + } + + ### Wrangle WHZ and MUAC data ---- + df |> mwana::mw_wrangle_wfhz( sex = .data$sex, .recode_sex = TRUE, weight = .data$weight, height = .data$height ) |> - mwana::mw_wrangle_age(dos = NULL, dob = NULL, age = .data$age) |> mwana::mw_wrangle_muac( sex = .data$sex, .recode_sex = FALSE,