Model 2.0IG 3.4Content 1.0.0Curated educational coverage

Synthetic example / DM

One subject, several identities

Separate an app-local key from the identifiers used to join an educational extract.

The application keys person-a and person-b are convenient for the invented input. The output uses SYN-001 and SYN-002 as its stable subject references. Keeping the original input IDs in the manifest lets you inspect the transformation without claiming those IDs are SDTM variables. Notice that SUBJID remains a string: converting 001 to a number would silently change its representation.

01 / The collection

Original synthetic input · JSON
[
  {
    "id": "person-a",
    "study": "CLD-SYN-001",
    "subject": "SYN-001",
    "localLabel": "001",
    "age": 34,
    "referenceDate": "2025-01-10"
  },
  {
    "id": "person-b",
    "study": "CLD-SYN-001",
    "subject": "SYN-002",
    "localLabel": "002",
    "age": 47,
    "referenceDate": "2025-01-12"
  }
]

02 / The representation

2 records · all fields included
DM synthetic output
STUDYIDDOMAINUSUBJIDSUBJIDAGESEXRFSTDTC
CLD-SYN-001DMSYN-00100134null (missing)2025-01-10
CLD-SYN-001DMSYN-00200247null (missing)2025-01-12
Inspect output JSON and CSV
Output JSON
[
  {
    "STUDYID": "CLD-SYN-001",
    "DOMAIN": "DM",
    "USUBJID": "SYN-001",
    "SUBJID": "001",
    "AGE": 34,
    "SEX": null,
    "RFSTDTC": "2025-01-10"
  },
  {
    "STUDYID": "CLD-SYN-001",
    "DOMAIN": "DM",
    "USUBJID": "SYN-002",
    "SUBJID": "002",
    "AGE": 47,
    "SEX": null,
    "RFSTDTC": "2025-01-12"
  }
]

Output CSV
STUDYID,DOMAIN,USUBJID,SUBJID,AGE,SEX,RFSTDTC
CLD-SYN-001,DM,SYN-001,001,34,,2025-01-10
CLD-SYN-001,DM,SYN-002,002,47,,2025-01-12

03 / The decisions between them

study → STUDYID
Copy the fictional study identifier.
subject → USUBJID
Copy the stable authored subject key; do not expose the app-local id.
localLabel → SUBJID
Preserve the string and leading zeros.
age → AGE
Copy an invented integer; no age derivation is implied.
referenceDate → RFSTDTC
Preserve the date string; this is not a universal reference-date rule.
(authored) → DOMAIN
Set constant DM for this teaching example.
(not collected) → SEX
Missing categorical values stay null; no controlled terminology lookup.

Trace each row

  • person-a → subject-identity:1
  • person-b → subject-identity:2

JSON null becomes an empty CSV cell. Empty CSV cells cannot distinguish absent from empty text; use JSON for that distinction.

Read the variable lessons

Follow the source

Original ClinDevLab explanations. Publisher material is linked, not reproduced. Reviewed 8 October 2026.

  • SDTM 2.0https://www.cdisc.org/standards/foundational/sdtm/sdtm-v2-0 · CDISC · 2.0 · accessed 2026-10-08
  • SDTMIG 3.4https://www.cdisc.org/standards/foundational/sdtmig/sdtmig-v3-4 · CDISC · 3.4 · accessed 2026-10-08