# Database-creation ``` r library(REDCapCAST) ``` ## Two different ways to create a data base `REDCapCAST` provides two approaches to creating a data dictionary aimed at helping out in two different cases: 1. Easily create a REDCap data base from an existing data set. 2. Create a table in Word describing a variables in a data base and use this to create a data base. In the following I will try to come with a few suggestions on how to use these approaches. ### Easy data set to data base workflow The first iteration of a dataset to data dictionary function is the [`ds2dd()`](https://agdamsbo.github.io/REDCapCAST/reference/ds2dd.md), which creates a very basic data dictionary with all variables stored as text. This is sufficient for just storing old datasets/spreadsheets securely in REDCap. ``` r d1 <- mtcars |> dplyr::mutate(record_id = seq_len(dplyr::n())) |> ds2dd() d1 |> gt::gt() ``` The more advanced [`ds2dd_detailed()`](https://agdamsbo.github.io/REDCapCAST/reference/ds2dd_detailed.md) is a natural development. It will try to apply the most common data classes for data validation and will assume that the first column is the id number. It outputs a list with the dataset with modified variable names to comply with REDCap naming conventions and a data dictionary. The dataset should be correctly formatted for the data dictionary to preserve as much information as possible. ``` r d2 <- REDCapCAST::redcapcast_data |> dplyr::mutate(record_id = seq_len(dplyr::n()), region=factor(region)) |> dplyr::select(record_id, dplyr::everything()) |> (\(.x){ .x[!grepl("_complete$",names(.x))] })() |> (\(.x){ .x[!grepl("^redcap",names(.x))] })() |> ds2dd_detailed() |> purrr::pluck("meta") d2 |> gt::gt() ``` Additional specifications to the DataDictionary can be made manually, or it can be uploaded and modified manually in the graphical user interface on the REDCap server. ### Data base from table …instructions and examples are coming… ### Meta data and data upload Now the DataDictionary can be exported as a spreadsheet and uploaded or it can be uploaded using the `REDCapR` package (only projects with “Development” status). Use one of the two approaches below: #### Manual upload ``` r write.csv(dd_ls$meta, "datadictionary.csv") ``` #### Upload with `REDCapR` ``` r REDCapR::redcap_metadata_write( dd_ls$meta, redcap_uri = keyring::key_get("DB_URI"), token = keyring::key_get("DB_TOKEN") ) ``` In the [“REDCap R Handbook”](https://agdamsbo.github.io/redcap-r-handbook/) more is written on interfacing with REDCap in R using the [`library(keyring)`](https://keyring.r-lib.org/)to store credentials in [chapter 1.1](https://agdamsbo.github.io/redcap-r-handbook/doc/access.html#sec-getting-access). ### Step 4 - Data upload The same two options are available for data upload as meta data upload: manual or through `REDCapR`. Only the latter is shown here. ``` r REDCapR::redcap_write( dd_ls$data, redcap_uri = keyring::key_get("DB_URI"), token = keyring::key_get("DB_TOKEN") ) ```