From 3851635874d2c2eac2eda1258ff61153cca0cdeb Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Wed, 30 Sep 2026 20:30:55 -0400 Subject: [PATCH 01/10] chore: prepare the initial CRAN submission of 0.2.0 The maintainer email address pointed at a domain that does not exist (humanpred.com); CRAN's confirmation email would never have arrived. The copyright holders of the bundled files are now stated: the Define-XML schema files are CDISC's (MIT License, from the cdisc-org GitHub repositories) and the stylesheets are Lex Jansen's (MIT License, per their headers). The README and data-raw comments had called both Apache-licensed. inst/COPYRIGHTS lists every bundled file with its source and license, and NCI EVS is credited as the data contributor for the public-domain CT. Also: Language field and inst/WORDLIST so the spell check is clean, .Rbuildignore for the .git file a worktree leaves at the package root, and cran-comments.md rewritten for this submission. Co-Authored-By: Claude Fable 5.1 --- .Rbuildignore | 1 + DESCRIPTION | 14 +++++++-- NEWS.md | 8 +++++ README.md | 4 +-- cran-comments.md | 25 ++++++++++------ data-raw/fetch_schemas.R | 5 ++-- data-raw/fetch_stylesheets.R | 6 ++-- inst/COPYRIGHTS | 28 +++++++++++++++++ inst/WORDLIST | 58 ++++++++++++++++++++++++++++++++++++ 9 files changed, 131 insertions(+), 18 deletions(-) create mode 100644 inst/COPYRIGHTS create mode 100644 inst/WORDLIST diff --git a/.Rbuildignore b/.Rbuildignore index 85bf6f0..e2ae96e 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -7,3 +7,4 @@ ^LICENSE\.md$ ^design$ ^pkgdown$ +^\.git$ diff --git a/DESCRIPTION b/DESCRIPTION index 17662b2..f428329 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,9 +1,16 @@ Package: cdiscdata Title: Versioned CDISC Standards Reference Data Version: 0.2.0 -Authors@R: person("Bill", "Denney", email = "wdenney@humanpred.com", - role = c("aut", "cre"), - comment = c(ORCID = "0000-0002-5759-428X")) +Authors@R: c( + person("Bill", "Denney", email = "wdenney@humanpredictions.com", + role = c("aut", "cre"), + comment = c(ORCID = "0000-0002-5759-428X")), + person("Clinical Data Interchange Standards Consortium (CDISC)", role = "cph", + comment = "Define-XML schema files in inst/extdata/schema (MIT License)"), + person("Lex", "Jansen", role = "cph", + comment = "Define-XML stylesheets in inst/extdata/stylesheet (MIT License)"), + person("National Cancer Institute Enterprise Vocabulary Services", role = "dtc", + comment = "CDISC Controlled Terminology (public domain)")) Description: Provides versioned CDISC Controlled Terminology (SDTM, ADaM), SDTM Model/SDTMIG and ADaMIG implementation-guide variable metadata, and Define-XML schemas (XSD) and CDISC XSLT stylesheets. Uses a @@ -25,6 +32,7 @@ Suggests: LazyData: true LazyDataCompression: xz Encoding: UTF-8 +Language: en-US Config/testthat/edition: 3 URL: https://github.com/humanpred/cdiscdata, https://humanpred.github.io/cdiscdata/ BugReports: https://github.com/humanpred/cdiscdata/issues diff --git a/NEWS.md b/NEWS.md index 8b2c216..dc49ff9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,13 @@ # cdiscdata 0.2.0 +## CRAN release preparation + +* First CRAN submission: the maintainer email address is corrected, the + copyright holders of the bundled Define-XML schema files (CDISC, MIT + License) and stylesheets (Lex Jansen, MIT License) are stated in + `Authors@R` and `inst/COPYRIGHTS` (the README had described them as + Apache-licensed), and a spelling word list is added. + ## Classed conditions and coverage * Every error and warning `get_ig()` and `build_domain_spec()` raise is now diff --git a/README.md b/README.md index 32287a7..fc72095 100644 --- a/README.md +++ b/README.md @@ -134,9 +134,9 @@ packages (e.g. `cdisclib`, `defineauto`). Key design decisions: | SDTM CT | [NCI EVS FTP](https://evs.nci.nih.gov/ftp1/CDISC/SDTM/) | Public domain | | ADaM CT | [NCI EVS FTP](https://evs.nci.nih.gov/ftp1/CDISC/ADaM/) | Public domain | | SDTM Model / SDTMIG / ADaMIG variable metadata | CDISC's published specification documents, transcribed via [Bill Denney's Rsdtm package](https://github.com/humanpred/Rsdtm) (private); see `data-raw/ig_source/README.md` for full provenance/attribution | CDISC published standards | -| Define-XML 2.1 schema | [cdisc-org/DataExchange-RWD-Lineage](https://github.com/cdisc-org/DataExchange-RWD-Lineage) | Apache 2.0 | +| Define-XML 2.1 schema | [cdisc-org/DataExchange-RWD-Lineage](https://github.com/cdisc-org/DataExchange-RWD-Lineage) | MIT (CDISC) | | Define-XML 2.0 schema | [dbosak01/defineR](https://github.com/dbosak01/defineR) | MIT | -| XSLT stylesheets | [cdisc-org/data-definition-engine](https://github.com/cdisc-org/data-definition-engine) / [dbosak01/defineR](https://github.com/dbosak01/defineR) | Apache 2.0 / MIT | +| XSLT stylesheets | [cdisc-org/data-definition-engine](https://github.com/cdisc-org/data-definition-engine) / [dbosak01/defineR](https://github.com/dbosak01/defineR) | MIT (Lex Jansen) | ## Related packages diff --git a/cran-comments.md b/cran-comments.md index 44164b2..1ea8b2a 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,16 +1,23 @@ ## R CMD check results -0 errors | 0 warnings | 0 notes +0 errors | 0 warnings | 1 note -## Data sources +* This is a new submission. -All CT data is sourced from the NCI EVS FTP site (public domain, no license -restrictions). XSD schemas and XSLT stylesheets are from the CDISC -DataExchange-DefineXML GitHub repository (Apache License 2.0, included with -attribution in inst/extdata/). +## Notes on the submission + +* The package contains data only (plus accessor functions) and has no + runtime dependencies. +* Bundled third-party files are listed with their copyright holders and + licenses in inst/COPYRIGHTS and in Authors@R: the Define-XML schema files + (CDISC, MIT License) and stylesheets (Lex Jansen, MIT License). The CDISC + Controlled Terminology data is published by the NCI Enterprise Vocabulary + Services as a public-domain work of the US Government. +* The words flagged by the spell check in DESCRIPTION (ADaM, ADaMIG, CDISC, + SDTM, SDTMIG, XSD, XSLT, pharmaverse) are standards names and acronyms. ## Test environments -- Local: Ubuntu 24.04, R 4.4.x -- GitHub Actions: ubuntu-latest (R release and devel), windows-latest (R release), - macos-latest (R release) +* Local: Windows 11, R 4.6.1 +* GitHub Actions: ubuntu-latest (R release and devel), windows-latest + (R release), macos-latest (R release) diff --git a/data-raw/fetch_schemas.R b/data-raw/fetch_schemas.R index 3486b4e..68b000b 100644 --- a/data-raw/fetch_schemas.R +++ b/data-raw/fetch_schemas.R @@ -2,8 +2,9 @@ # Safe to re-run; existing files are not re-downloaded. # # Sources (both publicly available, open-source licensed): -# Define-XML 2.1: cdisc-org/DataExchange-RWD-Lineage (MIT License) -# Define-XML 2.0: dbosak01/defineR CRAN package (MIT License) +# Define-XML 2.1: cdisc-org/DataExchange-RWD-Lineage (MIT License, CDISC) +# Define-XML 2.0: dbosak01/defineR CRAN package (CC0), redistributing the +# CDISC Define-XML 2.0 schema files RWD_BASE <- "https://raw.githubusercontent.com/cdisc-org/DataExchange-RWD-Lineage/main/tools/schema" DEFR_BASE <- "https://raw.githubusercontent.com/dbosak01/defineR/master/inst/extdata/2.0.0/cdisc-define-2.0" diff --git a/data-raw/fetch_stylesheets.R b/data-raw/fetch_stylesheets.R index 197b55c..e0ed6e1 100644 --- a/data-raw/fetch_stylesheets.R +++ b/data-raw/fetch_stylesheets.R @@ -2,8 +2,10 @@ # Safe to re-run; existing files are not re-downloaded. # # Sources (both publicly available, open-source licensed): -# Define-XML 2.1: cdisc-org/data-definition-engine (Apache License 2.0) -# Define-XML 2.0: dbosak01/defineR CRAN package (MIT License) +# Define-XML 2.1: cdisc-org/data-definition-engine (MIT License; the +# stylesheet itself is Copyright (c) Lex Jansen, MIT License) +# Define-XML 2.0: dbosak01/defineR CRAN package (CC0; the stylesheet itself +# is Copyright (c) Lex Jansen, MIT License) STYLESHEET_URLS <- c( "define2-1-0.xsl" = diff --git a/inst/COPYRIGHTS b/inst/COPYRIGHTS new file mode 100644 index 0000000..ac2e1d7 --- /dev/null +++ b/inst/COPYRIGHTS @@ -0,0 +1,28 @@ +Copyright and licensing of the files bundled in this package + +Package code and documentation: Copyright (c) Bill Denney, MIT License (see +LICENSE). + +inst/extdata/schema/define-xml-2.0/*.xsd +inst/extdata/schema/define-xml-2.1/*.xsd + Define-XML schema files, Copyright (c) Clinical Data Interchange Standards + Consortium (CDISC). Obtained from + https://github.com/cdisc-org/DataExchange-RWD-Lineage (MIT License) for + Define-XML 2.1 and, for Define-XML 2.0, as redistributed by the defineR + package (https://github.com/dbosak01/defineR, CC0). + +inst/extdata/stylesheet/*.xsl + Define-XML stylesheets, Copyright (c) 2013-2018 Lex Jansen, MIT License + (the license text is in the header of each file). Obtained from + https://github.com/cdisc-org/data-definition-engine and + https://github.com/dbosak01/defineR. + +data/ct_sdtm.rda, data/ct_adam.rda + CDISC Controlled Terminology as published by the National Cancer Institute + Enterprise Vocabulary Services (https://evs.nci.nih.gov/ftp1/CDISC/), a + work of the United States Government in the public domain. + +data/ig_sdtm.rda, data/ig_adam.rda + Variable metadata transcribed from the published SDTM, SDTMIG, and ADaMIG + specification documents (facts about the standards, not copies of the + documents). diff --git a/inst/WORDLIST b/inst/WORDLIST new file mode 100644 index 0000000..75f2e32 --- /dev/null +++ b/inst/WORDLIST @@ -0,0 +1,58 @@ +ADPP +ADPP's +ADSL +ADSL's +ADaM +ADaMIG +API's +BDS +CDISC +CDISC's +CMD +Codecov +Codelist +DataExchange +Denney's +EVS +IG +IG's +NCI +NCI's +PKPARM +PKPARMCD +PKUNIT +PP's +PPTESTCD's +README +RWD +Rsdtm +SDTM +SDTMIG +SDTMIG's +SUPPPP +SUPPQUAL +Summarise +XSD +XSL +XSLT +YYYY +backfill +catalogue +cdisc +codelist +codelist's +codelists +dbosak +defineR +errored +evs +gapped +nci +nih +pharmaverse +rlang +schemas +stylesheet +stylesheets +subprocess +unioned From 613119b70b778ebc07a2f6c5ae923c6f75ea712b Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Wed, 30 Sep 2026 20:34:14 -0400 Subject: [PATCH 02/10] docs: stop the CT examples from printing the whole table The CT tables are plain data frames, so auto-printing a 125k-row result in the get_ct() and get_dataset() examples took over ten seconds under R CMD check and raised the example-timing NOTE. The examples now assign the result and show head() and nrow(). Co-Authored-By: Claude Fable 5.1 --- R/get_ct.R | 8 +++++--- R/get_dataset.R | 6 ++++-- man/get_ct.Rd | 8 +++++--- man/get_dataset.Rd | 6 ++++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/R/get_ct.R b/R/get_ct.R index 65616b8..56929cd 100644 --- a/R/get_ct.R +++ b/R/get_ct.R @@ -8,9 +8,11 @@ #' @return A data frame of CT terms valid at the requested version. #' @export #' @examples -#' get_ct("sdtm") -#' get_ct("sdtm", version = "2024-09-27") -#' get_ct("adam") +#' ct <- get_ct("sdtm") +#' head(ct) +#' ct_2024 <- get_ct("sdtm", version = "2024-09-27") +#' nrow(ct_2024) +#' head(get_ct("adam")) get_ct <- function(type = c("sdtm", "adam"), version = NULL) { type <- match.arg(type) get_dataset(paste0("ct_", type), version = version) diff --git a/R/get_dataset.R b/R/get_dataset.R index 45abc68..c67d268 100644 --- a/R/get_dataset.R +++ b/R/get_dataset.R @@ -13,8 +13,10 @@ #' schemas/stylesheets). #' @export #' @examples -#' get_dataset("ct_sdtm") -#' get_dataset("ct_sdtm", version = "2024-09-27") +#' ct <- get_dataset("ct_sdtm") +#' head(ct) +#' ct_2024 <- get_dataset("ct_sdtm", version = "2024-09-27") +#' nrow(ct_2024) #' get_dataset("define_xml_schema", version = "2.1") #' get_dataset("define_xml_stylesheet", version = "2.0") get_dataset <- function(name, version = NULL) { diff --git a/man/get_ct.Rd b/man/get_ct.Rd index 40a5c14..cc7581a 100644 --- a/man/get_ct.Rd +++ b/man/get_ct.Rd @@ -19,7 +19,9 @@ A data frame of CT terms valid at the requested version. Convenience wrapper around \code{\link{get_dataset}} for CT data. } \examples{ -get_ct("sdtm") -get_ct("sdtm", version = "2024-09-27") -get_ct("adam") +ct <- get_ct("sdtm") +head(ct) +ct_2024 <- get_ct("sdtm", version = "2024-09-27") +nrow(ct_2024) +head(get_ct("adam")) } diff --git a/man/get_dataset.Rd b/man/get_dataset.Rd index 44ad2cd..3de2363 100644 --- a/man/get_dataset.Rd +++ b/man/get_dataset.Rd @@ -24,8 +24,10 @@ file path for the requested Define-XML version. Use \code{\link{list_datasets}} to see available dataset names. } \examples{ -get_dataset("ct_sdtm") -get_dataset("ct_sdtm", version = "2024-09-27") +ct <- get_dataset("ct_sdtm") +head(ct) +ct_2024 <- get_dataset("ct_sdtm", version = "2024-09-27") +nrow(ct_2024) get_dataset("define_xml_schema", version = "2.1") get_dataset("define_xml_stylesheet", version = "2.0") } From 106c4851d65fc142bba11957a2036d78a2a32aae Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Wed, 30 Sep 2026 20:35:36 -0400 Subject: [PATCH 03/10] chore: record the CRAN submission of 0.2.0 Co-Authored-By: Claude Fable 5.1 --- .Rbuildignore | 1 + CRAN-SUBMISSION | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 CRAN-SUBMISSION diff --git a/.Rbuildignore b/.Rbuildignore index e2ae96e..2e5c406 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -8,3 +8,4 @@ ^design$ ^pkgdown$ ^\.git$ +^CRAN-SUBMISSION$ diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION new file mode 100644 index 0000000..4b88be9 --- /dev/null +++ b/CRAN-SUBMISSION @@ -0,0 +1,3 @@ +Version: 0.2.0 +Date: 2026-10-01 00:35:36 UTC +SHA: 613119b70b778ebc07a2f6c5ae923c6f75ea712b From f5fb128cf826f86b899dbf9518f4eb68e6038bc6 Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Tue, 13 Oct 2026 11:40:01 -0400 Subject: [PATCH 04/10] docs(news): release main's development changes as 0.2.0 The version stays 0.2.0 for the resubmission, so the changes merged from main's development version are part of 0.2.0: their heading becomes the 0.2.0 heading, with the CRAN release preparation notes first. Co-Authored-By: Claude Opus 5.5 --- NEWS.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/NEWS.md b/NEWS.md index 2dc573a..34e9fac 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,12 @@ -# cdiscdata (development version) +# cdiscdata 0.2.0 + +## CRAN release preparation + +* First CRAN submission: the maintainer email address is corrected, the + copyright holders of the bundled Define-XML schema files (CDISC, MIT + License) and stylesheets (Lex Jansen, MIT License) are stated in + `Authors@R` and `inst/COPYRIGHTS` (the README had described them as + Apache-licensed), and a spelling word list is added. * `inst/COPYRIGHTS` lists the source, copyright holder and licence of every bundled file and data table, including the standards metadata tables added in this version. @@ -143,16 +151,6 @@ to obtain them. The Rsdtm copies in `data-raw/ig_source/` and the scripts that read them are removed. -# cdiscdata 0.2.0 - -## CRAN release preparation - -* First CRAN submission: the maintainer email address is corrected, the - copyright holders of the bundled Define-XML schema files (CDISC, MIT - License) and stylesheets (Lex Jansen, MIT License) are stated in - `Authors@R` and `inst/COPYRIGHTS` (the README had described them as - Apache-licensed), and a spelling word list is added. - ## Classed conditions and coverage * Every error and warning `get_ig()` and `build_domain_spec()` raise is now From 5de941ea8cdf6893b250fdbee31030fe5ac2bb9d Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Tue, 13 Oct 2026 11:41:01 -0400 Subject: [PATCH 05/10] docs: explain every acronym in the Description and link the CDISC standards CRAN asked that every acronym in the Description be explained. CDISC, CT, SDTM, ADaM, SDTMIG, SENDIG, ADaMIG, CDASH, QRS, XML, XSD, and XSLT are now spelled out where they first appear, and the Description links the CDISC standards page and the pharmaverse site in angle brackets. There are no method references to cite: the package holds reference data and accessor functions, not methods. Co-Authored-By: Claude Opus 5.5 --- DESCRIPTION | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 60cbce7..364c736 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -11,13 +11,21 @@ Authors@R: c( comment = "Define-XML stylesheets in inst/extdata/stylesheet (MIT License)"), person("National Cancer Institute Enterprise Vocabulary Services", role = "dtc", comment = "CDISC Controlled Terminology (public domain)")) -Description: Provides versioned CDISC Controlled Terminology (SDTM, ADaM), - variable metadata for the SDTM model, the SDTMIG, SENDIG, and ADaMIG - families of implementation guides, CDASH, and QRS supplements, - and Define-XML schemas (XSD) and CDISC XSLT stylesheets. Uses a - validity-date design to store all historical CT versions compactly - without redundant row duplication. Intended as a shared data - dependency for pharmaverse-aligned packages. +Description: Provides versioned reference data for the standards of the + Clinical Data Interchange Standards Consortium (CDISC) + : the CDISC Controlled Terminology (CT) + for the Study Data Tabulation Model (SDTM) and the Analysis Data Model + (ADaM); variable metadata for the SDTM model and for the families of the + SDTM Implementation Guide (SDTMIG), the Standard for Exchange of + Nonclinical Data Implementation Guide (SENDIG), and the ADaM + Implementation Guide (ADaMIG); the Clinical Data Acquisition Standards + Harmonization (CDASH) model and implementation guide; the Questionnaires, + Ratings, and Scales (QRS) supplements; and the Define-XML schemas, written + in the Extensible Markup Language (XML) Schema Definition (XSD) language, + with Extensible Stylesheet Language Transformations (XSLT) stylesheets + for them. A validity-date design stores every historical CT version + compactly, without duplicating rows. Intended as a shared data + dependency for pharmaverse-aligned packages . License: MIT + file LICENSE Depends: R (>= 4.1.0) Suggests: From 8a1c1318c0b0f4ffee2ce13cc4de15a100b4c6da Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Tue, 13 Oct 2026 11:41:01 -0400 Subject: [PATCH 06/10] test: stop installing the package in the attach test CRAN asked that functions, examples, and vignettes not install packages. None of them does; the one install was in tests/testthat/test-attach.R, which built the package with pkgbuild and installed it into a temporary library when the tests ran from a source tree. The test now runs only against an installed copy, which under R CMD check is the build under test, and skips from a source tree instead of installing. pkgbuild, used only there, leaves Suggests. Co-Authored-By: Claude Opus 5.5 --- DESCRIPTION | 3 +- tests/testthat/test-attach.R | 54 ++++++++++-------------------------- 2 files changed, 15 insertions(+), 42 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 364c736..84c4599 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -36,8 +36,7 @@ Suggests: pkgdown, knitr, rmarkdown, - callr, - pkgbuild + callr LazyData: true LazyDataCompression: xz Encoding: UTF-8 diff --git a/tests/testthat/test-attach.R b/tests/testthat/test-attach.R index d4fa7a3..09107b5 100644 --- a/tests/testthat/test-attach.R +++ b/tests/testthat/test-attach.R @@ -5,13 +5,10 @@ # even from inside the package's own functions. See R/utils.R's .pkg_data() # for the fix and rationale. -# Locate a genuine, buildable package source tree, if one is available in -# this test run. devtools::test()/pkgload::load_all() set the working -# directory to the package root; R CMD check instead runs tests against an -# already-installed copy with no source tree alongside it, in which case the -# ambient installation (found via .libPaths()) already *is* the build under -# test, and there is nothing to rebuild. -locate_pkg_source_root <- function() { +# Whether the tests run from a package source tree (devtools::test() and +# pkgload::load_all() set the working directory to the package root), rather +# than against an installed copy as under R CMD check +running_from_source <- function() { candidates <- unique(c( getwd(), tryCatch( @@ -21,46 +18,23 @@ locate_pkg_source_root <- function() { )) for (root in candidates) { has_desc <- file.exists(file.path(root, "DESCRIPTION")) - r_files <- if (dir.exists(file.path(root, "R"))) { - list.files(file.path(root, "R"), pattern = "[.]R$") - } else { - character(0L) + has_r <- dir.exists(file.path(root, "R")) && length(list.files(file.path(root, "R"), pattern = "[.]R$")) > 0L + if (has_desc && has_r) { + return(TRUE) } - if (has_desc && length(r_files) > 0L) return(root) } - NULL + FALSE } +# The subprocess must load cdiscdata from an installed copy that is the build +# under test. Under R CMD check, the installed copy under .libPaths() is that +# build; from a source tree, the installed copy (if any) may be older, and the +# test does not install one, so it skips. test_that("get_ct works via cdiscdata:: alone, no library(), in a fresh subprocess", { skip_on_cran() skip_if_not_installed("callr") - - root <- locate_pkg_source_root() - if (is.null(root)) { - # No source tree alongside the tests (e.g. R CMD check): the ambient - # installation under .libPaths() is the build under test. - lib <- .libPaths() - } else { - skip_if_not_installed("pkgbuild") - build_dir <- withr::local_tempdir() - lib <- withr::local_tempdir() - tarball <- pkgbuild::build( - root, dest_path = build_dir, quiet = TRUE, vignettes = FALSE - ) - # Installed in a separate subprocess, not in this session: when running - # under devtools::test(), cdiscdata is already loaded here via pkgload, - # and install.packages() refuses to (re)install a package that is - # currently in use in the calling session, even into an unrelated - # library path. - callr::r( - function(tarball, lib) { - utils::install.packages(tarball, repos = NULL, type = "source", - lib = lib, quiet = TRUE) - }, - args = list(tarball = tarball, lib = lib) - ) - lib <- c(lib, .libPaths()) - } + skip_if(running_from_source(), "Needs the installed build under test (run under R CMD check)") + lib <- .libPaths() sdtm <- callr::r(function() cdiscdata::get_ct("sdtm"), libpath = lib) expect_s3_class(sdtm, "data.frame") From 65ced238ccea9d0111dd000eb19bcdf4633feba7 Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Tue, 13 Oct 2026 11:41:02 -0400 Subject: [PATCH 07/10] docs: drop the superseded IG entry from inst/COPYRIGHTS ig_sdtm and ig_adam are now built from the CDISC Library exports, as the entry merged from main says, so the earlier entry describing them as transcribed from the published specification documents no longer holds. Co-Authored-By: Claude Opus 5.5 --- inst/COPYRIGHTS | 5 ----- 1 file changed, 5 deletions(-) diff --git a/inst/COPYRIGHTS b/inst/COPYRIGHTS index 7a1d444..508b89d 100644 --- a/inst/COPYRIGHTS +++ b/inst/COPYRIGHTS @@ -22,11 +22,6 @@ data/ct_sdtm.rda, data/ct_adam.rda Enterprise Vocabulary Services (https://evs.nci.nih.gov/ftp1/CDISC/), a work of the United States Government in the public domain. -data/ig_sdtm.rda, data/ig_adam.rda - Variable metadata transcribed from the published SDTM, SDTMIG, and ADaMIG - specification documents (facts about the standards, not copies of the - documents). - data/ig_sdtm.rda, data/model_sdtm.rda, data/ig_adam.rda, data/cdash_model.rda, data/ig_cdash.rda, data/qrs_supplement.rda, data/ig_sources.rda Variable and item metadata of the CDISC standards (SDTM model, SDTMIG, From a9f05957fd0c886ae206edb1e840a43e29a1d04f Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Tue, 13 Oct 2026 11:42:11 -0400 Subject: [PATCH 08/10] docs: spell the merged documentation in US English and list its terms The package's language is en-US: "normalised" and "licence" in the text merged from main become "normalized" and "license". The CDISC terms that main's new tables and NEWS added (CDASH, CDASHIG, QRS, SENDIG, and the ADaM, SENDIG, and QRS supplement names among them) join inst/WORDLIST, so spelling::spell_check_package() is clean. Co-Authored-By: Claude Opus 5.5 --- NEWS.md | 2 +- R/data.R | 2 +- inst/WORDLIST | 18 ++++++++++++++++++ man/ig_sdtm.Rd | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 34e9fac..0d9d8bf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,7 +8,7 @@ `Authors@R` and `inst/COPYRIGHTS` (the README had described them as Apache-licensed), and a spelling word list is added. -* `inst/COPYRIGHTS` lists the source, copyright holder and licence of every bundled file and data table, including the standards metadata tables added in this version. +* `inst/COPYRIGHTS` lists the source, copyright holder, and license of every bundled file and data table, including the standards metadata tables added in this version. ## Every CDISC Library implementation-guide export, replacing the Rsdtm tables diff --git a/R/data.R b/R/data.R index 02145ac..a882987 100644 --- a/R/data.R +++ b/R/data.R @@ -67,7 +67,7 @@ #' \code{"Perm"}, \code{"Cond"}, or the published \code{"Not used"}).} #' \item{codelist_code}{CDISC CT codelist C-code(s) the variable uses, as #' published; several are separated by \code{"; "} (e.g. PPORRESU lists -#' PKUNIT and four normalised-unit codelists). \code{NA} when none.} +#' PKUNIT and four normalized-unit codelists). \code{NA} when none.} #' \item{codelist_submission_values}{The codelist submission value(s), #' where the export gives them (the SEND guides do; the SDTMIG exports do #' not, so look the code up in \code{\link{get_ct}}).} diff --git a/inst/WORDLIST b/inst/WORDLIST index 75f2e32..e41409d 100644 --- a/inst/WORDLIST +++ b/inst/WORDLIST @@ -1,3 +1,4 @@ +ADAE ADPP ADPP's ADSL @@ -6,32 +7,46 @@ ADaM ADaMIG API's BDS +CDASH +CDASHIG CDISC CDISC's CMD +CRF Codecov Codelist DataExchange Denney's EVS +GeneTox IG IG's +KFSS +KPS +NCA NCI NCI's +OCCDS +PGI PKPARM PKPARMCD PKUNIT PP's +PPORRESU PPTESTCD's +QRS README RWD Rsdtm SDTM SDTMIG SDTMIG's +SENDIG SUPPPP SUPPQUAL Summarise +TTE +XPT XSD XSL XSLT @@ -42,14 +57,17 @@ cdisc codelist codelist's codelists +dataset's dbosak defineR errored evs gapped +nca nci nih pharmaverse +popPK rlang schemas stylesheet diff --git a/man/ig_sdtm.Rd b/man/ig_sdtm.Rd index 88d3a4a..9973b22 100644 --- a/man/ig_sdtm.Rd +++ b/man/ig_sdtm.Rd @@ -21,7 +21,7 @@ A data frame with columns: \code{"Perm"}, \code{"Cond"}, or the published \code{"Not used"}).} \item{codelist_code}{CDISC CT codelist C-code(s) the variable uses, as published; several are separated by \code{"; "} (e.g. PPORRESU lists - PKUNIT and four normalised-unit codelists). \code{NA} when none.} + PKUNIT and four normalized-unit codelists). \code{NA} when none.} \item{codelist_submission_values}{The codelist submission value(s), where the export gives them (the SEND guides do; the SDTMIG exports do not, so look the code up in \code{\link{get_ct}}).} From 09c5c0fdeb03f56e33ef1c852d172e139efdb581 Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Tue, 13 Oct 2026 11:47:01 -0400 Subject: [PATCH 09/10] chore: answer the CRAN review of 0.2.0 in cran-comments.md A fresh cran-comments.md for the resubmission answers each comment of the review: every acronym of the Description is explained, the package has no method reference to cite and links the CDISC standards instead, and no function, example, or vignette installs a package (the one test that did no longer does). NEWS.md records the resubmission changes. Co-Authored-By: Claude Opus 5.5 --- NEWS.md | 5 +++++ cran-comments.md | 50 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/NEWS.md b/NEWS.md index 0d9d8bf..458c38b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,11 @@ `Authors@R` and `inst/COPYRIGHTS` (the README had described them as Apache-licensed), and a spelling word list is added. +* Resubmission: the Description explains every acronym and links the CDISC + standards, and the attach test no longer installs the package (it runs + against the installed copy under `R CMD check` and skips from a source + tree), so pkgbuild leaves Suggests. + * `inst/COPYRIGHTS` lists the source, copyright holder, and license of every bundled file and data table, including the standards metadata tables added in this version. ## Every CDISC Library implementation-guide export, replacing the Rsdtm tables diff --git a/cran-comments.md b/cran-comments.md index 1ea8b2a..c8deccb 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,3 +1,36 @@ +## Resubmission + +This is a resubmission of cdiscdata 0.2.0, a new package. In this version I +have addressed each of the reviewer's comments: + +* **Acronyms in the Description.** Every acronym is now explained where it + first appears: CDISC (Clinical Data Interchange Standards Consortium), CT + (Controlled Terminology), SDTM (Study Data Tabulation Model), ADaM + (Analysis Data Model), SDTMIG (SDTM Implementation Guide), SENDIG + (Standard for Exchange of Nonclinical Data Implementation Guide), ADaMIG + (ADaM Implementation Guide), CDASH (Clinical Data Acquisition Standards + Harmonization), QRS (Questionnaires, Ratings, and Scales), XML (Extensible + Markup Language), XSD (XML Schema Definition), and XSLT (Extensible + Stylesheet Language Transformations). + +* **References.** The package provides reference data from the CDISC + standards with functions to retrieve it; it implements no published + method, so there is no method reference to cite. The Description now links + the CDISC standards in angle brackets, . + +* **Installing packages.** No function, example, or vignette installs a + package. The one installation was in a test + (tests/testthat/test-attach.R), which, when the tests ran from a source + tree, built the package and installed it into a temporary library; that + test was already skipped on CRAN. It no longer installs anything: it runs + only against the installed copy that R CMD check provides and skips + otherwise. pkgbuild, which only that test used, is removed from Suggests. + +Since the first submission, the package also gained the variable metadata of +the remaining CDISC implementation guides, the CDASH model and +implementation guide, and the QRS supplements (see NEWS.md); the version +number is unchanged because 0.2.0 has not been released. + ## R CMD check results 0 errors | 0 warnings | 1 note @@ -6,18 +39,19 @@ ## Notes on the submission -* The package contains data only (plus accessor functions) and has no - runtime dependencies. +* The package contains data (plus accessor functions) and has no runtime + dependencies. * Bundled third-party files are listed with their copyright holders and licenses in inst/COPYRIGHTS and in Authors@R: the Define-XML schema files (CDISC, MIT License) and stylesheets (Lex Jansen, MIT License). The CDISC Controlled Terminology data is published by the NCI Enterprise Vocabulary - Services as a public-domain work of the US Government. -* The words flagged by the spell check in DESCRIPTION (ADaM, ADaMIG, CDISC, - SDTM, SDTMIG, XSD, XSLT, pharmaverse) are standards names and acronyms. + Services as a public-domain work of the US Government. The variable + metadata of the CDISC standards carries only names, labels, types, and + similar fields, not the standards' text. +* The words flagged by the spell check in DESCRIPTION (ADaM, ADaMIG, CDASH, + CDISC, QRS, SDTM, SDTMIG, SENDIG, XSD, XSLT, pharmaverse) are standards + names and acronyms, each explained in the Description. ## Test environments -* Local: Windows 11, R 4.6.1 -* GitHub Actions: ubuntu-latest (R release and devel), windows-latest - (R release), macos-latest (R release) +* Local: Windows 11, R 4.6.1 (R CMD check --as-cran) From d9c7ac21e31adaf03f6166ceb09ba4118a7f8591 Mon Sep 17 00:00:00 2001 From: Bill Denney Date: Thu, 15 Oct 2026 21:56:10 +0000 Subject: [PATCH 10/10] chore: record the CRAN resubmission of 0.2.0 Co-Authored-By: Claude Opus 5.5 --- CRAN-SUBMISSION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION index 4b88be9..e5d165e 100644 --- a/CRAN-SUBMISSION +++ b/CRAN-SUBMISSION @@ -1,3 +1,3 @@ Version: 0.2.0 -Date: 2026-10-01 00:35:36 UTC -SHA: 613119b70b778ebc07a2f6c5ae923c6f75ea712b +Date: 2026-10-15 21:56:09 UTC +SHA: 09c5c0fdeb03f56e33ef1c852d172e139efdb581