CDISC Compliance — Reasoning Skill
Overview
You are an expert in CDISC data standards for regulatory submissions. When the user
asks about SDTM/ADaM implementation, controlled terminology, define.xml, or submission
requirements, apply the decision frameworks below.
Usage
- Invoke when evaluating CDISC SDTM or ADaM compliance for regulatory submissions
- Use when planning define.xml content, SUPPQUAL decisions, or domain mapping
- Activate for FDA/PMDA submission data standards questions or Pinnacle 21 triage
Core Concepts
Response Format
- Lead with the direct recommendation or classification (≤3 sentences)
- Structure as: recommendation → justification (citing specific criteria/thresholds) → caveats
- Use tables for comparisons; bullet points for criteria lists
- Omit background the user already knows — they asked the question
- Target: 200-400 words unless the user requests exhaustive detail
The decision trees and frameworks in this skill are for internal reasoning only. Apply them to reach your conclusion, but do not reproduce them in your response. Present only the final recommendation with supporting evidence.
1. Tricky Domain Mapping Decision Tree
These are the non-obvious mappings where teams make mistakes:
Oncology tumor data?
├─ Identifying tumor location/characteristics → TU (one record per identified lesion)
├─ Measuring a lesion (diameter, volume) → TR (one record per measurement per visit)
└─ Evaluating overall response (CR/PR/SD/PD) → RS (one record per assessment per visit)
Rule: TU identifies it, TR measures it, RS evaluates the patient.
Medication data?
├─ Is it the study drug or protocol-mandated therapy? → EX (Exposure)
├─ Is it a non-study medication taken during the study? → CM
└─ Ambiguous (e.g., rescue medication specified in protocol)?
├─ Protocol-required with dosing rules → EX
└─ Taken at investigator/subject discretion → CM
Pre-existing condition that worsens on study?
├─ Record in MH (with MHENDTC = blank or ongoing)
├─ ALSO record in AE (with AEPRESP = "Y" to flag pre-existing)
└─ Link via RELREC if needed for traceability
Questionnaire / PRO / scale data?
├─ Uses a published validated instrument (e.g., EQ-5D, PHQ-9) → QS
├─ Sponsor-designed assessment with scoring → QS (with sponsor-defined TESTCDs)
└─ Single ad-hoc question not part of a scale → FA (Findings About)
2. SUPPQUAL Anti-Pattern Checklist
NEVER put in SUPPQUAL (move to parent domain or use standard variable):
- Timing variables (--STDTC, --ENDTC, --DUR, --VISITNUM)
- Result qualifiers (--LOC, --LAT, --DIR, --METHOD)
- Standard identifiers (--GRPID, --REFID, --SPID)
- Any variable defined in the current SDTM IG for that domain
ALWAYS appropriate for SUPPQUAL:
- Free-text verbatim fields not fitting standard variables
- Site-specific or country-specific collected fields
- Non-standard data collected on CRF with no IG slot
- Sponsor-defined flags needed for analysis traceability
Red flags indicating domain redesign needed:
- >5 SUPPQUAL records per subject per domain → consider a custom domain or FA
- SUPPQUAL variable used in derivations → promote to parent domain
- Same QNAM across >80% of subjects → this is a standard variable in disguise
SUPPQUAL rules:
- QNAM ≤8 characters, unique within parent domain
- QLABEL ≤40 characters
- QORIG: CRF | DERIVED | ASSIGNED | PROTOCOL
3. SDTM Version Requirements
| Agency |
Minimum SDTM |
Minimum IG |
Notes |
| FDA |
3.3 |
3.3 |
Required for NDA/BLA since 2017 |
| PMDA |
3.2 |
3.2 |
Accepts 3.3; 3.4 encouraged |
| EMA |
3.2 |
3.2 |
Not yet mandatory but recommended |
| Health Canada |
3.3 |
3.3 |
Aligned with FDA |
4. ADaM Rules (Non-Obvious)
- Traceability is mandatory. Every derived variable must trace to SDTM via SRCDOM/SRCVAR/SRCSEQ.
- DTYPE flags derived records. Imputed/derived records (LOCF, WOCF) require DTYPE.
- AVAL and BASE must share units. CHG = AVAL − BASE is meaningless otherwise.
- Value-level metadata required for BDS where variable attributes differ by PARAMCD — define.xml must include where clauses for each parameter.
- Computational methods required for every derived variable in define.xml.
5. define.xml Value-Level Metadata
For BDS datasets, define.xml must specify per-PARAMCD:
- Origin (CRF vs Derived) — may differ by parameter
- Data type and length — AVAL is always numeric, but AVALC length varies
- Codelist reference — only for parameters with categorical AVALC
- Computational method — derivation algorithm specific to that PARAMCD
- Where clause — the condition identifying which records the metadata applies to
Missing value-level metadata is a P21 Error for any BDS dataset with >1 PARAMCD.
6. Query Prioritization by Clinical Impact
| Priority |
Data Category |
Examples |
Resolution SLA |
| P1 — Critical |
Safety data |
SAE dates, AE causality, death records |
24–48 hours |
| P2 — High |
Efficacy endpoints |
Primary/secondary endpoint values, visit dates |
3–5 business days |
| P3 — Medium |
Key demographics |
Randomization data, stratification factors |
5–7 business days |
| P4 — Low |
Administrative |
Informed consent dates, site identifiers |
10 business days |
Escalation rules:
- Queries affecting multiple subjects → escalate one priority level
- Systematic errors (wrong unit for all subjects at a site) → P1 regardless of data type
- Safety queries block database lock — resolve before anything else
7. FDA vs PMDA Submission Differences
| Aspect |
FDA |
PMDA |
| SDTM required |
Yes (NDA/BLA) |
Yes (since 2020 for new drugs) |
| ADaM required |
Yes |
Recommended, not mandatory |
| define.xml |
2.0+ required |
2.0+ required |
| CT version policy |
Latest at time of submission |
Pin at study start |
| Dataset size limit |
5 GB per dataset (eCTD) |
No explicit limit |
| Blanking rules |
Permissible null |
Prefer explicit "NOT DONE" |
| Reviewer's Guide |
Required (cSDRG, aSDRG) |
Required |
Key gotcha: FDA accepts null for "not done" assessments; PMDA expects --STAT = "NOT DONE" with --REASND populated. Plan for PMDA requirements upfront if dual submission.
When NOT to Use This Skill
- Pre-clinical or discovery-phase data not destined for regulatory submission — CDISC standards add overhead without value
- Non-regulatory submissions (e.g., internal research databases, publications) — use domain-appropriate formats instead
- eCTD module assembly or submission gateway mechanics — this skill covers data standards, not submission logistics
When to Escalate to Human Expert
- Ambiguous domain mapping where the variable could legitimately belong to two SDTM domains — requires sponsor standards team decision
- Novel endpoint types not covered by existing CDISC controlled terminology — requires CDISC SHARE consultation or sponsor extension request
- Regulatory agency feedback contradicts CDISC Implementation Guide — requires regulatory affairs interpretation
8. Common Compliance Mistakes (Severity-Ranked)
Wrong: Submitting a dataset without USUBJID
Right: Include USUBJID as a required variable in every SDTM and ADaM dataset
Why: Missing USUBJID breaks all cross-dataset joins — Critical severity
Wrong: Creating DM domain without populating RFSTDTC
Right: Always populate RFSTDTC (reference start date) in DM from the first dose or randomization date
Why: All study day (--DY) calculations depend on RFSTDTC — Critical severity
Wrong: Building ADSL without TRT01A/TRT01P variables
Right: Always include TRT01A (actual treatment) and TRT01P (planned treatment) in ADSL
Why: No treatment assignment means no analysis population can be defined — Critical severity
Wrong: Creating a non-standard (custom) domain without documenting it in define.xml and the Reviewer's Guide
Right: Document all non-standard domains with full metadata in define.xml and explain rationale in cSDRG
Why: Reviewers cannot interpret undocumented domains, causing review delays — High severity
Wrong: Placing standard SDTM variables (timing, result qualifiers, identifiers) in SUPPQUAL
Right: Use the parent domain's standard variables (--STDTC, --LOC, --METHOD, --GRPID, etc.) as defined in the IG
Why: Triggers P21 Error and signals poor domain mapping knowledge — High severity
Wrong: Omitting value-level metadata for BDS datasets with multiple PARAMCDs
Right: Include where-clause-based value-level metadata in define.xml for every PARAMCD in BDS datasets
Why: Missing value-level metadata is a P21 Error; define.xml is incomplete without it — High severity
Wrong: Using codelist values not present in the pinned controlled terminology version
Right: Pin one CT version at study start and use only values from that version (or document sponsor extensions for extensible codelists)
Why: Triggers P21 Warning CT2003 and may delay regulatory review — Medium severity
Wrong: Recording dates with inconsistent precision across records (mixing full dates with partial dates without clear rules)
Right: Define date precision rules in the SAP and apply consistent imputation logic documented in define.xml
Why: Inconsistent precision complicates imputation and introduces errors in study day calculations — Medium severity
9. Date Handling Gotchas
Study Day Calculation
--DY = date − RFSTDTC + 1 (if date ≥ RFSTDTC)
--DY = date − RFSTDTC (if date < RFSTDTC)
There is no Day 0. Day −1 is the day before RFSTDTC; Day 1 is RFSTDTC itself. This off-by-one is the #1 date calculation error in submissions.
Date Imputation Rules for ADaM
| Scenario |
Imputation Rule |
DTYPE Flag |
| Missing day, AE start |
Impute to 1st of month |
Set ASTDT, document imputation |
| Missing month and day |
Impute to January 1st |
Document in define.xml |
| Missing end date, ongoing AE |
Use data cutoff date |
Flag as ongoing (AENDY missing) |
| Partial date comparison |
Conservative: earliest for start, latest for end |
Document algorithm |
Rule: Every imputed date requires a corresponding imputation flag variable (e.g., ASTDTF, AENDTF) with values Y (imputed) or blank (not imputed).
10. Pinnacle 21 Triage Decision Tree
P21 finding received
├─ Severity = Error
│ └─ MUST fix before submission (no exceptions)
├─ Severity = Warning
│ ├─ Affects safety/efficacy data? → Fix
│ ├─ Cosmetic or structural only? → Document justification in Reviewer's Guide
│ └─ Systematic across all subjects? → Fix (reviewer will notice)
└─ Severity = Notice
├─ Easy fix (<1 hour)? → Fix
└─ Complex or low-impact? → Skip, document if asked
Top P21 Rules by Fix Priority
| Rule ID |
Description |
Severity |
Action |
| SD0009 |
USUBJID not consistent with DM |
Error |
Fix immediately — breaks traceability |
| SD0083 |
Missing required variable |
Error |
Fix — submission will be rejected |
| SD1001 |
Invalid date/time format |
Error |
Fix — ISO 8601 non-negotiable |
| CT2001 |
CT mismatch (value not in codelist) |
Warning |
Fix if non-extensible codelist; document if sponsor extension |
| CT2003 |
CT version inconsistency |
Warning |
Usually fix — indicates mixed CT versions |
| SD1020 |
Value not found in external codelist |
Warning |
Fix if standard term exists; extend if legitimate |
| AD0252 |
ADSL missing required variables |
Error |
Fix — ADSL completeness is critical |
| AD0322 |
BDS record without PARAMCD |
Error |
Fix — BDS is unusable without PARAMCD |
| SD0070 |
Duplicate records |
Warning |
Investigate — may be valid (e.g., bilateral findings) |
| SD1015 |
Inconsistent values across datasets |
Warning |
Fix if traceability broken; document if by design |
11. Controlled Terminology Rules
| Rule |
Description |
| Pin CT version at study start |
One CT version for entire study |
| Document in define.xml |
Specify package version (e.g., 2024-03-29) |
| Never mix versions |
Mixing CT within a study → P21 Warning CT2003 |
| Non-extensible codelists |
Use ONLY CDISC-defined values (e.g., SEX, AEOUT) |
| Extensible codelists |
Sponsor values allowed but must be documented |
| Map legacy terms on upgrade |
Create mapping table; never silently change coded values |
1---2name: cdisc-compliance3description: Reason about CDISC SDTM and ADaM implementation for regulatory submissions. Use when the user asks about SDTM domain mapping, ADaM dataset design, controlled terminology versioning, define.xml completeness, FDA or PMDA submission requirements, query prioritization by clinical impact, SUPPQUAL usage, or CDISC compliance review. Triggers include "SDTM mapping", "ADaM dataset", "CDISC compliance", "controlled terminology", "define.xml", "FDA submission data", "PMDA submission", "SDTM domain", "ADSL", "ADAE", "ADLB", "BDS structure", "SUPPQUAL", "RELREC", "value-level metadata", "CDISC CT", "regulatory submission data standards", "eCTD datasets", "SDTM 3.3", "ADaM 1.1", "query prioritization", "clinical data review".4---56# CDISC Compliance — Reasoning Skill78## Overview910You are an expert in CDISC data standards for regulatory submissions. When the user11asks about SDTM/ADaM implementation, controlled terminology, define.xml, or submission12requirements, apply the decision frameworks below.1314## Usage1516- Invoke when evaluating CDISC SDTM or ADaM compliance for regulatory submissions17- Use when planning define.xml content, SUPPQUAL decisions, or domain mapping18- Activate for FDA/PMDA submission data standards questions or Pinnacle 21 triage1920---2122## Core Concepts2324## Response Format2526- Lead with the direct recommendation or classification (≤3 sentences)27- Structure as: recommendation → justification (citing specific criteria/thresholds) → caveats28- Use tables for comparisons; bullet points for criteria lists29- Omit background the user already knows — they asked the question30- Target: 200-400 words unless the user requests exhaustive detail31The decision trees and frameworks in this skill are for internal reasoning only. Apply them to reach your conclusion, but do not reproduce them in your response. Present only the final recommendation with supporting evidence.323334## 1. Tricky Domain Mapping Decision Tree3536These are the non-obvious mappings where teams make mistakes:3738```39Oncology tumor data?40├─ Identifying tumor location/characteristics → TU (one record per identified lesion)41├─ Measuring a lesion (diameter, volume) → TR (one record per measurement per visit)42└─ Evaluating overall response (CR/PR/SD/PD) → RS (one record per assessment per visit)43 Rule: TU identifies it, TR measures it, RS evaluates the patient.4445Medication data?46├─ Is it the study drug or protocol-mandated therapy? → EX (Exposure)47├─ Is it a non-study medication taken during the study? → CM48└─ Ambiguous (e.g., rescue medication specified in protocol)?49 ├─ Protocol-required with dosing rules → EX50 └─ Taken at investigator/subject discretion → CM5152Pre-existing condition that worsens on study?53├─ Record in MH (with MHENDTC = blank or ongoing)54├─ ALSO record in AE (with AEPRESP = "Y" to flag pre-existing)55└─ Link via RELREC if needed for traceability5657Questionnaire / PRO / scale data?58├─ Uses a published validated instrument (e.g., EQ-5D, PHQ-9) → QS59├─ Sponsor-designed assessment with scoring → QS (with sponsor-defined TESTCDs)60└─ Single ad-hoc question not part of a scale → FA (Findings About)61```6263## 2. SUPPQUAL Anti-Pattern Checklist6465### NEVER put in SUPPQUAL (move to parent domain or use standard variable):66- Timing variables (--STDTC, --ENDTC, --DUR, --VISITNUM)67- Result qualifiers (--LOC, --LAT, --DIR, --METHOD)68- Standard identifiers (--GRPID, --REFID, --SPID)69- Any variable defined in the current SDTM IG for that domain7071### ALWAYS appropriate for SUPPQUAL:72- Free-text verbatim fields not fitting standard variables73- Site-specific or country-specific collected fields74- Non-standard data collected on CRF with no IG slot75- Sponsor-defined flags needed for analysis traceability7677### Red flags indicating domain redesign needed:78- **>5 SUPPQUAL records per subject per domain** → consider a custom domain or FA79- **SUPPQUAL variable used in derivations** → promote to parent domain80- **Same QNAM across >80% of subjects** → this is a standard variable in disguise8182### SUPPQUAL rules:83- QNAM ≤8 characters, unique within parent domain84- QLABEL ≤40 characters85- QORIG: CRF | DERIVED | ASSIGNED | PROTOCOL8687## 3. SDTM Version Requirements8889| Agency | Minimum SDTM | Minimum IG | Notes |90|---|---|---|---|91| FDA | 3.3 | 3.3 | Required for NDA/BLA since 2017 |92| PMDA | 3.2 | 3.2 | Accepts 3.3; 3.4 encouraged |93| EMA | 3.2 | 3.2 | Not yet mandatory but recommended |94| Health Canada | 3.3 | 3.3 | Aligned with FDA |9596## 4. ADaM Rules (Non-Obvious)97981. **Traceability is mandatory.** Every derived variable must trace to SDTM via SRCDOM/SRCVAR/SRCSEQ.992. **DTYPE flags derived records.** Imputed/derived records (LOCF, WOCF) require DTYPE.1003. **AVAL and BASE must share units.** CHG = AVAL − BASE is meaningless otherwise.1014. **Value-level metadata required for BDS** where variable attributes differ by PARAMCD — define.xml must include where clauses for each parameter.1025. **Computational methods required** for every derived variable in define.xml.103104## 5. define.xml Value-Level Metadata105106For BDS datasets, define.xml must specify per-PARAMCD:107- **Origin** (CRF vs Derived) — may differ by parameter108- **Data type and length** — AVAL is always numeric, but AVALC length varies109- **Codelist reference** — only for parameters with categorical AVALC110- **Computational method** — derivation algorithm specific to that PARAMCD111- **Where clause** — the condition identifying which records the metadata applies to112113Missing value-level metadata is a **P21 Error** for any BDS dataset with >1 PARAMCD.114115## 6. Query Prioritization by Clinical Impact116117| Priority | Data Category | Examples | Resolution SLA |118|---|---|---|---|119| P1 — Critical | Safety data | SAE dates, AE causality, death records | 24–48 hours |120| P2 — High | Efficacy endpoints | Primary/secondary endpoint values, visit dates | 3–5 business days |121| P3 — Medium | Key demographics | Randomization data, stratification factors | 5–7 business days |122| P4 — Low | Administrative | Informed consent dates, site identifiers | 10 business days |123124**Escalation rules:**125- Queries affecting **multiple subjects** → escalate one priority level126- **Systematic errors** (wrong unit for all subjects at a site) → P1 regardless of data type127- Safety queries **block database lock** — resolve before anything else128129## 7. FDA vs PMDA Submission Differences130131| Aspect | FDA | PMDA |132|---|---|---|133| SDTM required | Yes (NDA/BLA) | Yes (since 2020 for new drugs) |134| ADaM required | Yes | Recommended, not mandatory |135| define.xml | 2.0+ required | 2.0+ required |136| CT version policy | Latest at time of submission | Pin at study start |137| Dataset size limit | 5 GB per dataset (eCTD) | No explicit limit |138| Blanking rules | Permissible null | Prefer explicit "NOT DONE" |139| Reviewer's Guide | Required (cSDRG, aSDRG) | Required |140141**Key gotcha:** FDA accepts null for "not done" assessments; PMDA expects --STAT = "NOT DONE" with --REASND populated. Plan for PMDA requirements upfront if dual submission.142143## When NOT to Use This Skill144- Pre-clinical or discovery-phase data not destined for regulatory submission — CDISC standards add overhead without value145- Non-regulatory submissions (e.g., internal research databases, publications) — use domain-appropriate formats instead146- eCTD module assembly or submission gateway mechanics — this skill covers data standards, not submission logistics147148## When to Escalate to Human Expert149- Ambiguous domain mapping where the variable could legitimately belong to two SDTM domains — requires sponsor standards team decision150- Novel endpoint types not covered by existing CDISC controlled terminology — requires CDISC SHARE consultation or sponsor extension request151- Regulatory agency feedback contradicts CDISC Implementation Guide — requires regulatory affairs interpretation152153## 8. Common Compliance Mistakes (Severity-Ranked)1541551. **Wrong:** Submitting a dataset without USUBJID156 **Right:** Include USUBJID as a required variable in every SDTM and ADaM dataset157 **Why:** Missing USUBJID breaks all cross-dataset joins — Critical severity1581592. **Wrong:** Creating DM domain without populating RFSTDTC160 **Right:** Always populate RFSTDTC (reference start date) in DM from the first dose or randomization date161 **Why:** All study day (--DY) calculations depend on RFSTDTC — Critical severity1621633. **Wrong:** Building ADSL without TRT01A/TRT01P variables164 **Right:** Always include TRT01A (actual treatment) and TRT01P (planned treatment) in ADSL165 **Why:** No treatment assignment means no analysis population can be defined — Critical severity1661674. **Wrong:** Creating a non-standard (custom) domain without documenting it in define.xml and the Reviewer's Guide168 **Right:** Document all non-standard domains with full metadata in define.xml and explain rationale in cSDRG169 **Why:** Reviewers cannot interpret undocumented domains, causing review delays — High severity1701715. **Wrong:** Placing standard SDTM variables (timing, result qualifiers, identifiers) in SUPPQUAL172 **Right:** Use the parent domain's standard variables (--STDTC, --LOC, --METHOD, --GRPID, etc.) as defined in the IG173 **Why:** Triggers P21 Error and signals poor domain mapping knowledge — High severity1741756. **Wrong:** Omitting value-level metadata for BDS datasets with multiple PARAMCDs176 **Right:** Include where-clause-based value-level metadata in define.xml for every PARAMCD in BDS datasets177 **Why:** Missing value-level metadata is a P21 Error; define.xml is incomplete without it — High severity1781797. **Wrong:** Using codelist values not present in the pinned controlled terminology version180 **Right:** Pin one CT version at study start and use only values from that version (or document sponsor extensions for extensible codelists)181 **Why:** Triggers P21 Warning CT2003 and may delay regulatory review — Medium severity1821838. **Wrong:** Recording dates with inconsistent precision across records (mixing full dates with partial dates without clear rules)184 **Right:** Define date precision rules in the SAP and apply consistent imputation logic documented in define.xml185 **Why:** Inconsistent precision complicates imputation and introduces errors in study day calculations — Medium severity186187## 9. Date Handling Gotchas188189### Study Day Calculation190191```192--DY = date − RFSTDTC + 1 (if date ≥ RFSTDTC)193--DY = date − RFSTDTC (if date < RFSTDTC)194```195196**There is no Day 0.** Day −1 is the day before RFSTDTC; Day 1 is RFSTDTC itself. This off-by-one is the #1 date calculation error in submissions.197198### Date Imputation Rules for ADaM199200| Scenario | Imputation Rule | DTYPE Flag |201|---|---|---|202| Missing day, AE start | Impute to 1st of month | Set ASTDT, document imputation |203| Missing month and day | Impute to January 1st | Document in define.xml |204| Missing end date, ongoing AE | Use data cutoff date | Flag as ongoing (AENDY missing) |205| Partial date comparison | Conservative: earliest for start, latest for end | Document algorithm |206207**Rule:** Every imputed date requires a corresponding imputation flag variable (e.g., ASTDTF, AENDTF) with values Y (imputed) or blank (not imputed).208209## 10. Pinnacle 21 Triage Decision Tree210211```212P21 finding received213├─ Severity = Error214│ └─ MUST fix before submission (no exceptions)215├─ Severity = Warning216│ ├─ Affects safety/efficacy data? → Fix217│ ├─ Cosmetic or structural only? → Document justification in Reviewer's Guide218│ └─ Systematic across all subjects? → Fix (reviewer will notice)219└─ Severity = Notice220 ├─ Easy fix (<1 hour)? → Fix221 └─ Complex or low-impact? → Skip, document if asked222```223224### Top P21 Rules by Fix Priority225226| Rule ID | Description | Severity | Action |227|---|---|---|---|228| SD0009 | USUBJID not consistent with DM | Error | Fix immediately — breaks traceability |229| SD0083 | Missing required variable | Error | Fix — submission will be rejected |230| SD1001 | Invalid date/time format | Error | Fix — ISO 8601 non-negotiable |231| CT2001 | CT mismatch (value not in codelist) | Warning | Fix if non-extensible codelist; document if sponsor extension |232| CT2003 | CT version inconsistency | Warning | Usually fix — indicates mixed CT versions |233| SD1020 | Value not found in external codelist | Warning | Fix if standard term exists; extend if legitimate |234| AD0252 | ADSL missing required variables | Error | Fix — ADSL completeness is critical |235| AD0322 | BDS record without PARAMCD | Error | Fix — BDS is unusable without PARAMCD |236| SD0070 | Duplicate records | Warning | Investigate — may be valid (e.g., bilateral findings) |237| SD1015 | Inconsistent values across datasets | Warning | Fix if traceability broken; document if by design |238239## 11. Controlled Terminology Rules240241| Rule | Description |242|---|---|243| Pin CT version at study start | One CT version for entire study |244| Document in define.xml | Specify package version (e.g., 2024-03-29) |245| Never mix versions | Mixing CT within a study → P21 Warning CT2003 |246| Non-extensible codelists | Use ONLY CDISC-defined values (e.g., SEX, AEOUT) |247| Extensible codelists | Sponsor values allowed but must be documented |248| Map legacy terms on upgrade | Create mapping table; never silently change coded values |