Introduction
SDTM-to-ADaM traceability is one of the most important quality concepts in a modern
clinical-trial submission. The goal is not merely to demonstrate that an ADaM dataset
was produced from an SDTM dataset. The stronger objective is to make the analytical
lineage understandable: a reviewer should be able to start with an analysis result,
identify the ADaM variables and records that support it, understand the derivations,
and ultimately follow those derivations back to the relevant standardized observations.
That chain becomes difficult when an analysis variable is not a direct copy of a source
variable. Baseline flags, treatment-emergent flags, analysis windows, change from baseline,
time-to-event endpoints, censoring rules, population flags, imputation, parameter
construction, and composite endpoints can all introduce several layers of logic between
SDTM and the final result.
Core principle:
Traceability is not the same thing as provenance. Provenance answers
where a value came from; traceability also explains
how the value was transformed, filtered, classified, or combined
to support the analysis.
What SDTM-to-ADaM Traceability Means
A useful way to think about traceability is as a directed chain:
SDTMStandardized observations and domains
→
ADaMAnalysis variables, records, and populations
→
OutputTables, listings, figures, and statistical results
A complete chain may also include specifications, controlled terminology, derivation
programs, metadata, analysis conventions, and validation evidence. Not every ADaM
variable has a one-to-one SDTM source.
For a simple copied variable, traceability may be nearly direct. For a derived endpoint,
the chain can be much longer:
SDTM observationsLB, AE, EX, DS, VS, or other domains
→
Derived ADaM variablesBASE, CHG, AVAL, ANL01FL, TRTEMFL, etc.
→
Analysis population / parameterRules determine which records contribute
The important question is not "Which SDTM variable equals this ADaM variable?"
but "What source observations and rules are sufficient to reproduce this analysis value?"
The Four Levels of Traceability
1. Dataset-level traceability
Dataset-level traceability identifies the broad source-to-target relationship. For
example, an ADAE dataset may use observations from AE together with subject-level
treatment and population information from ADSL.
2. Variable-level traceability
Variable-level traceability identifies the SDTM variables, ADaM variables, or other
metadata elements used to construct a particular analysis variable. A variable such
as TRTEMFL is not adequately described as "from AE." Its
derivation needs to identify the treatment start date, event start date, treatment
assignment or exposure convention, and the comparison rule.
3. Record-level traceability
Record-level traceability answers which observations contributed to an analysis record.
This matters when multiple SDTM records can produce one ADaM record, when records are
filtered by analysis flags, or when an analysis record is created from a combination of
domains.
4. Derivation-level traceability
Derivation-level traceability documents the actual analytical logic. This is the most
important level for variables such as baseline, change, treatment-emergent status,
analysis windows, censoring indicators, and derived endpoints.
| Level | Question it answers | Typical evidence |
| Dataset | Which datasets feed this analysis dataset? | ADaM specification, data flow, program dependencies |
| Variable | Which source fields contribute to this variable? | Metadata, derivation specification, source mapping |
| Record | Which observations produced this analysis record? | Keys, source identifiers, record-selection logic |
| Derivation | What rules transformed the source into the analysis value? | Annotated specification, code, derivation text, validation |
Direct Mapping vs. Derived Mapping
A frequent mistake is to document every variable as though it were a direct source
mapping. Consider an ADLB record containing AVAL,
BASE, and CHG. These variables
can all be related to the same SDTM LB observation, but their derivations are different.
For example, if the baseline value is 120 and the post-baseline value is 108:
\[
CHG = AVAL - BASE = 108 - 120 = -12
\]
The source trace therefore cannot stop at "LB.LBSTRESN." The baseline selection rule
must also be traceable, because a different baseline record would produce a different
BASE and therefore a different CHG.
Best practice:
Document both the source variable and the
selection/derivation rule. "LB.LBSTRESN → AVAL" is useful;
"LB.LBSTRESN → AVAL, with BASE selected as the last non-missing scheduled assessment
on or before treatment start according to the SAP-defined rule → CHG" is substantially
more auditable.
A Practical Traceability Model
For most ADaM projects, a five-part model is sufficient to make traceability explicit:
1
Source: Identify the originating SDTM domain, variable, record, and key where applicable.
2
Selection: Explain which source records qualify and which are excluded.
3
Transformation: Describe calculations, standardization, joins, conversions, and derived values.
4
Classification: Identify analysis flags, treatment periods, visits, parameters, censoring, and population membership.
5
Output use: Identify how the final ADaM record or variable contributes to a table, listing, figure, or endpoint.
Example 1: Tracing ADAE
Adverse-event analysis is a good example because the final analysis record often combines
event information with subject-level treatment and population information.
| ADAE element | Potential source | Traceability requirement | Why it matters |
| SOURCEAE term |
AE.AETERM / AE.AEDECOD |
Identify the originating AE record and coding convention. |
Supports event identification and categorization. |
| DERIVEDTRTEMFL |
AE.AESTDTC + treatment start |
Document the temporal comparison and treatment-emergence convention. |
Determines whether an event enters TEAE summaries. |
| DERIVEDTRTA |
ADSL treatment variables |
Document which treatment assignment variable is used and why. |
Controls treatment-arm reporting. |
| FILTERANL01FL |
AE record + analysis rules |
Document population, treatment-emergent, duplicate, and other inclusion rules. |
Determines whether the record contributes to analysis. |
Suppose a patient has an AE beginning two days after first dose. The traceability should
not merely say that the ADAE record came from AE. It should allow the reviewer to establish
the event date, treatment start, comparison convention, and resulting flag.
\[
\text{TRTEMFL} =
\begin{cases}
\text{Y}, & \text{if the event satisfies the prespecified treatment-emergent rule}\\
\text{N}, & \text{otherwise}
\end{cases}
\]
Important:
The exact treatment-emergence rule must follow the study's prespecified analysis
conventions. The traceability document should describe the implemented rule rather than
assuming that every study defines treatment-emergent status identically.
Example 2: Tracing ADLB
Laboratory analyses commonly require more than copying an LB result. An ADLB record may
contain a standardized analysis value, baseline, change, percentage change, analysis
visit, treatment period, and one or more analysis flags.
| Variable | Conceptual derivation |
| AVAL | Selected numeric laboratory result from the qualifying SDTM LB record. |
| BASE | Selected baseline laboratory result according to the study's baseline rule. |
| CHG | Post-baseline analysis value minus baseline. |
| PCHG | Change divided by baseline, expressed as a percentage when defined. |
| ANL01FL | Indicates whether the record satisfies the relevant analysis-record selection rule. |
The percentage-change derivation can be expressed as:
\[
PCHG = \frac{AVAL - BASE}{BASE}\times100
\]
If BASE is zero, however, the calculation is not valid.
A robust derivation therefore includes an explicit denominator rule rather than silently
producing an infinite or missing value. The traceability specification should state how
zero baselines are handled.
Example 3: Tracing ADSL Population Flags
ADSL often acts as the subject-level foundation for downstream ADaM datasets. A population
flag can depend on several source domains and protocol-defined rules. For example, a safety
population flag may depend on exposure, while an efficacy population flag may require
additional criteria.
This creates an important distinction:
Source fact
The subject received a dose, or has a qualifying SDTM exposure record.
Analysis classification
The subject satisfies the study-specific definition of the safety population.
The second statement is not simply a copy of the first. The population definition is an
analysis rule. Good traceability preserves that distinction.
Example 4: Tracing ADTTE
Time-to-event datasets are among the strongest tests of traceability because an endpoint
can depend on an event date, a start date, censoring rules, competing information, and
a priority hierarchy.
A typical event-time calculation can be expressed conceptually as:
\[
ADT = EVENTDT - STARTDT + 1
\]
But this equation alone is not sufficient. Traceability should identify:
- What defines
STARTDT?
- What event qualifies as the endpoint?
- Which date is selected when multiple qualifying events exist?
- What happens when no event occurs?
- What date is used for censoring?
- How is the event indicator derived?
- How are partial dates handled?
- What happens when the event and censoring information conflict?
Advanced principle:
For ADTTE, tracing only the final event date is insufficient. The endpoint definition,
event-selection hierarchy, censoring rule, and analysis-time calculation should all be
traceable.
Traceability and Keys
Keys are essential because variable-level provenance without record identity can be
ambiguous. Depending on the dataset and derivation, useful identifiers can include
USUBJID, parameter identifiers, visit identifiers, dates,
sequence numbers, and source-domain sequence variables.
For example, when an ADaM record represents an AE, a source sequence such as the SDTM
AE sequence can provide a powerful record-level anchor. When an analysis record combines
multiple source observations, the specification should make that many-to-one or one-to-many
relationship explicit rather than pretending that a single source record exists.
Traceability Matrix Design
A traceability matrix is useful when it remains focused on analytical lineage rather than
becoming a second copy of the entire programming specification.
| Target | Source | Rule | Evidence | Validation |
| ADLB.AVAL | LB.LBSTRESN | Select qualifying analysis result | ADLB spec + program | Source-to-target comparison |
| ADLB.BASE | LB.LBSTRESN | Select baseline record per SAP/spec | Baseline derivation | Independent baseline check |
| ADLB.CHG | ADLB.AVAL + BASE | AVAL − BASE | Derivation metadata | Recalculation |
| ADAE.TRTEMFL | AE.AESTDTC + ADSL treatment date | Apply treatment-emergence rule | Derivation specification | Boundary-date test cases |
| ADTTE.AVAL | Event/censoring sources + ADSL | Endpoint and censoring hierarchy | ADTTE spec | Independent endpoint derivation |
Good matrix design:
A reviewer should be able to understand the lineage without reading source code, but
the matrix should be detailed enough that the source code can be reconciled against it.
Do Not Confuse Traceability With Program Dependency
A program dependency graph tells you that ADLB was generated by a particular program
using certain input datasets. That is useful, but it does not necessarily explain why
a particular value was selected.
For example:
ADLB = build_adlb.sas
inputs = LB + ADSL
is a dependency statement. It does not explain which LB record became baseline, why a
record received ANL01FL="Y", or how CHG
was calculated.
Strong traceability therefore combines technical dependency with
analytical derivation logic.
Traceability for Analysis Flags
Analysis flags deserve special attention because they often control the denominator of
a summary. A variable such as ANL01FL can look like a simple
Y/N field, but its effect on a table can be substantial.
A robust traceability statement should identify:
- The source records considered.
- The population definition.
- The treatment-period requirement.
- The visit or window requirement.
- Duplicate-record handling.
- Missing-value handling.
- Any parameter-specific restrictions.
This is especially important when the same ADaM dataset supports several tables with
different analysis flags. Traceability should make it possible to understand why a record
is present in the dataset but absent from a particular analysis.
Baseline Traceability
Baseline is one of the most common sources of hidden derivation complexity. "Baseline =
last value before treatment" may sound precise, but a real study may also specify allowable
visits, unscheduled assessments, repeated assessments on the same day, treatment timing,
missingness, or other selection rules.
A strong baseline derivation can be thought of as:
Candidate recordsAll qualifying pre-treatment observations
→
Selection hierarchyVisit, date, timing, duplicate rules
→
BASESelected analysis baseline value
The traceability evidence should preserve the candidate set and selection rule. If only
the final baseline value is retained, reconstructing the reason for selection may be
difficult.
Analysis Windows and Traceability
Analysis windows create another layer between SDTM timing and ADaM records. A measurement
collected on Day 43 might be assigned to a nominal Week 6 visit if the study's windowing
rules allow it. The traceability must therefore distinguish the actual observation date
from the derived analysis visit.
| Concept | Example | Traceability question |
| Actual date | Day 43 | Which SDTM observation occurred on this date? |
| Nominal visit | Week 6 | What visit definition generated this label? |
| Window | Days 36–50 | Why did Day 43 qualify? |
| Record selection | One record retained | Why was this record selected over alternatives? |
Many-to-One and One-to-Many Traceability
Not all relationships are one-to-one. A single ADaM record can be constructed from several
SDTM observations. Conversely, one SDTM record may contribute to multiple ADaM parameters
or analysis records.
Examples include:
- Multiple laboratory components contributing to a derived composite endpoint.
- One AE record appearing under several analysis categorizations.
- Multiple SDTM dates contributing to one time-to-event endpoint.
- One subject-level treatment record being inherited by many downstream ADaM records.
- Multiple efficacy observations being used to construct a best-response endpoint.
The documentation should represent these relationships explicitly. A single "source
variable" column can be misleading when the true relationship is many-to-many.
Traceability for Derived Parameters
BDS datasets frequently contain a parameter identifier such as PARAMCD
and a corresponding analysis value AVAL. A parameter may be
constructed from different source concepts even when the final dataset has a uniform
structure.
For example, a percent-change parameter might use:
\[
PARAMCD = \text{PCHG}
\qquad
AVAL = \frac{POST - BASE}{BASE}\times100
\]
The traceability should identify the source observations used for POST
and BASE, not merely document the formula.
Traceability Through Multiple ADaM Datasets
A common misconception is that traceability must go directly from SDTM to the final
analysis dataset. In practice, an analysis chain may legitimately pass through ADSL and
other ADaM datasets.
SDTMAE, EX, LB, DS, etc.
→
ADSLSubject-level treatment and population context
→
ADAE / ADLB / ADTTEAnalysis-specific records and endpoints
In such cases, the traceability chain should show the intermediate ADaM layer. This is
particularly important when an inherited variable is transformed again downstream.
Traceability and Define-XML
Metadata provides another important layer of evidence. Dataset and variable metadata
should explain the meaning, origin, and derivation of analysis variables. Where a variable
is derived, the metadata should be consistent with the implemented programming logic.
The strongest approach is to maintain consistency among:
- ADaM specifications
- Program source code
- Define-XML metadata
- Traceability matrix or lineage documentation
- Analysis datasets
- Validation evidence
Consistency rule:
If the specification says one derivation, the code implements another, and the metadata
describes a third, the existence of a traceability matrix does not solve the underlying
problem. Traceability is strongest when the artifacts agree.
Programmatic Traceability in SAS
In SAS environments, traceability can be strengthened by retaining source identifiers,
using explicit derivation sections, and avoiding opaque transformations when the lineage
would become difficult to inspect.
/* Conceptual example — adapt to the study specification */
data adlb;
merge lb_analysis(in=inlb)
adsl(keep=usubjid trtsdt);
by usubjid;
if inlb;
/* Source: selected LB analysis value */
aval = lbstresn;
/* Derivation: baseline selection performed upstream */
base = baseline_value;
/* Derivation: change from baseline */
if n(aval, base) = 2 then chg = aval - base;
/* Analysis record selection */
if qualifying_record = 1 then anl01fl = "Y";
run;
The code comments are not a substitute for controlled specifications, but meaningful
source annotations can make code review and independent validation substantially easier.
Programmatic Traceability in R
The same principle applies to R-based pipelines. Functions should make source-to-target
relationships visible rather than hiding critical derivations inside large opaque
pipelines.
adlb <-
lb %>%
filter(analysis_qualifier == "Y") %>%
group_by(USUBJID, PARAMCD) %>%
mutate(
BASE = derive_baseline(LBSTRESN, LBDTC, TRTSDT),
CHG = AVAL - BASE,
ANL01FL = derive_analysis_flag(...)
)
For reusable programming frameworks, the function specification should explain the
expected inputs, output variables, selection rules, and edge cases. This turns the
software layer itself into useful traceability evidence.
Independent Validation of Traceability
Traceability should be validated independently of the programming logic that created the
dataset. Re-running the same code with the same assumptions is not a strong test of
lineage correctness.
Value reconciliation
Recalculate selected ADaM values independently from the documented source observations.
Record reconciliation
Confirm that qualifying source records and analysis records agree with the specification.
Boundary testing
Test dates exactly on, before, and after treatment or analysis-window boundaries.
Missingness testing
Verify behavior for missing source values, partial dates, and incomplete assessments.
Traceability Validation Checks
A practical validation suite should include at least the following categories.
| Check | Purpose |
| Source record existence | Confirm every traceable analysis record can be associated with the expected source evidence. |
| Key uniqueness | Detect unexpected duplication that can corrupt joins and derivations. |
| Derivation recalculation | Independently reproduce calculated values such as CHG, PCHG, and analysis time. |
| Flag logic | Verify analysis and population flags against their documented definitions. |
| Date logic | Check treatment dates, event dates, windows, and censoring boundaries. |
| Metadata consistency | Compare specifications, metadata, code, and datasets for contradictions. |
Traceability Failure Modes
- "From AE" without a derivation rule. This identifies a domain but not the analytical logic.
- Tracing only copied variables. Derived variables often have the greatest analytical impact.
- Ignoring source-record selection. The correct source value depends on which record was selected.
- Missing intermediate ADaM datasets. ADSL and other analysis datasets can be essential parts of the lineage.
- Documenting code rather than the analysis rule. Code can change; the analytical requirement should remain understandable.
- Using ambiguous terms such as "baseline." Baseline must have a reproducible selection rule.
- Failing to trace analysis flags. Flags can change denominators and therefore affect every downstream summary.
- Ignoring edge cases. Missing values, partial dates, duplicate records, and boundary dates should be addressed explicitly.
- Creating a matrix that nobody maintains. A stale traceability document can be worse than no document because it creates false confidence.
- Over-documenting implementation details. Traceability should remain understandable at the analytical level rather than becoming an unreadable dump of code.
Best Practice: Trace the Rule, Not Just the Field
The single most useful improvement in traceability documentation is to move from field
mapping toward rule mapping.
Compare these two statements:
Weak
ADLB.BASE comes from LB.
Strong
ADLB.BASE is the selected qualifying pre-treatment laboratory result according to the study's prespecified baseline-selection hierarchy, with the selected source observation retained for record-level reconciliation.
The second statement is much closer to what a reviewer needs: it describes the analytical
rule that makes the value reproducible.
Traceability for Composite Endpoints
Composite endpoints require particular care because the final result can depend on several
event components. A traceability design should show each component separately before
showing how they are combined.
Component ASource observations + component rule
+
Component BSource observations + component rule
→
Composite endpointPrespecified combination rule
This prevents a common failure in which a reviewer can see the final endpoint but cannot
determine which component triggered it.
Traceability in Oncology Analysis
Oncology analyses frequently combine longitudinal measurements, response assessments,
progression events, censoring, treatment exposure, and disease-specific rules. For
example, a time-to-event endpoint may depend on imaging assessments, new lesions,
clinical progression, and censoring information.
A robust oncology lineage therefore often looks more like:
SDTM observationsTumor assessments, exposure, disposition, events
→
Analysis derivationsResponse, progression, censoring, population
→
Endpoint ADaMTime-to-event or response endpoint
The traceability should preserve the clinical logic, not merely the programming path.
Traceability and Final Outputs
The chain does not necessarily stop at the ADaM dataset. For critical analyses, it is
useful to be able to connect an output statistic back to the ADaM records used to
calculate it.
For example, a treatment-group mean change can be viewed conceptually as:
\[
\bar{X}_{g} = \frac{1}{n_g}\sum_{i=1}^{n_g} CHG_i
\]
A defensible lineage can therefore identify:
- The output row and treatment group.
- The analysis parameter and time point.
- The records satisfying the analysis flag.
- The variable contributing the numerical value.
- The statistical method used to summarize those values.
This is especially valuable when reconciling tables against analysis datasets during
quality control or regulatory review.
Designing a Maintainable Traceability System
Traceability should be designed as part of the data pipeline rather than added immediately
before submission. A maintainable system typically has a small number of controlled
artifacts with clearly defined ownership.
| Artifact | Primary purpose |
| SDTM specification | Defines standardized source structure and terminology. |
| ADaM specification | Defines analysis variables, structures, and derivations. |
| Traceability matrix | Connects source observations, derivation rules, and analysis targets. |
| Program source | Implements the approved derivations. |
| Metadata / Define-XML | Communicates dataset and variable meaning and derivation information. |
| Validation evidence | Demonstrates that the implemented lineage is consistent and reproducible. |
A Recommended Traceability Workflow
1
Start with the endpoint. Identify the exact analysis result that must be reproducible.
2
Identify contributing ADaM records. Determine the parameter, population, treatment, visit, and analysis flags.
3
Walk backward through derivations. For every derived variable, identify its immediate inputs and selection rules.
4
Reach SDTM observations. Identify the actual source domain, variable, record key, and date where relevant.
5
Validate forward. Independently reproduce the ADaM value from the documented source chain.
6
Reconcile metadata. Confirm specifications, code, datasets, and metadata tell the same story.
Backward Traceability vs. Forward Traceability
Both directions are useful. Backward traceability starts with an output
and asks where it came from. Forward traceability starts with source
observations and asks where they were used.
| Direction | Typical question | Best use |
| Backward | Why does this reported value equal this number? | Review, reconciliation, investigation |
| Forward | Which analyses use this source observation? | Impact assessment, change control, data review |
A mature traceability system supports both directions, even if the formal documentation
is organized primarily around the analysis dataset.
Change Control and Traceability
When a source-domain rule, analysis convention, or endpoint definition changes, traceability
should make the impact visible. A change to an SDTM variable may affect several ADaM
variables, which may affect multiple outputs.
A useful impact chain is:
Changed source ruleSDTM structure or content changes
→
Impacted derivationsADaM variables and flags
→
Impacted outputsTables, listings, figures, endpoints
If the lineage is well maintained, impact assessment becomes faster and less dependent
on tribal knowledge.
When Traceability Should Be More Granular
Not every variable needs the same level of detail. Granularity should increase when a
variable has a large analytical consequence or a complex derivation.
- Primary and key secondary endpoints
- Population flags
- Analysis flags controlling denominators
- Time-to-event event and censoring variables
- Baseline variables with complex selection rules
- Composite endpoints
- Variables derived from multiple domains
- Variables affected by partial-date or missing-data rules
Conversely, a straightforward copied identifier usually does not require a page of
derivation prose. The goal is sufficient evidence, not maximum documentation volume.
A Practical Traceability Checklist
- Every important ADaM derived variable has an explicit derivation rule.
- Source domains and variables are identified precisely.
- Source-record selection rules are documented.
- Intermediate ADaM datasets are included when they contribute to the lineage.
- Analysis flags are traceable.
- Baseline selection is reproducible.
- Analysis windows are distinguishable from actual observation dates.
- Time-to-event event and censoring rules are explicit.
- Composite endpoints show their component lineage.
- Specifications, code, metadata, and datasets are reconciled.
- Independent validation can reproduce important derived values.
- Traceability artifacts are maintained under change control.
Common Questions
Does every ADaM variable need a direct SDTM source?
No. Some variables are derived entirely within ADaM, inherited from another ADaM dataset,
or created to represent an analysis classification. The requirement is to document the
actual lineage, not to force every variable into a one-to-one SDTM mapping.
Is a traceability matrix enough?
No. A matrix is one piece of the evidence. It should agree with the ADaM specification,
programming implementation, metadata, and validation results.
Should source sequence numbers be retained?
When they materially improve record-level reconciliation, retaining source identifiers
can be highly useful. The appropriate implementation depends on the dataset structure
and study conventions.
Should traceability include final tables and figures?
For important analyses, connecting the output to the ADaM records and variables that
support it is valuable. The level of output traceability should reflect the criticality
of the analysis and the review context.
Final Perspective
The strongest SDTM-to-ADaM traceability is not a decorative diagram and not a list of
dataset dependencies. It is a reproducible explanation of analytical lineage.
A reviewer should be able to move from an analysis result to the contributing ADaM
records, from those records to the variables and derivation rules that created them,
and from those derivations to the underlying SDTM observations. At every important
step, the selection criteria and transformation logic should be understandable.
The practical standard is therefore:
Source + selection + transformation + classification + output use.
If those five elements are consistently documented and independently validated, the
SDTM-to-ADaM chain becomes substantially easier to review, troubleshoot, maintain, and
defend.
Summary
| Best practice | Why it matters |
| Trace rules, not just variables | Explains how the analysis value was actually produced. |
| Retain record identity where useful | Allows source observations to be reconciled directly. |
| Trace flags and populations | Prevents hidden denominator and inclusion errors. |
| Show intermediate ADaM layers | Preserves the complete analytical chain. |
| Validate independently | Tests lineage rather than merely repeating the production program. |
| Keep metadata aligned | Prevents contradictions between specifications, code, and delivered data. |
| Design for change | Makes impact assessment faster and reduces maintenance risk. |