The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.

Package {openstudyval}


Type: Package
Title: Open Validator for FDA Study-Data Submissions
Version: 0.1.1
Description: Validates clinical and nonclinical study-data packages against publicly described FDA technical-rejection criteria, SAS XPORT constraints from the Study Data Technical Conformance Guide, and an extensible catalog of SDTM, SEND, and ADaM structural conformance checks. Reads a study folder of CSV, RDS, or (when the suggested package haven is installed) SAS v5/v8 transport files, optionally checks define.xml, and writes a submission-style HTML and CSV validation report. This package is an independent open-source implementation. It is not affiliated with, endorsed by, or a copy of Pinnacle 21, Certara, or the FDA.
License: MIT + file LICENSE
URL: https://github.com/shekharchalwadigrepo-hub/openstudyval
BugReports: https://github.com/shekharchalwadigrepo-hub/openstudyval/issues
Encoding: UTF-8
Language: en-US
Depends: R (≥ 4.1.0)
Imports: stats, tools, utils
Suggests: haven, xml2, knitr, rmarkdown, testthat (≥ 3.0.0)
VignetteBuilder: knitr
Config/testthat/edition: 3
RoxygenNote: 7.3.2
NeedsCompilation: no
Packaged: 2026-10-12 10:04:38 UTC; skrch
Author: Shekhar Eranna Chalwadi [aut, cre]
Maintainer: Shekhar Eranna Chalwadi <skrchalwadicg@gmail.com>
Repository: CRAN
Date/Publication: 2026-10-21 16:30:02 UTC

Open validator for FDA study-data submissions

Description

Validates a study folder against publicly described FDA technical-rejection criteria, SAS XPORT constraints, and an extensible SDTM, SEND, and ADaM structural catalog. Independent of Pinnacle 21 and not an FDA certification.

Author(s)

Shekhar Eranna Chalwadi

See Also

validate_submission, rules_catalog


Path to a bundled example study

Description

Example studies intentionally contain conformance issues so a first validation run produces a non-empty report.

Usage

example_study(which = c("sdtm", "adam"))

Arguments

which

"sdtm" or "adam".

Value

Character path to the example directory.

Examples

example_study("sdtm")

Validation report object

Description

An osv_report contains issue rows, a dataset inventory, the standard, and the engine label. Severity order is Reject, Error, Warning, Note.

Usage

## S3 method for class 'osv_report'
print(x, ...)

## S3 method for class 'osv_report'
summary(object, ...)

## S3 method for class 'osv_report'
as.data.frame(x, row.names = NULL, optional = FALSE, ...)

Arguments

x, object

An osv_report.

row.names

Ignored. Present for the as.data.frame generic.

optional

Ignored. Present for the as.data.frame generic.

...

Passed to further methods.

Value

summary returns a data frame of one row per rule. as.data.frame returns the issue-level data frame.

Examples

report <- validate_submission(example_study("sdtm"), standard = "SDTM")
print(report)
as.data.frame(report)

Read a study-data folder

Description

CSV and RDS files are read with base R. SAS transport files (.xpt) are read with haven when that package is installed.

Usage

read_study_data(path)

Arguments

path

Directory containing study datasets, or a character vector of file paths.

Value

A named list of data frames. Each element has a source_file attribute. Names are the upper-case file stem.

Examples

study <- read_study_data(example_study("sdtm"))
names(study)

Rule catalog helpers

Description

The catalog is an original implementation of publicly described expectations. Messages are not copied from Pinnacle 21 or from CDISC conformance-rule publications. Supported check types are dataset_required, variable_required, codelist, iso8601, key_unique, one_to_one, nonmissing, and regex.

Usage

rules_catalog(standard = NULL)

explain_rule(rule_id)

add_custom_rules(rules, catalog = rules_catalog())

severity_levels()

Arguments

standard

Optional filter: "SDTM", "SEND", "ADaM", "XPT", or "TRC".

rule_id

Rule identifier, such as "SDTM024".

rules

Data frame of additional rules with the catalog columns.

catalog

Catalog to extend. Defaults to rules_catalog().

Value

rules_catalog and explain_rule return a data frame. add_custom_rules returns the combined catalog. severity_levels returns a character vector.

Examples

head(rules_catalog("SDTM"))
explain_rule("SDTM024")
severity_levels()

Validate datasets already in memory

Description

Same engine as validate_submission for data already loaded.

Usage

validate_datasets(
  datasets,
  standard = c("SDTM", "SEND", "ADaM"),
  define = NULL,
  rules = NULL,
  ct = NULL,
  version_label = "openstudyval 0.1.0",
  path = NULL
)

Arguments

datasets

Named list of data frames, as returned by read_study_data.

standard

One of "SDTM", "SEND", or "ADaM".

define

Optional define.xml path.

rules

Optional extra rules.

ct

Optional controlled terminology data frame.

version_label

Report label.

path

Original folder, used only for technical-rejection file checks.

Value

An object of class osv_report.

Examples

study <- read_study_data(example_study("adam"))
validate_datasets(study, standard = "ADaM")

Validate a study-data folder

Description

Reads datasets, then runs XPORT constraints, standard-specific structural checks, the built-in rule catalog, technical-rejection criteria, and an optional define.xml cross-check.

Usage

validate_submission(
  path,
  standard = c("SDTM", "SEND", "ADaM"),
  define = NULL,
  rules = NULL,
  ct = NULL,
  version_label = "openstudyval 0.1.0"
)

Arguments

path

Directory of datasets, or a vector of dataset files.

standard

One of "SDTM", "SEND", or "ADaM".

define

Optional path to define.xml. If NULL, a file named define.xml in path is used when present.

rules

Optional data frame of extra rules. See add_custom_rules.

ct

Optional data frame of controlled terminology. Column names are variable names and values are permitted terms.

version_label

Character label stored on the report.

Details

The result is not a regulatory certification. Agency engines remain the reference for a live submission.

Value

An object of class osv_report.

See Also

validate_datasets, write_validation_report

Examples

report <- validate_submission(example_study("sdtm"), standard = "SDTM")
summary(report)

Write an HTML or CSV validation report

Description

Writes a submission-style issue summary. The HTML layout is original and is not a Pinnacle 21 report.

Usage

write_validation_report(report, file)

Arguments

report

An osv_report from validate_submission.

file

Path ending in .html or .csv. An HTML report also writes a sibling CSV.

Value

The written path, invisibly.

Examples

report <- validate_submission(example_study("sdtm"), standard = "SDTM")
dest <- file.path(tempdir(), "osv-report.html")
write_validation_report(report, dest)

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.
Health stats visible at Monitor.