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.
- Task: Would a real study need this derivation, specified this way? Does it follow CDISC ADaM: variable names, controlled terms, record structure? Flag any rule that is ambiguous or that a sponsor would handle differently.
- Inputs: Do they look like data collected in a real trial, and do they include the situations you would expect to meet in one?
- Expected output: Would independent QC programming reproduce every value from these inputs and rules?
The other tabs beside Comments are background for assessment, not under review.
Summary
README.mdGoal: select each subject's disposition record by ordering on a rank derived per donor record.
Input: one spec.yaml declaring two datasets. DM carries one row
per subject. DS carries disposition records with sequence, study day, and
a representative numeric value.
Lookups:
EOTderivesEOT_FALLBACKfor each disposition record: the study day plus the sequence number divided by 1000, so the earlier study day ranks first and the sequence breaks a tie within a day. It then filters and orders on that derived rank. A record with no study day has no rank and is ineligible; among the remaining records,keep: firstselects the smallest rank. A subject with no ranked record reads missing in all three selected values.
Columns: the chosen donor's decoded term lands in DSDECOD, its
representative numeric value lands in DSVALUE, and the computed rank is
read through EOT.EOT_FALLBACK into EOT_FALLBACK. The numbers are
written with the shortest digits that read back as the same value, so
0.30000000000000004 is not rounded to 0.3.
Inputs
Under review2 source filesExpected output
Under review3 expected rowsexpected/adsl.csv
Edit3 rows| STUDYID | USUBJID | DSDECOD | DSVALUE | EOT_FALLBACK |
|---|---|---|---|---|
| YAMAA-01 | EARLY TERMINATION | 0.30000000000000004 | 3.002 | |
| YAMAA-01 | COMPLETED | 0.4 | 7.002 | |
| YAMAA-01 | — | — | — |
Comments and assessment materials
| Dataset Name | Variable Name | Variable Label | Type | Codelist/Controlled Terms | Core | Computational Method | Origin |
|---|---|---|---|---|---|---|---|
| ADSL | STUDYID | Study Identifier | character | Copy value from DM.STUDYID. | Predecessor | ||
| ADSL | USUBJID | Unique Subject Identifier | character | Copy value from DM.USUBJID. | Predecessor | ||
| ADSL | DSDECOD | Selected Disposition Term | character | Take DSDECOD from the first DS record matching on the shared output keys, where DS.EOT_FALLBACK IS NOT NULL, ordered by DS.EOT_FALLBACK, and no match yields blank. | Derived | ||
| ADSL | DSVALUE | Selected Numeric Value | numeric | Take DSVALUE from the first DS record matching on the shared output keys, where DS.EOT_FALLBACK IS NOT NULL, ordered by DS.EOT_FALLBACK, and no match yields blank. | Derived | ||
| ADSL | EOT_FALLBACK | Selected Derived Rank | numeric | Take EOT_FALLBACK from the first DS record matching on the shared output keys, where DS.EOT_FALLBACK IS NOT NULL, ordered by DS.EOT_FALLBACK, where EOT_FALLBACK is derived as compute DSSTDY + DSSEQ / 1000, and no match yields blank. | Derived |
| Version | Date | Author | Description | Reviewer | Sign-off |
|---|---|---|---|---|---|
| 1.3 | 2026-09-29 | yamaa docs build | Show study codelist names, external dictionaries, and ISO 8601 formats in variable rows; list the document's codelist values and metadata | ||
| 1.2 | 2026-09-29 | yamaa docs build | Classify ADaM copies from a declared input as Predecessor and recodes as Derived, and SDTM recodes of locally derived columns as Derived | ||
| 1.1 | 2026-09-29 | yamaa docs build | Resolve lookups into the donor record they select, and give every derivation shape a plain-language rule instead of its raw YAML | ||
| 1.0 | yamaa docs build | Initial generation from spec.yaml |
yamaa
Comments
Signed in with GitHub; saved in repository Discussions