polished redcap import and code export

This commit is contained in:
Andreas Gammelgaard Damsbo 2025-05-10 11:30:36 +02:00
parent 1613386096
commit 1b45c3fabf
No known key found for this signature in database
2 changed files with 66 additions and 13 deletions

View file

@ -200,9 +200,12 @@ m_redcap_readServer <- function(id) {
)
# browser()
shiny::withProgress({
imported <- try(rlang::exec(REDCapR::redcap_metadata_read, !!!parameters), silent = TRUE)
},message = paste("Connecting to",data_rv$uri))
shiny::withProgress(
{
imported <- try(rlang::exec(REDCapR::redcap_metadata_read, !!!parameters), silent = TRUE)
},
message = paste("Connecting to", data_rv$uri)
)
## TODO: Simplify error messages
if (inherits(imported, "try-error") || NROW(imported) < 1 || ifelse(is.list(imported), !isTRUE(imported$success), FALSE)) {
@ -228,7 +231,7 @@ m_redcap_readServer <- function(id) {
status = "success",
include_data_alert(
see_data_text = "Click to see data dictionary",
dataIdName = "see_data",
dataIdName = "see_dd",
extra = tags$p(
tags$b(phosphoricons::ph("check", weight = "bold"), "Connected to server!"),
glue::glue("The {data_rv$info$project_title} project is loaded.")
@ -254,8 +257,8 @@ m_redcap_readServer <- function(id) {
output$connect_success <- shiny::reactive(identical(data_rv$dd_status, "success"))
shiny::outputOptions(output, "connect_success", suspendWhenHidden = FALSE)
shiny::observeEvent(input$see_data, {
datamods::show_data(
shiny::observeEvent(input$see_dd, {
show_data(
purrr::pluck(data_rv$dd_list, "data"),
title = "Data dictionary",
type = "modal",
@ -264,6 +267,17 @@ m_redcap_readServer <- function(id) {
)
})
shiny::observeEvent(input$see_data, {
show_data(
# purrr::pluck(data_rv$dd_list, "data"),
data_rv$data,
title = "Imported data set",
type = "modal",
show_classes = FALSE,
tags$b("Preview:")
)
})
arms <- shiny::reactive({
shiny::req(input$api)
shiny::req(data_rv$uri)
@ -378,13 +392,24 @@ m_redcap_readServer <- function(id) {
imported <- try(rlang::exec(REDCapCAST::read_redcap_tables, !!!parameters), silent = TRUE)
})
code <- rlang::call2("read_redcap_tables",
!!!utils::modifyList(parameters, list(token = "PERSONAL_API_TOKEN")), ,
parameters_code <- parameters[c("uri", "fields", "events", "raw_or_label", "filter_logic")]
code <- rlang::call2(
"easy_redcap",
!!!utils::modifyList(
parameters_code,
list(
data_format = ifelse(
input$data_type == "long" && !is.null(input$data_type),
"long",
"wide"
),
project.name = simple_snake(data_rv$info$project_title)
)
),
.ns = "REDCapCAST"
)
# browser()
if (inherits(imported, "try-error") || NROW(imported) < 1) {
data_rv$data_status <- "error"
data_rv$data_list <- NULL
@ -453,9 +478,17 @@ m_redcap_readServer <- function(id) {
datamods:::insert_alert(
selector = ns("retrieved"),
status = data_rv$data_status,
tags$p(
tags$b(phosphoricons::ph("check", weight = "bold"), "Success!"),
data_rv$data_message
# tags$p(
# tags$b(phosphoricons::ph("check", weight = "bold"), "Success!"),
# data_rv$data_message
# ),
include_data_alert(
see_data_text = "Click to see the imported data",
dataIdName = "see_data",
extra = tags$p(
tags$b(phosphoricons::ph("check", weight = "bold"), data_rv$data_message)
),
btn_show_data = TRUE
)
)
} else {

20
man/simple_snake.Rd Normal file
View file

@ -0,0 +1,20 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/helpers.R
\name{simple_snake}
\alias{simple_snake}
\title{Simplified version of the snakecase packages to_snake_case}
\usage{
simple_snake(data)
}
\arguments{
\item{data}{character string vector}
}
\value{
vector
}
\description{
Simplified version of the snakecase packages to_snake_case
}
\examples{
c("foo bar", "fooBar21", "!!Foo'B'a-r", "foo_bar", "F OO bar") |> simple_snake()
}