Common P21 SDTM Compliance Issues and How to Resolve Them
Common P21 SDTM Compliance Issues and How to Resolve Them
By Sarath Annapareddy
Introduction
Pinnacle 21 (P21) is a cornerstone for validating SDTM datasets against CDISC standards. Its checks ensure compliance with regulatory requirements set by the FDA, PMDA, and other authorities. However, resolving the issues flagged by P21 can be challenging, especially for beginners. This post dives into common P21 compliance issues and provides actionable solutions with examples.
1. Missing or Invalid Controlled Terminology
Issue: P21 flags variables like LBTESTCD
or SEX
as non-compliant
with CDISC Controlled Terminology (CT). This happens when values in your datasets are outdated or invalid.
Solution: Update your CT files regularly from CDISC’s website. Use validation scripts to cross-check your datasets against the CT list.
Example:
data lab_final; merge lab_data (in=a) cdisc_ct (in=b); by LBTESTCD; if a and not b then put "WARNING: Invalid value for LBTESTCD=" LBTESTCD; run;
This code validates lab data against CDISC Controlled Terminology and flags invalid entries.
2. Missing Required Variables
Issue: P21 highlights missing essential variables such as USUBJID
,
DOMAIN
, and VISITNUM
. Missing these variables can result in non-compliance.
Solution: Create validation macros in SAS to check for the presence of required variables. Always refer to the SDTM IG for domain-specific requirements.
Example:
%macro check_vars(dataset, vars); proc sql noprint; select count(*) into :missing from dictionary.columns where libname="WORK" and memname=upcase("&dataset") and name not in (&vars); quit; %if &missing > 0 %then %put ERROR: Missing required variables!; %mend; %check_vars(lab_data, "USUBJID, DOMAIN, VISITNUM");
3. Inconsistent Dates and Timestamps
Issue: Non-compliance with ISO 8601 date format is a recurring issue. Variables such as
AESTDTC
or VISITDY
may have incorrect formats or incomplete components.
Solution: Convert dates to ISO format during mapping and ensure consistent formats across
datasets using SAS functions like PUT
and INPUT
.
Example:
data ae_final; set ae_raw; if not missing(AESTDT) then AESTDTC = put(AESTDT, E8601DA.); run;
4. Duplicate Records
Issue: Duplicate records are flagged when unique combinations of keys (like USUBJID
and VISITNUM
) appear multiple times in a domain.
Solution: Implement deduplication techniques in SAS and ensure proper use of keys during dataset creation.
Example:
proc sort data=dm nodupkey; by USUBJID VISITNUM; run;
5. Incomplete Traceability
Issue: P21 flags issues when derived variables or supplemental qualifiers lack proper traceability.
Solution: Clearly document derivations in your dataset specifications and use RELREC
or SUPPQUAL
datasets for maintaining traceability.
Example:
data suppae; set ae; where AESER = "Y"; IDVAR = "SEQ"; QNAM = "AESER"; QVAL = AESER; run;
6. Inconsistent Metadata
Issue: P21 reports mismatches between Define.xml and dataset metadata.
Solution: Automate Define.xml generation using tools like Pinnacle 21 Enterprise. Manually cross-check metadata during QC.
7. Invalid Links in RELREC
Issue: RELREC relationships do not align with the protocol-defined data structure.
Solution: Double-check all relationships during dataset creation and validate RELREC against its source domains.
Conclusion
Resolving P21 compliance issues requires both a strategic approach and practical programming skills. By addressing these common problems, you can ensure your datasets are regulatory-compliant, saving time and avoiding costly re-submissions.