Comparisons

USDM vs SDTM

USDM and SDTM both come from CDISC, both describe clinical trials, and both use the words 'arm' and 'epoch.' Here's exactly how they differ and how they connect.

The core difference: planned design vs. collected data

The simplest way to separate USDM from SDTM is when each one applies in a study's lifecycle:

USDM StudyDesign planned, pre-execution SDTM Datasets collected, submitted StudyArm / StudyEpoch / StudyElement TA / TE domains (Trial Arms, Elements) Encounter TV domain (Trial Visits) EligibilityCriterion TI domain (Inclusion/Exclusion)
USDM defines the trial before it runs; SDTM Trial Design domains (TA/TE/TV/TI) are largely auto-derivable from a well-formed USDM StudyDesign.

USDM is a design-time model. It exists before a single subject is enrolled, and it describes what the study is supposed to do: which arms exist, what happens in each epoch, what gets measured at each visit, and what the estimand of interest is. SDTM (Study Data Tabulation Model) is a submission-time model. It exists after data collection, and it describes the tabulated, tabular datasets (DM, AE, VS, LB, and so on) that get submitted to a regulator.

They overlap in exactly one place on purpose: SDTM's Trial Design Model domains (TA, TE, TV, TI, TS) describe the planned design retrospectively, in the same conceptual terms USDM uses prospectively. That overlap is intentional — USDM was built to align with the existing SDTM Trial Design conventions specifically so that those domains could be automated.

USDM → SDTM Trial Design mapping

USDM class SDTM domain / concept What it carries
StudyArm TA (Trial Arms) Arm name, type, description — a planned subject pathway.
StudyElement, transition rules TE (Trial Elements) Element description, start rule, end rule.
StudyCell TA (epoch sequence per arm) Which elements occur in which epoch, for which arm.
Encounter + previous/next TV (Trial Visits) Visit name, type, ordering, timing.
EligibilityCriterion / EligibilityCriterionItem TI (Trial Inclusion/Exclusion Criteria) Criterion identifier, category, and text — identifier and category attributes were designed to align directly with IETESTCD / IECAT.
StudyDesign attributes (phase, type, blinding) TS (Trial Summary) Design-level parameters stored as TS parameter/value pairs.

CDISC publishes a maintained sdtm_mapping.xlsx spreadsheet in the DDF-RA GitHub repository (Documents/Mappings) with the exact field-level mapping, and CDISC's training materials show working examples of USDM-to-TV mappings expressed as JSONata queries executed directly against USDM API JSON.

Why you still need both standards

USDM cannot replace SDTM because they answer different questions and are governed by different parts of a submission:

  • USDM answers: "What was the plan?" — arms, epochs, visits, assessments, estimands, as designed.
  • SDTM answers: "What actually happened, tabulated for review?" — subject-level, collected, submitted data (demographics, adverse events, labs, vitals).
  • SDTM's Trial Design domains are the one exception — they restate the plan (USDM's job) in SDTM's submission format, which is exactly the seam USDM is built to auto-populate.

In practice, mature CDISC 360-style pipelines treat USDM as the upstream source of truth for study design metadata, and treat SDTM (including Trial Design domains) as a downstream, derived artifact — generated, not hand-built, wherever the USDM content is rich enough to support it. See CDISC 360 Explained and USDM Use Cases for how this plays out in real pipelines.

Worked example: one Study Cell, two standards

Consider a two-arm, three-epoch trial. In USDM, this is six StudyCell instances (2 arms × 3 epochs), each pointing to one or more StudyElements:

{
  "id": "StudyCell_2",
  "instanceType": "StudyCell",
  "armId": "StudyArm_1",
  "epochId": "StudyEpoch_2",
  "elementIds": ["StudyElement_2"]
}

The equivalent SDTM TA domain record (conceptually) restates the same fact in tabular form: ARMCD=A, TAETORD=2, ETCD=DRUGX, EPOCH=TREATMENT. Because both sides describe the identical design fact, a deterministic transform — not a human re-reading a protocol — can produce one from the other.

Terminology reuse: how much CT do USDM and SDTM actually share?

Because USDM and SDTM come from the same organization, they deliberately reuse controlled terminology wherever the underlying concept is identical, rather than maintaining two parallel codelists for the same thing. Concrete examples pulled directly from the USDM controlled terminology spreadsheet:

