As a clinical trial statistician or programmer, answer two short questions in Your review: the task and the inputs and outputs. Agreeing with both approves this benchmark; disagreeing with either needs a comment. Propose a fix with the Edit button on any source file, or add it to your comments.
We suggest spending no more than 5 minutes on a review. The other tabs beside Your review are background for assessment, not under review.
Summary
README.mdPublic entries: Python and R. Passing coverage requires an installed inventory.
Goal: carry the planned treatment (TRT01P) and the reason for
discontinuation from the study (DCSREAS) into ADSL, with a data-definition
document listing the coded values and decodes of each.
Input: spec.yaml reads one pre-analysis row per subject, and
project.yaml lists two codelist files in order:
study/codelists.yamlholds the study's lists of planned treatments and of discontinuation reasons, which every submission package of the study shares;codelists.yamlholds this package's own list of discontinuation reasons, under the study's code for it.
Variables:
TRT01Pis the planned treatment, one of the study's coded values.DCSREASis the reason for discontinuation from the study, one of the package's coded values, which admit a subject lost to follow-up.
Note: a list in a later file replaces the earlier list of the same code whole: its name, its values and its decodes come from the package, and none from the study, so a subject lost to follow-up is admitted and each reason decodes as the coded value itself. The study's planned treatments are kept as the study declares them. The data-definition document lists the kept planned treatments first, where the study's file lists them, then the package's reasons, where the package's file lists them.
Inputs
Under review1 source fileinput/adsl_raw.csv
Edit4 rows| STUDYID | USUBJID | TRT01P | DCSREAS |
|---|---|---|---|
| CATH | VITAMIN D3 | COMPLETED | |
| CATH | PLACEBO | ADVERSE EVENT | |
| CATH | VITAMIN D3 | LOST TO FOLLOW-UP | |
| CATH | PLACEBO | WITHDRAWAL BY SUBJECT |
Expected output
Under review4 expected rowsexpected/adsl.csv
Edit4 rows| STUDYID | USUBJID | TRT01P | DCSREAS |
|---|---|---|---|
| CATH | VITAMIN D3 | COMPLETED | |
| CATH | PLACEBO | ADVERSE EVENT | |
| CATH | VITAMIN D3 | LOST TO FOLLOW-UP | |
| CATH | PLACEBO | WITHDRAWAL BY SUBJECT |
expected/define.xml
EditDefine-XMLDefine-XML 2.1.11: CATH
Example study resubmitting subject-level analysis data; CATH-01; ADaMIG 1.3
| Dataset | Description | Class | Structure | Purpose | Keys | Documentation | Location |
|---|---|---|---|---|---|---|---|
| ADSL | Subject-Level Analysis Dataset | SUBJECT LEVEL ANALYSIS DATASET | One record per subject | Analysis | STUDYID, USUBJID | adsl.csv |
ADSL
| Variable | Label / Description | Type | Length or Display Format | Controlled Terms or ISO Format | Origin / Source / Method / Comment |
|---|---|---|---|---|---|
| STUDYID | Study Identifier | text | 4 | Predecessor; ADSL_RAW.STUDYID | |
| USUBJID | Unique Subject Identifier | text | 9 | Predecessor; ADSL_RAW.USUBJID | |
| TRT01P | Planned Treatment for Period 01 | text | 10 | Planned Treatment for Period 01 (CL.TRT01P) PLACEBO = Placebo VITAMIN D3 = Vitamin D3 5000 IU daily | Predecessor; ADSL_RAW.TRT01P |
| DCSREAS | Reason for Discontinuation from Study | text | 21 | Reason for Discontinuation from Study (CL.DCSREAS) ADVERSE EVENT = ADVERSE EVENT COMPLETED = COMPLETED LOST TO FOLLOW-UP = LOST TO FOLLOW-UP WITHDRAWAL BY SUBJECT = WITHDRAWAL BY SUBJECT | Predecessor; ADSL_RAW.DCSREAS |
Original source
<?xml version="1.0" encoding="UTF-8"?>
<ODM xmlns="http://www.cdisc.org/ns/odm/v1.3" xmlns:def="http://www.cdisc.org/ns/def/v2.1" xmlns:xlink="http://www.w3.org/1999/xlink" ODMVersion="1.3.2" FileType="Snapshot" FileOID="CATH.adam.Define-XML_2.1" CreationDateTime="2026-09-11T00:00:00" SourceSystem="yamaa" SourceSystemVersion="1.0" def:Context="Other">
<Study OID="STDY.CATH">
<GlobalVariables>
<StudyName>CATH</StudyName>
<StudyDescription>Example study resubmitting subject-level analysis data</StudyDescription>
<ProtocolName>CATH-01</ProtocolName>
</GlobalVariables>
<MetaDataVersion OID="MDV.CATH.adam" Name="CATH adam metadata" def:DefineVersion="2.1.11">
<def:Standards>
<def:Standard OID="STD.ADaMIG" Name="ADaMIG" Type="IG" Version="1.3" Status="Final"/>
</def:Standards>
<ItemGroupDef OID="IG.ADSL" Name="ADSL" Purpose="Analysis" SASDatasetName="ADSL" Repeating="No" IsReferenceData="No" def:Structure="One record per subject" def:ArchiveLocationID="LF.ADSL" def:StandardOID="STD.ADaMIG">
<Description>
<TranslatedText xml:lang="en">Subject-Level Analysis Dataset</TranslatedText>
</Description>
<ItemRef ItemOID="IT.ADSL.STUDYID" OrderNumber="1" Mandatory="Yes" KeySequence="1"/>
<ItemRef ItemOID="IT.ADSL.USUBJID" OrderNumber="2" Mandatory="Yes" KeySequence="2"/>
<ItemRef ItemOID="IT.ADSL.TRT01P" OrderNumber="3" Mandatory="Yes"/>
<ItemRef ItemOID="IT.ADSL.DCSREAS" OrderNumber="4" Mandatory="Yes"/>
<def:Class Name="SUBJECT LEVEL ANALYSIS DATASET"/>
<def:leaf ID="LF.ADSL" xlink:href="adsl.csv">
<def:title>adsl.csv</def:title>
</def:leaf>
</ItemGroupDef>
<ItemDef OID="IT.ADSL.STUDYID" Name="STUDYID" DataType="text" Length="4" SASFieldName="STUDYID">
<Description>
<TranslatedText xml:lang="en">Study Identifier</TranslatedText>
</Description>
<def:Origin Type="Predecessor">
<Description>
<TranslatedText xml:lang="en">ADSL_RAW.STUDYID</TranslatedText>
</Description>
</def:Origin>
</ItemDef>
<ItemDef OID="IT.ADSL.USUBJID" Name="USUBJID" DataType="text" Length="9" SASFieldName="USUBJID">
<Description>
<TranslatedText xml:lang="en">Unique Subject Identifier</TranslatedText>
</Description>
<def:Origin Type="Predecessor">
<Description>
<TranslatedText xml:lang="en">ADSL_RAW.USUBJID</TranslatedText>
</Description>
</def:Origin>
</ItemDef>
<ItemDef OID="IT.ADSL.TRT01P" Name="TRT01P" DataType="text" Length="10" SASFieldName="TRT01P">
<Description>
<TranslatedText xml:lang="en">Planned Treatment for Period 01</TranslatedText>
</Description>
<CodeListRef CodeListOID="CL.TRT01P"/>
<def:Origin Type="Predecessor">
<Description>
<TranslatedText xml:lang="en">ADSL_RAW.TRT01P</TranslatedText>
</Description>
</def:Origin>
</ItemDef>
<ItemDef OID="IT.ADSL.DCSREAS" Name="DCSREAS" DataType="text" Length="21" SASFieldName="DCSREAS">
<Description>
<TranslatedText xml:lang="en">Reason for Discontinuation from Study</TranslatedText>
</Description>
<CodeListRef CodeListOID="CL.DCSREAS"/>
<def:Origin Type="Predecessor">
<Description>
<TranslatedText xml:lang="en">ADSL_RAW.DCSREAS</TranslatedText>
</Description>
</def:Origin>
</ItemDef>
<CodeList OID="CL.TRT01P" Name="Planned Treatment for Period 01" DataType="text" def:IsNonStandard="Yes">
<CodeListItem CodedValue="PLACEBO">
<Decode>
<TranslatedText xml:lang="en">Placebo</TranslatedText>
</Decode>
</CodeListItem>
<CodeListItem CodedValue="VITAMIN D3">
<Decode>
<TranslatedText xml:lang="en">Vitamin D3 5000 IU daily</TranslatedText>
</Decode>
</CodeListItem>
</CodeList>
<CodeList OID="CL.DCSREAS" Name="Reason for Discontinuation from Study" DataType="text" def:IsNonStandard="Yes">
<CodeListItem CodedValue="ADVERSE EVENT">
<Decode>
<TranslatedText xml:lang="en">ADVERSE EVENT</TranslatedText>
</Decode>
</CodeListItem>
<CodeListItem CodedValue="COMPLETED">
<Decode>
<TranslatedText xml:lang="en">COMPLETED</TranslatedText>
</Decode>
</CodeListItem>
<CodeListItem CodedValue="LOST TO FOLLOW-UP">
<Decode>
<TranslatedText xml:lang="en">LOST TO FOLLOW-UP</TranslatedText>
</Decode>
</CodeListItem>
<CodeListItem CodedValue="WITHDRAWAL BY SUBJECT">
<Decode>
<TranslatedText xml:lang="en">WITHDRAWAL BY SUBJECT</TranslatedText>
</Decode>
</CodeListItem>
</CodeList>
</MetaDataVersion>
</Study>
</ODM>
Human review and assessment
| Dataset Name | Variable Name | Variable Label | Type | Codelist/Controlled Terms | Core | Computational Method | Origin |
|---|---|---|---|---|---|---|---|
| ADSL | STUDYID | Study Identifier | character | Req | Copy value from ADSL_RAW.STUDYID. | Predecessor | |
| ADSL | USUBJID | Unique Subject Identifier | character | Req | Copy value from ADSL_RAW.USUBJID. | Predecessor | |
| ADSL | TRT01P | Planned Treatment for Period 01 | character | Planned Treatment for Period 01 | Req | Copy value from ADSL_RAW.TRT01P. | Predecessor |
| ADSL | DCSREAS | Reason for Discontinuation from Study | character | Reason for Discontinuation from Study | Perm | Copy value from ADSL_RAW.DCSREAS. | Predecessor |
| Codelist ID | Name | Value | Decode | Codelist NCI alias | Value NCI alias | Extensible | Extended value | SAS format | Dictionary | Version |
|---|---|---|---|---|---|---|---|---|---|---|
| DCSREAS | Reason for Discontinuation | ADVERSE EVENT | Adverse Event | No | ||||||
| DCSREAS | Reason for Discontinuation | COMPLETED | Completed | No | ||||||
| DCSREAS | Reason for Discontinuation | WITHDRAWAL BY SUBJECT | Withdrawal by Subject | No | ||||||
| TRT01P | Planned Treatment for Period 01 | PLACEBO | Placebo | No | ||||||
| TRT01P | Planned Treatment for Period 01 | VITAMIN D3 | Vitamin D3 5000 IU daily | No | ||||||
| DCSREAS | Reason for Discontinuation from Study | ADVERSE EVENT | ADVERSE EVENT | No | ||||||
| DCSREAS | Reason for Discontinuation from Study | COMPLETED | COMPLETED | No | ||||||
| DCSREAS | Reason for Discontinuation from Study | LOST TO FOLLOW-UP | LOST TO FOLLOW-UP | No | ||||||
| DCSREAS | Reason for Discontinuation from Study | WITHDRAWAL BY SUBJECT | WITHDRAWAL BY SUBJECT | No |
| Version | Date | Author | Description | Reviewer | Sign-off |
|---|---|---|---|---|---|
| 1.7 | 2026-10-20 | yamaa docs build | Read a specification in the 1.0 surface as its 0.5 counterpart; state that missing values stay missing where a mapping declares no missing handler, and leave out a declared missing answer that restates a handler's default | ||
| 1.6 | 2026-10-17 | yamaa docs build | Describe collected date parts written as ISO 8601 date text and times of day counted in seconds since midnight | ||
| 1.5 | 2026-10-17 | yamaa docs build | Name collected precision in words instead of letter codes; state imputation fallbacks, minimum source precision, bounds ignored outside the collected period, and invalid text with no handler as an error; describe date and datetime shifts, imputation flag codes, and partial text giving no date part | ||
| 1.4 | 2026-10-15 | yamaa docs build | State datetime precision codes through the hour and minute, and complete only the time parts a collected datetime lacks | ||
| 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