Skip to contents

R-CMD-check License: MIT Lifecycle: experimental

Overview

Clinical dataset submission infrastructure for FDA, PMDA, and EMA regulatory workflows. Replace metacore + xportr + Pinnacle 21 — pure R, no compiled code, no Python, no network calls.

5  submit()             package + validate + manifest
4  validate()           CDISC CORE + FDA/PMDA + spec conformance
3  write_define_xml()   Define-XML 2.1 with ARM support
2  set_label/fmt/len    spec-driven metadata
1  herald_spec          unified spec object (Excel / Define-XML)
0  read_xpt/write_xpt   SAS V5/V8 transport I/O

Installation

pak::pak("vthanik/herald")

Usage

library(herald)

# Read spec (Pinnacle 21 Excel or Define-XML 2.1)
spec <- read_spec("spec.xlsx")

# Apply metadata to datasets
dm <- read_xpt("sdtm/dm.xpt")
dm <- apply_spec(dm, spec, domain = "DM")

# Write back
write_xpt(dm, "sdtm/dm.xpt")

# Validate
result <- validate("sdtm/", spec = spec)

# Generate Define-XML
write_define_xml("sdtm/", spec = spec, output = "define.xml")

# Package for submission
submit("sdtm/", spec = spec, output = "submission/")

Supported standards

Validation configs

Authority Standard Versions
FDA SDTM-IG 3.2, 3.3
FDA ADaM-IG 1.1, 1.2
FDA Define-XML 2.1
PMDA SDTM-IG 3.2, 3.3
PMDA ADaM-IG 1.1
PMDA Define-XML 2.1

I/O formats

Format Versions
SAS Transport (XPT) V5 (FDA standard), V8 (extended)
CDISC Dataset-JSON v1.1

Controlled terminology (NCI EVS 2025-09-26)

Package Codelists
SDTM CT 1,181 (267 extensible, 911 non-extensible)
ADaM CT 23

3,761 rules bundled: CDISC CORE, FDA v1.6, PMDA v6.0, herald gap-fill.

Code of conduct

Please note that the herald project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.