get_redcap_credentials <- function(project_pid = as.numeric(NA),
server_short_name = as.character(NA),
project_short_name = as.character(NA),
project_display_name = as.character(NA),
username = as.character(NA)) {
# Verify that we have at least one parameter
if (
all(is.na(
c(
server_short_name,
username,
project_pid,
project_short_name
)
))
) {
stop("You need to define something")
}
credentials_conn <- DBI::dbConnect(RSQLite::SQLite(), Sys.getenv("CREDENTIALS_DB"))
redcap_credentials <- dplyr::tbl(credentials_conn, "credentials") |>
# Filter on any non-NA parameter
# Parameters have to be localized so that will not be seen as columns in the data frame
dplyr::filter(is.na(!!project_pid) | .data$project_id == !!project_pid) |>
dplyr::filter(is.na(!!server_short_name) | .data$server_short_name == !!server_short_name) |>
dplyr::filter(is.na(!!project_short_name) | .data$project_short_name == !!project_short_name) |>
dplyr::filter(is.na(!!username) | .data$username == !!username) |>
dplyr::collect() |>
# Make a copy of redcap_uri to make redcapAPI coding a tiny bit simpler
dplyr::mutate(url = redcap_uri)
DBI::dbDisconnect(credentials_conn)
return(redcap_credentials)
}
Formalize this code into an R function
Here's a calling example
Then destroy these functions: