Posts

Learn how to view SAS dataset labels without opening the dataset directly in a SAS session. Easy methods and examples included!

Quick Tip: See SAS Dataset Labels Without Opening the Data Quick Tip: See SAS Dataset Labels Without Opening the Data When working with SAS datasets, checking the dataset label without actually opening the data can be very useful. Whether you're debugging or documenting, this small trick can save you time and effort! 1. Use PROC CONTENTS PROC CONTENTS is the most common and straightforward way to view the dataset label. proc contents data=yourlib.yourdataset; run; The dataset label will appear in the output as the field: Data Set Label . 2. Query DICTIONARY.TABLES or SASHELP.VTABLE For a programmatic approach, use the DICTIONARY.TABLES table or SASHELP.VTABLE view to query dataset metadata. Example Using PROC SQL proc sql; select memname, memlabel from dictionary.tables where libname='YOURLIB' and memname='YOURDATASET'; quit; ...

Detecting Non-Printable Characters in SDTM Datasets Using SAS

Detecting Non-Printable Characters in SDTM Datasets Using SAS Detecting Non-Printable Characters in SDTM Datasets Using SAS Non-printable characters in datasets can lead to errors and inconsistencies, especially in the highly regulated environment of clinical trials. This blog post demonstrates how to create a SAS program that identifies non-printable characters in all SDTM datasets within a library and generates a comprehensive report. Why Detect Non-Printable Characters? Non-printable characters, such as ASCII values below 32 or above 126, can cause issues during data validation, regulatory submissions, and downstream processing. Detecting them early ensures the quality and compliance of your SDTM datasets. The SAS Program The following SAS program processes all SDTM datasets in a library and generates a combined report of non-printable characters, including: Dat...

SDTM aCRF Annotation Checklist

SDTM aCRF Annotation Checklist SDTM aCRF Annotation Checklist By Sarath Annapareddy Introduction Creating an SDTM Annotated Case Report Form (aCRF) is a critical step in clinical trial data submission. It ensures that data collected in the CRF maps correctly to SDTM domains, adhering to regulatory and CDISC standards. This checklist serves as a guide to creating a high-quality SDTM aCRF ready for regulatory submission. 1. General Formatting Ensure the aCRF uses the latest SDTM IG version relevant to the study. The document should be clean, legible, and free of overlapping annotations. Page numbers in the aCRF should align with the actual CRF pages. Annotations must be in English, clear, and consistently for...

Common P21 SDTM Compliance Issues and How to Resolve Them

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 o...

Comprehensive QC Checklist for Define.xml and cSDRG: Ensuring Quality and Compliance for FDA and PMDA SDTM Submissions

Define.xml and cSDRG QC Checklist for FDA and PMDA Submissions Comprehensive QC Checklist for Define.xml and cSDRG Ensuring Quality and Compliance for FDA and PMDA SDTM Submissions Introduction The **Define.xml** and **Clinical Study Data Reviewer’s Guide (cSDRG)** are critical components of SDTM submissions to regulatory agencies like the FDA and PMDA. These documents help reviewers understand the structure, content, and traceability of the datasets submitted. A robust QC process ensures compliance with agency requirements, minimizes errors, and enhances submission success. This blog outlines a detailed manual QC checklist for both Define.xml and cSDRG, emphasizing key differences between FDA and PMDA requirements. Define.xml QC Checklist 1. Metadata Verification Verify ...

Data Quality Checks for SDTM Datasets: FDA vs. PMDA: Understanding Regulatory Requirements for Submission Success

FDA vs PMDA Data Quality Checks Differences in Data Quality Checks Between FDA and PMDA Introduction Submitting SDTM datasets to regulatory authorities like the FDA (U.S. Food and Drug Administration) and PMDA (Japan's Pharmaceuticals and Medical Devices Agency) involves rigorous data quality checks. While both agencies adhere to CDISC standards, their submission guidelines and expectations differ in certain aspects. This blog explores the key differences in data quality checks for FDA and PMDA submissions. Similarities in Data Quality Checks Both FDA and PMDA share several common expectations for SDTM datasets: Adherence to CDISC Standards: Both agencies require compliance with the SDTM Implementation Guide (SDTM-IG). Controlled Terminology (CT): Variables such as AEDECOD and LBTESTCD must align with CDISC CT. Traceability: Ensures that derived datasets and analysis results can be traced back to ...

Advanced SDTM Programming Tips: Streamline Your SDTM Development with Expert Techniques

Advanced SDTM Programming Tips Advanced SDTM Programming Tips Streamline Your SDTM Development with Expert Techniques Tip 1: Automating SUPPQUAL Domain Creation The SUPPQUAL (Supplemental Qualifiers) domain can be automated using SAS macros to handle additional variables in a systematic way. Refer to the macro example provided earlier to simplify your SUPPQUAL generation process. Tip 2: Handling Date Imputation Many SDTM domains require complete dates, but raw data often contains partial or missing dates. Use the following code snippet for date imputation: data imputed_dates; set raw_data; /* Impute missing day to the first day of the month */ if length(strip(date)) = 7 then date = cats(date, '-01'); /* Impute missing...