Projects

The goal of REDCapSync is to encapsulate a REDCap project into a standardized object. R6 gives a way of keeping some elements internal to the object. Behind-the-scenes is an R list where all of the metadata and data is stored.

TEST_CLASSIC <- load_project(project_name = "TEST_CLASSIC")
#> ✔ Loaded TEST_CLASSIC: '/Users/brandonrose/Library/CloudStorage/OneDrive-UniversityofTexasSouthwestern/Research/Test'
listviewer::jsonedit(TEST_CLASSIC$.internal)

The R6 object contains those things behind-the-scenes but then uses several to build an environment. This allows project$sync() to update project without having to do project <- project |> sync_something() |> another_function()

project <- load_project("TEST_CLASSIC")
#> ✔ Loaded TEST_CLASSIC: '/Users/brandonrose/Library/CloudStorage/OneDrive-UniversityofTexasSouthwestern/Research/Test'

# projects have read-only active bindings
names(REDCapSyncProject$active)
#> [1] "project_name" "dir_path"     "data"         "metadata"     "redcap"      
#> [6] ".internal"

# projects have public methods
names(REDCapSyncProject$public_methods) |> setdiff("initialize")
#>  [1] "print"             "sync"              "add_dataset"      
#>  [4] "load_dataset"      "remove_datasets"   "generate_dataset" 
#>  [7] "save_datasets"     "save_dataset"      "save"             
#> [10] "set_keyring_token" "test_token"        "url_launch"       
#> [13] "url_record_launch" "upload"