# REDCapCAST package  Casting metadata for REDCap database creation and handling of castellated data using repeated instruments and longitudinal projects in REDCap. This is implemented with - An app-interface for easy database creation [accessible here](https://agdamsbo.shinyapps.io/redcapcast/) or available to run locally with [`shiny_cast()`](https://agdamsbo.github.io/REDCapCAST/reference/shiny_cast.md) allowing you to easily create a REDCap database based on an existing spreadsheet. - Export data from REDCap in different formats handling castellated data, and on default only export requested data, this is mainly through [`read_redcap_tables()`](https://agdamsbo.github.io/REDCapCAST/reference/read_redcap_tables.md). REDCapCAST was initially build on, and still includes code from [pegeler/REDCapRITS](https://github.com/pegeler/REDCapRITS), and relies on functions from the [`REDCapR`](https://ouhscbbmc.github.io/REDCapR/)-project ## History This package was originally forked from [pegeler/REDCapRITS](https://github.com/pegeler/REDCapRITS). The `REDCapRITS` represents great and extensive work to handle castellated REDCap data in different programming languages. REDCapCAST has evolved into much more than just handling castellated data and so has been detatched from the original project while still relying on the main `REDCap_split` function. All access to the REDCap database is build on the outstanding work in [`REDCapR`](#id_0). This package really started out of frustration during my PhD in health science hearing colleagues complaining about that “castellated” data formatting of REDCap exports when doing longitudinal projects and being used to wide data. This led to some bad decisions in building databases avoiding repeated instruments. This package solves these challenges, but solutions are also implemented else where like the [redcapAPI](https://github.com/vubiostat/redcapAPI) or [REDCapTidieR](https://github.com/CHOP-CGTInformatics/REDCapTidieR) packages, which are bigger project. To help new PhD students and other researchers, I have also worked on creating a few helper/wrapper-functions to ease data access. Documentation is on it’s way. For any more advanced uses, consider using the [`redcapAPI`](https://github.com/vubiostat/redcapAPI) or [`REDCapR`](https://ouhscbbmc.github.io/REDCapR/) packages. ## Future The plan with this package is to be bundled with a Handbook on working with REDCap from R. This work is in progress but is limited by the time available. Please feel free to contact me or create and issue with ideas for future additions. ## Installation and use The package is available on CRAN. Install the latest version: install.packages("REDCapCAST") Install the latest version directly from GitHub: require("remotes") remotes::install_github("agdamsbo/REDCapCAST") Launch the REDCapCAST app interface directly on your own machine: REDCapCAST::shiny_cast() ## Code of Conduct Please note that the REDCapCAST project is released with a [Contributor Code of Conduct](https://agdamsbo.github.io/REDCapCAST/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. # Package index ## All functions - [`REDCap_split()`](https://agdamsbo.github.io/REDCapCAST/reference/REDCap_split.md) : Split REDCap repeating instruments table into multiple tables - [`all_na()`](https://agdamsbo.github.io/REDCapCAST/reference/all_na.md) : Check if vector is all NA - [`apply_factor_labels()`](https://agdamsbo.github.io/REDCapCAST/reference/apply_factor_labels.md) : Preserve all factor levels from REDCap data dictionary in data export - [`apply_field_label()`](https://agdamsbo.github.io/REDCapCAST/reference/apply_field_label.md) : Apply REDCap filed labels to data frame - [`as_factor()`](https://agdamsbo.github.io/REDCapCAST/reference/as_factor.md) : Convert labelled vectors to factors while preserving attributes - [`as_logical()`](https://agdamsbo.github.io/REDCapCAST/reference/as_logical.md) : Interpret specific binary values as logicals - [`case_match_regex_list()`](https://agdamsbo.github.io/REDCapCAST/reference/case_match_regex_list.md) : List-base regex case_when - [`cast_data_overview()`](https://agdamsbo.github.io/REDCapCAST/reference/cast_data_overview.md) : Overview of REDCapCAST data for shiny - [`cast_meta_overview()`](https://agdamsbo.github.io/REDCapCAST/reference/cast_meta_overview.md) : Overview of REDCapCAST meta data for shiny - [`char2choice()`](https://agdamsbo.github.io/REDCapCAST/reference/char2choice.md) : Simple function to generate REDCap choices from character vector - [`char2cond()`](https://agdamsbo.github.io/REDCapCAST/reference/char2cond.md) : Simple function to generate REDCap branching logic from character vector - [`clean_field_label()`](https://agdamsbo.github.io/REDCapCAST/reference/clean_field_label.md) : Very simple function to remove rich text formatting from field label and save the first paragraph ('\
...\
'). - [`clean_redcap_name()`](https://agdamsbo.github.io/REDCapCAST/reference/clean_redcap_name.md) : clean_redcap_name - [`compact_vec()`](https://agdamsbo.github.io/REDCapCAST/reference/compact_vec.md) : Compacting a vector of any length with or without names - [`create_html_table()`](https://agdamsbo.github.io/REDCapCAST/reference/create_html_table.md) : Create two-column HTML table for data piping in REDCap instruments - [`create_instrument_meta()`](https://agdamsbo.github.io/REDCapCAST/reference/create_instrument_meta.md) : DEPRICATED Create zips file with necessary content based on data set - [`cut_string_length()`](https://agdamsbo.github.io/REDCapCAST/reference/cut_string_length.md) : Cut string to desired length - [`d2w()`](https://agdamsbo.github.io/REDCapCAST/reference/d2w.md) : Convert single digits to words - [`doc2dd()`](https://agdamsbo.github.io/REDCapCAST/reference/doc2dd.md) : Doc table to data dictionary - EARLY, DOCS MISSING - [`ds2dd()`](https://agdamsbo.github.io/REDCapCAST/reference/ds2dd.md) : (DEPRECATED) Data set to data dictionary function - [`ds2dd_detailed()`](https://agdamsbo.github.io/REDCapCAST/reference/ds2dd_detailed.md) : Extract data from stata file for data dictionary - [`easy_redcap()`](https://agdamsbo.github.io/REDCapCAST/reference/easy_redcap.md) : Secure API key storage and data acquisition in one - [`export_redcap_instrument()`](https://agdamsbo.github.io/REDCapCAST/reference/export_redcap_instrument.md) : Creates zip-file with necessary content to manually add instrument to database - [`fct2num()`](https://agdamsbo.github.io/REDCapCAST/reference/fct2num.md) : Allows conversion of factor to numeric values preserving original levels - [`fct_drop()`](https://agdamsbo.github.io/REDCapCAST/reference/fct_drop.md) : Drop unused levels preserving label data - [`file_extension()`](https://agdamsbo.github.io/REDCapCAST/reference/file_extension.md) : DEPRECATED Helper to import files correctly - [`focused_metadata()`](https://agdamsbo.github.io/REDCapCAST/reference/focused_metadata.md) : focused_metadata - [`format_redcap_factor()`](https://agdamsbo.github.io/REDCapCAST/reference/format_redcap_factor.md) : Converts REDCap choices to factor levels and stores in labels attribute - [`format_subheader()`](https://agdamsbo.github.io/REDCapCAST/reference/format_subheader.md) : Sub-header formatting wrapper - [`get_api_key()`](https://agdamsbo.github.io/REDCapCAST/reference/get_api_key.md) : Retrieve project API key if stored, if not, set and retrieve - [`get_attr()`](https://agdamsbo.github.io/REDCapCAST/reference/get_attr.md) : Extract attribute. Returns NA if none - [`get_id_name()`](https://agdamsbo.github.io/REDCapCAST/reference/get_id_name.md) : Get the id name - [`guess_time_only()`](https://agdamsbo.github.io/REDCapCAST/reference/guess_time_only.md) : Guess time variables based on naming pattern - [`guess_time_only_filter()`](https://agdamsbo.github.io/REDCapCAST/reference/guess_time_only_filter.md) : Try at determining which are true time only variables - [`haven_all_levels()`](https://agdamsbo.github.io/REDCapCAST/reference/haven_all_levels.md) : Finish incomplete haven attributes substituting missings with values - [`hms2character()`](https://agdamsbo.github.io/REDCapCAST/reference/hms2character.md) : Change "hms" to "character" for REDCap upload. - [`html_tag_wrap()`](https://agdamsbo.github.io/REDCapCAST/reference/html_tag_wrap.md) : Simple html tag wrapping for REDCap text formatting - [`is.labelled()`](https://agdamsbo.github.io/REDCapCAST/reference/is.labelled.md) : Tests for multiple label classes - [`is_missing()`](https://agdamsbo.github.io/REDCapCAST/reference/is_missing.md) : Multi missing check - [`is_repeated_longitudinal()`](https://agdamsbo.github.io/REDCapCAST/reference/is_repeated_longitudinal.md) : Test if repeatable or longitudinal - [`mark_complete()`](https://agdamsbo.github.io/REDCapCAST/reference/mark_complete.md) : Completion marking based on completed upload - [`match_fields_to_form()`](https://agdamsbo.github.io/REDCapCAST/reference/match_fields_to_form.md) : Match fields to forms - [`mtcars_redcap`](https://agdamsbo.github.io/REDCapCAST/reference/mtcars_redcap.md) : mtcars dataset slightly modified to use for Shiny app upload demonstration - [`named_levels()`](https://agdamsbo.github.io/REDCapCAST/reference/named_levels.md) : Get named vector of factor levels and values - [`nav_bar_page()`](https://agdamsbo.github.io/REDCapCAST/reference/nav_bar_page.md) : Nav_bar defining function for shiny ui - [`numchar2fct()`](https://agdamsbo.github.io/REDCapCAST/reference/numchar2fct.md) : Applying var2fct across data set - [`parse_data()`](https://agdamsbo.github.io/REDCapCAST/reference/parse_data.md) : Helper to auto-parse un-formatted data with haven and readr - [`possibly_numeric()`](https://agdamsbo.github.io/REDCapCAST/reference/possibly_numeric.md) : Tests if vector can be interpreted as numeric without introducing NAs by coercion - [`possibly_roman()`](https://agdamsbo.github.io/REDCapCAST/reference/possibly_roman.md) : Test if vector can be interpreted as roman numerals - [`process_user_input()`](https://agdamsbo.github.io/REDCapCAST/reference/process_user_input.md) : User input processing - [`process_user_input(`*`