Skip to content

Commit

Permalink
Merge pull request #170 from CHOP-CGTInformatics/joss-feedback-1
Browse files Browse the repository at this point in the history
JOSS Feedback Round 1
  • Loading branch information
rsh52 authored Jan 29, 2024
2 parents 0eb5790 + a2e6354 commit 78af9f8
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 20 deletions.
10 changes: 5 additions & 5 deletions paper/paper.bib
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,11 @@ @Manual{redcapr_cit

@Manual{redcapapi_cit,
title = {{redcapAPI}: Accessing data from REDCap projects using the API},
author = {Benjamin Nutter and Stephen Lane},
year = {2023},
doi = {10.5281/zenodo.11826},
note = {R package version 2.8.0},
url = {https://github.com/nutterb/redcapAPI/wiki},
author = {Shawn Garbett and Benjamin Nutter and Stephen Lane and Will Beasley and Jeffrey Horner and Jeremy Stephens and Marcus Lehr and Cole Beck and Savannah Obregon},
year = {2024},
doi = {10.5281/zenodo.10564837},
note = {R package version 2.8.3},
url = {https://github.com/vubiostat/redcapAPI},
}

@Manual{redcapdm_cit,
Expand Down
6 changes: 3 additions & 3 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ As of 2023, the REDCap Consortium boasts nearly 3 million users across over 150

REDCap databases that contain repeating events and instruments require significant manual pre-processing, a major pain point for researchers and analysts. This is because the REDCap API returns a single table (Figure 1) that includes data from instruments that record data at different levels of granularity.

While there are a few existing REDCap tools (Table 1), `REDCapTidieR` occupies a unique space by providing analysts with a framework returns a tidy data structure regardless of the size or complexity of the extracted database. Although some of these tools also offer functions for data processing, such as the [`tidyREDCap`](https://raymondbalise.github.io/tidyREDCap/) [@tidyredcap_cit] and [`REDCapDM`](https://ubidi.github.io/REDCapDM/index.html) [@redcapdm_cit] packages, only `REDCapTidieR` restructures the block matrix into an easy to use format.
While several existing REDCap packages are available (Table 1), `REDCapTidieR` distinguishes itself by offering analysts a unique framework that returns a tidy data structure regardless of the size or complexity of the extracted database. Packages such as [`tidyREDCap`](https://raymondbalise.github.io/tidyREDCap/) [@tidyredcap_cit] and [`REDCapDM`](https://ubidi.github.io/REDCapDM/index.html) [@redcapdm_cit] also offer tools for data processing, while `redcapAPI` gives a wealth of options for data export in addition to features that break apart the block matrix using a base R framework. However, only `REDCapTidieR` deconstructs the block matrix into easily joinable tidy tables that form their own composite primary keys to preserve the relationships between each other in accordance with their unique granularity.

`REDCapTidieR` is built with production readiness in mind. In addition to an extensive 98% coverage test suite, `REDCapTidieR` execution is evaluated against 15 test databases that cover many complex configuration scenarios. It also provides ample documentation through a `pkgdown` [site](https://chop-cgtinformatics.github.io/REDCapTidieR/index.html) [@redcaptidier_pkgdown_cit]. It is also built on top of `REDCapR`, which contains its own extensive test suite, and evaluated against an additional 26 test databases. `REDCapTidieR` meets the rigorous requirements of the [OpenSSF Best Practices Badge](https://www.bestpractices.dev/en/projects/6845) [@openssf_cit], which certifies open-source projects that adhere to criteria for delivering high-quality, robust, and secure software.

Expand All @@ -78,7 +78,7 @@ Table 1: Comparative breakdown of the landscape for REDCap tools in R.

# Design

The `REDCapTidieR::read_redcap()` function leverages `REDCapR` to make API calls to query the data and metadata of a REDCap project and returns the supertibble (Figure 1). The supertibble, named after the [`tibble` package](https://tibble.tidyverse.org/) [@tibble_cit], is an alternative presentation of the data in which multiple tables are linked together in a single object in a fashion consistent with tidy data principles.
The `REDCapTidieR::read_redcap()` function leverages `REDCapR` to make API calls to query the data and metadata of a REDCap project and returns the supertibble (Figure 1). The supertibble, named after the [`tibble` package](https://tibble.tidyverse.org/) [@tibble_cit], is an alternative presentation of the data in which multiple tables are linked together in a single object in a fashion consistent with tidy data principles. Specific data tibbles within the supertibble, representing the data of individual REDCap instruments, can be easily joined using their composite primary keys.

![The REDCapTidieR Supertibble](images/Figure1.png)

Expand All @@ -94,7 +94,7 @@ Figure 1: The REDCapTidieR supertibble shown in the Data Viewer of the RStudio I

# Acknowledgements

We would like to thank Will Beasley, Paul Wildenhain, and Jan Marvin for their feedback and support in development.
We would like to thank Jan Marvin and Raymond Balise for their feedback and support in development.

This package was developed by the [Cell and Gene Therapy Informatics Team](https://www.chop.edu/centers-programs/cell-and-gene-therapy-informatics-team/our-team) of the [Children’s Hospital of Philadelphia](https://www.chop.edu).

Expand Down
24 changes: 12 additions & 12 deletions renv.lock
Original file line number Diff line number Diff line change
Expand Up @@ -281,14 +281,14 @@
},
"cli": {
"Package": "cli",
"Version": "3.6.1",
"Version": "3.6.2",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"utils"
],
"Hash": "89e6d8219950eac806ae0c489052048a"
"Hash": "1216ac65ac55ec0058a6f75d7ca0fd52"
},
"clipr": {
"Package": "clipr",
Expand Down Expand Up @@ -942,7 +942,7 @@
},
"knitr": {
"Package": "knitr",
"Version": "1.44",
"Version": "1.45",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
Expand All @@ -954,7 +954,7 @@
"xfun",
"yaml"
],
"Hash": "60885b9f746c9dfaef110d070b5f7dc0"
"Hash": "1ec462871063897135c1bcbe0fc8f07d"
},
"labelled": {
"Package": "labelled",
Expand Down Expand Up @@ -1519,14 +1519,14 @@
},
"rlang": {
"Package": "rlang",
"Version": "1.1.1",
"Version": "1.1.3",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"utils"
],
"Hash": "a85c767b55f0bf9b7ad16c6d7baee5bb"
"Hash": "42548638fae05fd9a9b5f3f437fbbbe2"
},
"rmarkdown": {
"Package": "rmarkdown",
Expand Down Expand Up @@ -1717,22 +1717,22 @@
},
"stringi": {
"Package": "stringi",
"Version": "1.7.12",
"Version": "1.8.3",
"Source": "Repository",
"Repository": "CRAN",
"Repository": "RSPM",
"Requirements": [
"R",
"stats",
"tools",
"utils"
],
"Hash": "ca8bd84263c77310739d2cf64d84d7c9"
"Hash": "058aebddea264f4c99401515182e656a"
},
"stringr": {
"Package": "stringr",
"Version": "1.5.0",
"Version": "1.5.1",
"Source": "Repository",
"Repository": "CRAN",
"Repository": "RSPM",
"Requirements": [
"R",
"cli",
Expand All @@ -1743,7 +1743,7 @@
"stringi",
"vctrs"
],
"Hash": "671a4d384ae9d32fc47a14e98bfa3dc8"
"Hash": "960e2ae9e09656611e0b8214ad543207"
},
"styler": {
"Package": "styler",
Expand Down
1 change: 1 addition & 0 deletions tests/testthat/test-write.R
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,7 @@ test_that("bind_supertbl_metadata works", {

test_that("Combining skimr, labelled, and xlsx returns expected snapshot", {
skip_on_cran()
skip_on_ci()
out <-
read_redcap(Sys.getenv("REDCAP_URI"), Sys.getenv("REDCAPTIDIER_CLASSIC_API")) %>%
# Suppress expected warnings from the REDCapTidieR Classic database.
Expand Down

0 comments on commit 78af9f8

Please sign in to comment.