From 51382f95333d4686233a547f09b2935c68dc891d Mon Sep 17 00:00:00 2001 From: patrickbarks Date: Mon, 25 Sep 2023 13:45:09 +0200 Subject: [PATCH] account for field [event-name] in branching logic --- NAMESPACE | 1 + R/generate_queries.R | 22 +++++++++++++++++++--- R/translate_logic.R | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index d726b20..caeb392 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -29,6 +29,7 @@ export(translate_logic) importFrom(chron,times) importFrom(dplyr,`%>%`) importFrom(dplyr,across) +importFrom(dplyr,add_row) importFrom(dplyr,all_of) importFrom(dplyr,anti_join) importFrom(dplyr,any_of) diff --git a/R/generate_queries.R b/R/generate_queries.R index fe9abb1..fee218d 100644 --- a/R/generate_queries.R +++ b/R/generate_queries.R @@ -48,7 +48,7 @@ #' } #' #' @importFrom dplyr `%>%` filter mutate select left_join if_else n rename -#' arrange all_of bind_rows group_by ungroup summarize across case_when +#' arrange all_of bind_rows group_by ungroup summarize across case_when add_row #' @importFrom rlang .data .env #' @export generate_queries generate_queries <- function(conn, @@ -64,7 +64,6 @@ generate_queries <- function(conn, drop_redundant = FALSE, on_error = "warn") { - ## validate argument lang lang <- match.arg(lang, c("en", "fr")) @@ -80,9 +79,26 @@ generate_queries <- function(conn, ## validate argument query_types query_types <- match.arg(query_types, c("missing", "not missing", "both")) + ## fetch metadata events + m_events <- meta_events(conn) + + event_choices <- paste( + m_events$unique_event_name, + m_events$event_name, + sep = ", ", + collapse = " | " + ) + ## fetch metadata dictionary dict$field_label <- string_squish(dict$field_label) - dict_check <- expand_checkbox(dict) + + dict_check <- expand_checkbox(dict) %>% + add_row( + field_name = "redcap_event_name", + field_label = "Event Name", + field_type = "radio", + choices = event_choices + ) ## fetch metadata exported fields exported_fields <- meta_fields(conn) diff --git a/R/translate_logic.R b/R/translate_logic.R index 672516c..9eb5d99 100644 --- a/R/translate_logic.R +++ b/R/translate_logic.R @@ -181,6 +181,7 @@ translate_prep <- function(x) { x <- gsub("[[:space:]]*<>[[:space:]]*", " != ", x) x <- gsub("[[:space:]]*>(?![=])[[:space:]]*", " > ", x, perl = TRUE) x <- gsub("[[:space:]]*<(?![=])[[:space:]]*", " < ", x, perl = TRUE) + x <- gsub("\\[event\\-name\\]", "[redcap_event_name]", x) x <- gsub("([[]|[]])", "", x) x <- gsub("\"", "\'", x) str2lang(x)