mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-22 13:30:23 +01:00
includes read_redcap_table
This commit is contained in:
parent
be3969d007
commit
edafc35806
@ -1,11 +1,10 @@
|
|||||||
Package: REDCapRITS
|
Package: REDCapRITS
|
||||||
Title: REDCap Repeating Instrument Table Splitter Fork
|
Title: REDCap Repeating Instrument Table Splitter Fork
|
||||||
Version: 0.2.2.1
|
Version: 0.2.3
|
||||||
Authors@R: c(
|
Authors@R: c(
|
||||||
person("Paul", "Egeler", email = "paul.egeler@spectrumhealth.org", role = c("aut")),
|
person("Paul", "Egeler", email = "paul.egeler@spectrumhealth.org", role = c("aut")),
|
||||||
person("Andreas Gammelgaard", "Damsbo", email = "agdamsbo@clin.au.dk", role = c("cre", "ctb","cph"),
|
person("Andreas Gammelgaard", "Damsbo", email = "agdamsbo@clin.au.dk", role = c("cre", "ctb","cph"),
|
||||||
comment = c(ORCID = "0000-0002-7559-1154")))
|
comment = c(ORCID = "0000-0002-7559-1154")))
|
||||||
Copyright: Spectrum Health, Grand Rapids, MI
|
|
||||||
Description: This is a fork of REDCapRITS by Paul Egeler and Spectrum Health. See
|
Description: This is a fork of REDCapRITS by Paul Egeler and Spectrum Health. See
|
||||||
[https://github.com/SpectrumHealthResearch/REDCapRITS](https://github.com/SpectrumHealthResearch/REDCapRITS).
|
[https://github.com/SpectrumHealthResearch/REDCapRITS](https://github.com/SpectrumHealthResearch/REDCapRITS).
|
||||||
Split REDCap repeating instruments output into multiple tables.
|
Split REDCap repeating instruments output into multiple tables.
|
||||||
@ -32,7 +31,10 @@ LazyData: true
|
|||||||
RoxygenNote: 7.2.3
|
RoxygenNote: 7.2.3
|
||||||
URL: https://github.com/agdamsbo/REDCapRITS
|
URL: https://github.com/agdamsbo/REDCapRITS
|
||||||
BugReports: https://github.com/agdamsbo/REDCapRITS/issues
|
BugReports: https://github.com/agdamsbo/REDCapRITS/issues
|
||||||
|
Imports:
|
||||||
|
REDCapR
|
||||||
Collate:
|
Collate:
|
||||||
'utils.r'
|
'utils.r'
|
||||||
'process_user_input.r'
|
'process_user_input.r'
|
||||||
'REDCap_split.r'
|
'REDCap_split.r'
|
||||||
|
'read_redcap_tables.R'
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
# Generated by roxygen2: do not edit by hand
|
# Generated by roxygen2: do not edit by hand
|
||||||
|
|
||||||
export(REDCap_split)
|
export(REDCap_split)
|
||||||
|
export(read_redcap_tables)
|
||||||
|
importFrom(REDCapR,redcap_metadata_read)
|
||||||
|
importFrom(REDCapR,redcap_read)
|
||||||
|
71
R/read_redcap_tables.R
Normal file
71
R/read_redcap_tables.R
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#' Download REDCap data
|
||||||
|
#'
|
||||||
|
#' Wrapper function for using REDCapR::redcap_read and REDCapRITS::REDCap_split
|
||||||
|
#' including some clean-up. Works with longitudinal projects with repeating
|
||||||
|
#' instruments.
|
||||||
|
#' @param uri REDCap database uri
|
||||||
|
#' @param token API token
|
||||||
|
#' @param records records to download
|
||||||
|
#' @param fields fields to download
|
||||||
|
#' @param events events to download
|
||||||
|
#' @param forms forms to download
|
||||||
|
#' @param raw_or_label raw or label tags
|
||||||
|
#' @param generics vector of auto-generated generic variable names to
|
||||||
|
#' ignore when discarding empty rows
|
||||||
|
#' @param ... ekstra parameters for REDCapR::redcap_read_oneshot
|
||||||
|
#'
|
||||||
|
#' @return list of instruments
|
||||||
|
#' @importFrom REDCapR redcap_metadata_read redcap_read
|
||||||
|
#' @export
|
||||||
|
#'
|
||||||
|
#' @examples
|
||||||
|
#' # Examples will be provided later
|
||||||
|
read_redcap_tables <- function(uri,
|
||||||
|
token,
|
||||||
|
records = NULL,
|
||||||
|
fields = NULL,
|
||||||
|
events = NULL,
|
||||||
|
forms = NULL,
|
||||||
|
raw_or_label = "label",
|
||||||
|
generics = c(
|
||||||
|
"record_id",
|
||||||
|
"redcap_event_name",
|
||||||
|
"redcap_repeat_instrument",
|
||||||
|
"redcap_repeat_instance"
|
||||||
|
),
|
||||||
|
...) {
|
||||||
|
# Notes to self: Based on the metadata, this functionality could be
|
||||||
|
# introduced without using the REDCapRITS package.. To be tried..
|
||||||
|
#
|
||||||
|
# This does not handle repeated instruments!! This should be implemented.
|
||||||
|
|
||||||
|
d <- REDCapR::redcap_read_oneshot(
|
||||||
|
redcap_uri = uri,
|
||||||
|
token = token,
|
||||||
|
fields = fields,
|
||||||
|
events = events,
|
||||||
|
forms = forms,
|
||||||
|
records = records,
|
||||||
|
raw_or_label = raw_or_label,
|
||||||
|
...
|
||||||
|
)
|
||||||
|
|
||||||
|
m <-
|
||||||
|
REDCapR::redcap_metadata_read (redcap_uri = uri, token = token)
|
||||||
|
|
||||||
|
l <- REDCap_split(d$data,
|
||||||
|
m$data[m$data$field_name %in% names(d$data), ],
|
||||||
|
forms = "all")
|
||||||
|
|
||||||
|
lapply(l, function(i) {
|
||||||
|
if (ncol(i) > 2) {
|
||||||
|
s <- data.frame(i[, !colnames(i) %in% generics])
|
||||||
|
i[!apply(is.na(s), MARGIN = 1, FUN = all), ]
|
||||||
|
} else {
|
||||||
|
i
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
50
man/read_redcap_tables.Rd
Normal file
50
man/read_redcap_tables.Rd
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
% Generated by roxygen2: do not edit by hand
|
||||||
|
% Please edit documentation in R/read_redcap_tables.R
|
||||||
|
\name{read_redcap_tables}
|
||||||
|
\alias{read_redcap_tables}
|
||||||
|
\title{Download REDCap data}
|
||||||
|
\usage{
|
||||||
|
read_redcap_tables(
|
||||||
|
uri,
|
||||||
|
token,
|
||||||
|
records = NULL,
|
||||||
|
fields = NULL,
|
||||||
|
events = NULL,
|
||||||
|
forms = NULL,
|
||||||
|
raw_or_label = "label",
|
||||||
|
generics = c("record_id", "redcap_event_name", "redcap_repeat_instrument",
|
||||||
|
"redcap_repeat_instance"),
|
||||||
|
...
|
||||||
|
)
|
||||||
|
}
|
||||||
|
\arguments{
|
||||||
|
\item{uri}{REDCap database uri}
|
||||||
|
|
||||||
|
\item{token}{API token}
|
||||||
|
|
||||||
|
\item{records}{records to download}
|
||||||
|
|
||||||
|
\item{fields}{fields to download}
|
||||||
|
|
||||||
|
\item{events}{events to download}
|
||||||
|
|
||||||
|
\item{forms}{forms to download}
|
||||||
|
|
||||||
|
\item{raw_or_label}{raw or label tags}
|
||||||
|
|
||||||
|
\item{generics}{vector of auto-generated generic variable names to
|
||||||
|
ignore when discarding empty rows}
|
||||||
|
|
||||||
|
\item{...}{ekstra parameters for REDCapR::redcap_read_oneshot}
|
||||||
|
}
|
||||||
|
\value{
|
||||||
|
list of instruments
|
||||||
|
}
|
||||||
|
\description{
|
||||||
|
Wrapper function for using REDCapR::redcap_read and REDCapRITS::REDCap_split
|
||||||
|
including some clean-up. Works with longitudinal projects with repeating
|
||||||
|
instruments.
|
||||||
|
}
|
||||||
|
\examples{
|
||||||
|
# Examples will be provided later
|
||||||
|
}
|
7
tests/testthat/test-read_redcap_tables.R
Normal file
7
tests/testthat/test-read_redcap_tables.R
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Unit Test
|
||||||
|
|
||||||
|
# Test that the function throws an error when uri and token are not provided
|
||||||
|
test_that("read_redcap_tables throws error when uri and token are not provided",
|
||||||
|
{
|
||||||
|
testthat::expect_error(read_redcap_tables(uri, token))
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user