Review ask

As a clinical trial statistician or programmer, challenge anything in this benchmark: describe a problem in Comments, or propose a fix with the Edit button on any source file.

  1. Task: Is this a specification error a study team could realistically make, and should the build stop on it rather than continue?
  2. Inputs: Do they trigger the failure for the reason the summary gives?
  3. Expected failure: Is this the right error, raised at the right point, and would it tell the programmer what to fix?

The other tabs beside Comments are background for assessment, not under review.

Summary

Lifecycle: reviewedEditUnder review
What this benchmark means
README.md

Goal: carry the treatment start date RFSTD and the death date DTHDT into a subject-level record, where the two dates must be present together or absent together.

Input: collected demographics records, one per subject, holding the treatment start date in RFSTDT and the date of death in DTHDTC.

Variables:

  • RFSTD would be the date treatment started, taken from RFSTDT in the demographics input.
  • DTHDT would be the date of death, taken from DTHDTC in the demographics input and missing when the subject has not died.

Note: a record with both dates present or both missing passes; a record with only one present fails the pairing, so the whole run is rejected and no dataset is accepted.

How to fix

Decide which absences the study allows, then assert each side on its own. When every subject must have a start date but only some have died, remove the pairing, require the start and leave death optional:

columns:
  - name: RFSTD
    type: date
    label: Reference Start Date
    derivation: DM.RFSTDT
    verifications:
      - not_missing: {}

When two dates truly travel together, keep the pairing and correct the offending row instead of loosening the rule.

Expected failure

Edit
the run is rejected; no artifact is accepted
expected/error.yaml
phase
verification
condition
all_or_none_failed
requirement
REQ-0382
expected/error.yaml
phase: verification
condition: all_or_none_failed
spec_paths:
  - verifications[0].all_or_none
requirement: REQ-0382
context:
  verification_id: paired-death-dates
  failure_count: 1
  keys:
    - STUDYID: PILOT7
      USUBJID: P7-812

Inputs

Under review
1 source file

input/dm.csv

Edit
2 rows
input/dm.csv
STUDYIDUSUBJIDRFSTDTDTHDTC
PILOT72023-01-022023-05-14
PILOT72023-02-10—

Unexpected Output

Under review
2 rows presented to the failing check - not an accepted artifact

expected/adsl.csv

Edit
2 rows
expected/adsl.csv
STUDYIDUSUBJIDRFSTDDTHDT
PILOT72023-01-022023-05-14
PILOT72023-02-10—
Shaded columns are derived— = missing value

Comments and assessment materials

Comments

Signed in with GitHub; saved in repository Discussions

Mapping spec

Generated from the benchmark YAML; do not edit by hand

Dataset NameVariable NameVariable LabelTypeCodelist/Controlled TermsCoreComputational MethodOrigin
ADSLSTUDYIDStudy IdentifiercharacterCopy value from DM.STUDYID.Predecessor
ADSLUSUBJIDUnique Subject IdentifiercharacterCopy value from DM.USUBJID.Predecessor
ADSLRFSTDReference Start DatenumericISO 8601Copy value from DM.RFSTDT.Predecessor
ADSLDTHDTDate of DeathnumericISO 8601Copy value from DM.DTHDTC.Predecessor
VersionDateAuthorDescriptionReviewerSign-off
1.32026-09-29yamaa docs buildShow study codelist names, external dictionaries, and ISO 8601 formats in variable rows; list the document's codelist values and metadata
1.22026-09-29yamaa docs buildClassify ADaM copies from a declared input as Predecessor and recodes as Derived, and SDTM recodes of locally derived columns as Derived
1.12026-09-29yamaa docs buildResolve lookups into the donor record they select, and give every derivation shape a plain-language rule instead of its raw YAML
1.0yamaa docs buildInitial generation from spec.yaml