ADaM IN PRACTICE · A TECHNICAL SERIES FOR CLINICAL TRIAL STATISTICAL PROGRAMMERS
CNSR, EVNTDESC, event and censor date algorithms, and the ADTTE traceability gaps that trigger information requests.
Time-to-event datasets generate more regulatory information requests than any other ADaM dataset, and the reason is structural rather than careless. The CDISC structure for ADTTE defines the variables and conventions but deliberately leaves the event and censor algorithms to the statistical analysis plan. When those algorithms are not made traceable, reviewers cannot reconstruct a subject's contribution to the Kaplan-Meier curve, and small choices about which date, which rule, and which hierarchy order apply visibly move the primary treatment effect. This article argues that the event and censor algorithm is the true deliverable and the dataset is its execution trace. Using a worked progression-free survival example from a Phase III oncology trial, it shows how an ordered, countable decision table, record-level source pointers, and cross-dataset reconciliation turn an ADTTE into a self-auditing artifact, and how sensitivity schemes become separate parameters rather than silent re-derivations. The takeaway is to place the same decision table, verbatim, in the SAP, the define.xml, and the ADRG, so reviewers question your choices rather than your data.
Among ADaM datasets, ADTTE is the one reviewers scrutinize hardest and question most often. It usually carries the primary endpoint, its derivations compress dozens of upstream response and event records into a single decision per subject, and the choices embedded in that decision are exactly the choices that move hazard ratios. Because the governing CDISC structure is intentionally thin, the burden of reviewability falls on the traceability the programming team builds in. When that traceability is missing, an FDA reanalysis that tries to reconstruct the sponsor's event and censor decisions subject by subject turns into a stream of information requests, often about the primary efficacy result itself.
This article treats the event and censor algorithm as the real deliverable and shows how to make it auditable. Section 2 explains why ADTTE draws disproportionate scrutiny and reviews the BDS variables that carry the algorithm. Section 3 works through a progression-free survival example and the numbered decision table that anchors it. Section 4 traces the derivation chain from SDTM through ADRS to ADTTE and locates the four gaps where traceability typically breaks. Section 5 handles sensitivity analyses as separate parameters rather than overwrites, and Section 6 lists the study-specific checks worth running before anyone else runs them. Section 7 distills the practice into a submittable artifact, and the Conclusion summarizes the practical takeaways.
Time-to-event datasets sit at the intersection of everything reviewers scrutinize: they usually carry the primary endpoint, their derivations compress dozens of upstream records into a single event/censor decision per subject, and small algorithmic choices (which date, which rule, which hierarchy order) visibly move hazard ratios. The CDISC document governing them, The ADaM Basic Data Structure for Time-to-Event Analyses v1.0, is deliberately thin: it defines the variables and conventions, and leaves the algorithms to the SAP. That division of labor means an ADTTE is only as reviewable as the traceability you build into it.
There is also an asymmetry of consequence at work. A misassigned visit window in ADVS changes one cell of a by-visit summary; a misassigned censoring rule in ADTTE changes a subject's contribution to every point of the KM curve after their censoring time, and systematically biased censoring (informative censoring introduced by the derivation itself, not the disease) can move the primary treatment effect. FDA statistical reviewers know this, which is why their reanalyses so often begin by reconstructing the sponsor's event/censor decisions subject by subject. Your dataset should make that reconstruction boring.
The structure itself is plain BDS: one record per subject per parameter, AVAL as elapsed time, STARTDT as the time origin, ADT as the event or censoring date, and CNSR as the censoring indicator. The convention, inherited from decades of survival software, is that `CNSR=0` denotes an event and positive integers denote censoring, with distinct positive values distinguishing censoring reasons. EVNTDESC describes what happened; CNSDTDSC describes where a censoring date came from. Reviewers read these descriptor variables before they read your define.xml, so their consistency with CNSR is the first credibility test an ADTTE faces.
Take a Phase III trial in a solid tumor indication: ~640 subjects randomized 1:1 to investigational-plus-standard-of-care versus standard-of-care, RECIST 1.1 assessments every 8 weeks, blinded independent central review, primary endpoint progression-free survival. The SAP censoring conventions follow the usual FDA-aligned pattern. The disciplined way to express them is a numbered decision table that maps one-to-one onto CNSR/EVNTDESC/CNSDTDSC values, the same table appearing in the SAP, the define.xml method, and the ADRG:
| Rule | Situation | CNSR | ADT | EVNTDESC / CNSDTDSC |
| E1 | Documented PD per BICR (RECIST 1.1) | 0 | Date of first PD assessment | PROGRESSION |
| E2 | Death from any origin without prior PD | 0 | Death date | DEATH |
| C1 | No PD/death at cutoff | 1 | Last adequate tumor assessment on/before cutoff | LAST ADEQUATE ASSESSMENT |
| C2 | No post-baseline assessment | 2 | Randomization date | RANDOMIZATION |
| C3 | New anticancer therapy before PD/death | 3 | Last adequate assessment on/before new therapy start | PRIOR TO NEW THERAPY |
| C4 | PD/death after ≥2 consecutive missed assessments | 4 | Last adequate assessment before the gap | PRIOR TO MISSED VISITS |
Table 1. PFS event/censor decision table. Every record in ADTTE for PARAMCD=PFS carries exactly one rule, and record counts per rule are reported in the ADRG.
Three properties of this table do the regulatory work. Rules are ordered and mutually exclusive. The define.xml method states the order of evaluation, because a subject can qualify for several. Each rule names its date source precisely (“last adequate assessment” is itself a defined term: an assessment where all target lesions were evaluated, ANL01FL='Y' in ADRS). And each rule is countable: when the ADRG says 41 subjects were censored under C3, the reviewer can filter CNSR=3 and reconcile instantly.
Figure 1. KM estimate produced directly from the example ADTTE. A figure like this belongs in your dry-run QC pack: implausible censoring patterns are visible here long before a reviewer sees them.
PFS is never derived from SDTM RS directly in a well-run study; it is derived from an analysis-ready response dataset (ADRS, or an intermediate ADRESP when investigator and BICR calls need reconciliation). The chain is RS/TU/TR → ADRS → ADTTE, with death dates from ADSL (DTHDT) and new-therapy dates from ADCM or a dedicated event dataset. The information requests we see cluster at four predictable gaps:
| Gap | What the reviewer sees | The fix |
| Orphan ADT | A censoring date that matches no record in any submitted dataset | SRCDOM/SRCVAR/SRCSEQ on every ADTTE record pointing to the ADRS/ADSL record supplying ADT |
| Invisible "adequate assessment" logic | ANL01FL in ADRS with no criteria | Define.xml method for the flag + counts of excluded assessments in the ADRG |
| Partial-date alchemy | Death date more precise in ADTTE than in DM/DS | Imputation flags (ADTF) and a stated imputation rule; never silent completion |
| Hierarchy ambiguity | Subject qualifying for C3 and C4 with different dates | Ordered rules in the method; CNSDTDSC reflecting the applied rule, not a generic label |
Table 2. The four ADTTE traceability gaps behind most TTE information requests.
The first gap deserves emphasis because it is structural, not sloppy: the many-to-one nature of censor-date selection means ADT is a chosen value, and BDS gives you no default mechanism for recording the choice. The SRC triplet is that mechanism. It costs three variables and a merge; it converts “where did 2024-03-17 come from?” from an algorithm re-execution into a record lookup.
/* Censor-date selection with traceability retained */
proc sort data=adrs(where=(paramcd='OVRLRESP' and anl01fl='Y'
and adt <= &cutoff)) out=adequate;
by usubjid adt;
run;
data last_adeq;
set adequate; by usubjid adt;
if last.usubjid;
srcdom = 'ADRS'; srcvar = 'ADT'; srcseq = asseq; /* keep the key */
keep usubjid adt srcdom srcvar srcseq;
run;
/* Rule engine applies E1,E2,C1-C4 in order; first hit wins */
data adtte_pfs;
merge pd_events death new_thx last_adeq adsl(keep=usubjid randdt ittfl);
by usubjid; ...
aval = (adt - startdt + 1) / 30.4375; /* months, per SAP 9.4.1 */
run;
Note AVAL’s unit convention is itself a documented decision: days versus months, the +1, and the divisor all belong in the define.xml method verbatim. Mismatched +1 conventions between sponsor and FDA reanalysis are a classic source of one-day discrepancies that consume disproportionate review correspondence.
Regulatory TTE review almost always involves alternative censoring schemes: the FDA’s own reviewers routinely re-derive PFS treating new anticancer therapy as an event, or ignoring the missed-visit rule, to test robustness. Anticipate this in the dataset design: each sensitivity scheme is a separate parameter, not a regenerated dataset. The example study carried PFS (primary rules, Table 1), PFSSA1 (new therapy treated as event at its start date), PFSSA2 (no C4 missed-visit censoring), and PFSIRC versus PFSINV for the BICR/investigator comparison. Each parameter gets its own decision table in the define.xml method and its own row-block in the ADRG. The payoff is symmetry: the reviewer’s sensitivity question becomes a PARAMCD filter rather than a request for new datasets, and discordance analyses (BICR versus investigator PFS) are computable inside the submitted package. The cost is parameter proliferation, which is manageable with the registry discipline covered in Article 3 of this series, and trivial next to the cost of an information request asking you to build PFSSA1 mid-review.
The same logic applies to the time origin. STARTDT is randomization date for the ITT-style efficacy analyses, but exposure-anchored parameters (treatment-emergent analyses, some safety TTE) legitimately anchor at TRTSDT. Never express that difference as a silent re-derivation: distinct anchors are distinct parameters, and STARTDT sits on every record precisely so each parameter declares its own origin. An ADTTE in which AVAL, STARTDT, and ADT are mutually consistent on every record is self-auditing; one where the anchor must be inferred from context is an information request generator.
CDISC CORE and the ADaM conformance rules (v5.0) verify the mechanical layer: CNSR present and non-missing for TTE parameters, AVAL consistency with ADT/STARTDT, PARAMCD conventions. The findings that matter live one level up, in study-specific logic that only a targeted diagnostic can see. Our standard ADTTE diagnostic pack, run at every dry run:
None of this replaces independent programming of the primary endpoint, which remains standard practice for registrational TTE analyses. But independent programming from the same ambiguous spec reproduces the same wrong answer twice; the decision-table discipline in Section 3 is what makes both programmers (and later the FDA’s own reanalysis) land on the same numbers.
Everything reviewers question about ADTTE reduces to one theme: the event/censor algorithm is the real deliverable, and the dataset is its execution trace. Express the algorithm as an ordered, countable decision table; carry record-level pointers (SRC triplet, retained assessment keys) so each executed decision is auditable; reconcile counts across ADRS, ADSL, ADTTE, and the CSR tables before submission; and put the same table, verbatim, in the SAP, the define.xml, and the ADRG. Studies that do this receive questions about their choices, which is science, and answerable. Studies that do not receive questions about their data, which is trust, and much harder to rebuild mid-review.
The through-line of this article is simple: with time-to-event data, the event and censor algorithm is the deliverable, and the dataset is only its execution trace. Reviewers do not object to defensible censoring conventions; they object to conventions they cannot reconstruct. Everything that reduces ADTTE information requests follows from making the algorithm visible. Express it as an ordered, mutually exclusive, countable decision table; carry record-level pointers such as the source triplet and retained assessment keys so each decision can be looked up rather than re-executed; reconcile counts across ADRS, ADSL, ADTTE, and the CSR tables before submission; and design each sensitivity scheme and time origin as its own parameter.
Do this and the same decision table appears, word for word, in the SAP, the define.xml method, and the ADRG, and a reviewer's question becomes a PARAMCD filter rather than a request to rebuild a dataset mid-review. Studies that invest in this discipline receive questions about their scientific choices, which are answerable. Studies that do not receive questions about their data, which erode trust and are far harder to resolve once review is underway.
CDISC, The ADaM Basic Data Structure for Time-to-Event Analyses v1.0, 2012; ADaM Implementation Guide v1.3, CDISC, November 2021.
FDA Guidance for Industry: Clinical Trial Endpoints for the Approval of Cancer Drugs and Biologics, and the FDA Study Data Technical Conformance Guide (current edition), fda.gov.
Eisenhauer, E.A. et al. “New response evaluation criteria in solid tumours: Revised RECIST guideline (version 1.1).” European Journal of Cancer, 2009.
CDISC ADaM Conformance Rules v5.0; CDISC Open Rules Engine (CORE), github.com/cdisc-org/cdisc-rules-engine.
PharmaSUG and PHUSE proceedings (lexjansen.com). Extensive ADTTE literature: censoring-rule implementation, PFS derivation patterns, and TTE QC strategies, 2013–2025.
No comments yet. Be the first!
