The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Getting Started with rCoreGage

Installation

install.packages("rCoreGage")

Create a new project

rCoreGage::create_project(
  name = "TRIAL_ABC",
  path = "C:/Projects"
)

This creates the full folder structure and copies all required templates.

Project structure created

TRIAL_ABC/
  TRIAL_ABC.Rproj
  run_coregage.R
  rules/
    config/
      rule_registry.xlsx   <- fill in your checks here
      project_config.R     <- paths auto-filled
    trial/                 <- write trial-level check scripts here
    study/                 <- write study-level check scripts here
  inputs/                  <- drop domain data files here
  outputs/
    reports/               <- Excel reports written here
    feedback/
      DM/   MW/   SDTM/   ADAM/   <- reviewers place feedback here

Define checks in rule_registry.xlsx

Open rules/config/rule_registry.xlsx. It has two sheets: Trial and Study.

Column Purpose
Category Domain grouping e.g. Adverse Events
Subcategory Check type e.g. Date Checks
ID Unique check identifier e.g. AECHK001
Active Yes = run, No = skip
DM_Report Yes = include in DM report
MW_Report Yes = include in Medical Writing report
SDTM_Report Yes = include in SDTM report
ADAM_Report Yes = include in ADaM report
Rule_Set Name of the .R file e.g. AE
Description Plain English check description
Notes Free text notes

Write a check script

Copy rules/trial/Check_Template.R, rename it to match your Rule_Set, and implement your check logic:

check_AE <- function(state, cfg) {
  domains      <- state$domains
  active_rules <- state$active_rules

  if (isTRUE(active_rules["AECHK001"])) {
    AECHK001 <- domains$ae |>
      dplyr::filter(is.na(AESEV) | trimws(AESEV) == "") |>
      dplyr::mutate(
        subj_id     = USUBJID,
        vis_id      = NA_real_,
        description = paste0("AESEV missing for: ", AETERM)
      ) |>
      dplyr::select(subj_id, vis_id, description)

    state <- collect_findings(state, AECHK001, id = "AECHK001")
  }
  state
}

Run

source("run_coregage.R")

Reports are written to outputs/reports/.

Feedback loop

  1. Send DM_issues.xlsx to the Data Manager
  2. They add notes in the REVIEW NOTE column and update STATUS
  3. They save the file to outputs/feedback/DM/
  4. Re-run source("run_coregage.R")
  5. Feedback is merged back into the next report automatically

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.