USDM attribute Shared codelist source
StudyEpoch.type SDTM Terminology Codelist C99079 (Epoch)
Encounter.environmentalSettings SDTM Terminology Codelist C127262 (Environmental Setting)
Encounter.contactModes SDTM Terminology Codelist C171445 (Mode of Subject Contact)
StudyArm.type Protocol Terminology Codelist C174222 (Arm Type)
StudyDesign.studyPhase SDTM Terminology Codelist C66737 (Trial Phase)

Only where SDTM's existing terminology genuinely doesn't cover a USDM-specific concept (for example, StudyAmendmentReason or GovernanceDate.type) does USDM introduce its own DDF-specific codelist. This is a deliberate governance choice: CDISC and ICH jointly maintain the controlled terminology behind both standards specifically to keep this kind of reuse consistent and avoid semantic drift between them over time.

A common point of confusion: "Epoch" means slightly different things

Both standards use the word "Epoch," and the concepts are closely related but not byte-for-byte identical in scope. In USDM, StudyEpoch is a first-class design object with its own id, ordering (previous/next), and transition rules, referenced from StudyCell and from every ScheduledActivityInstance/Encounter in the timeline. In SDTM, EPOCH is usually a variable value stamped onto observation records (in domains like VS or AE) to indicate which period an observation falls into — it's a classification tag on collected data, not a standalone design object. USDM's StudyEpoch is the upstream source of truth that the downstream SDTM EPOCH variable value should ultimately be populated from.

Frequently confused terms, clarified

Term In USDM In SDTM
Arm StudyArm: a planned pathway definition, referenced by StudyCell. ARM/ARMCD: a variable value on TA and on subject-level domains.
Visit Encounter: a design-time object with ordering and transition rules. VISIT/VISITNUM: variable values stamped on collected observation records.
Element StudyElement: a treatment-strategy building block with start/end rules. ETCD/ELEMENT in TE/TA: the same concept, restated as domain variables.

The pattern is consistent throughout: USDM's classes are the design-time objects; SDTM's variables are flattened, tabulated restatements of those same design facts, stamped onto collected data records after the fact.

Practical guidance: building a USDM-to-SDTM pipeline

If you're implementing this mapping yourself rather than using CDISC's published sdtm_mapping.xlsx, the practical build order that avoids rework is: (1) validate the USDM StudyDesign against the CORE rules first, since a structurally invalid design will produce a structurally invalid TA/TE/TV/TI output; (2) generate TE from StudyElement plus its transition rules; (3) generate TA from StudyCell, walking the epoch order via previous/next; (4) generate TV from Encounter, again walking its own ordering chain; (5) generate TI last, since EligibilityCriterion.identifier and category map almost directly to IETESTCD/IECAT with minimal transformation logic required.

A note on versioning and amendments

One more practical difference worth knowing: USDM treats a protocol amendment as a new StudyVersion of the same Study, with full amendment metadata (StudyAmendment, reasons, impacts, prior-amendment history) built directly into the model. SDTM has no equivalent concept — a submission simply contains the final, as-conducted dataset, with protocol deviations captured separately (typically in a Trial Summary parameter or a dedicated deviations dataset). This is another reason USDM can't be replaced by SDTM: SDTM was never designed to carry a design's version history, only its final collected state.

Frequently asked questions

Does USDM replace SDTM?

No. USDM describes a trial's planned design before it starts; SDTM (and the SDTM Implementation Guide) describes the tabulated, collected data submitted after (or during) the trial. USDM is designed to make the SDTM Trial Design domains easier to generate, not to replace SDTM's data tabulation role.

Which SDTM domains does USDM map to most directly?

The SDTM Trial Design domains: TA (Trial Arms), TE (Trial Elements), TV (Trial Visits), and TI (Trial Inclusion/Exclusion Criteria). USDM's StudyArm/StudyEpoch/StudyElement/StudyCell classes and EligibilityCriterion class were deliberately modeled to align with these domains.

Can USDM automatically generate SDTM datasets?

USDM can support automated creation of the SDTM Trial Design domains (TA, TE, TV, TI, and TS-relevant fields) because the underlying structures are aligned. It does not, by itself, generate subject-level observation domains like VS or LB — those come from actual collected data, though USDM's Biomedical Concepts do inform how those domains should be specified.

Does USDM use the same controlled terminology as SDTM?

USDM reuses SDTM Controlled Terminology codelists wherever the concepts are shared (e.g., Epoch Type, Environmental Setting, Route of Administration), and adds DDF-specific codelists only where SDTM CT doesn't already cover a concept.