Posts

Showing posts from September, 2024

Understanding ADAPT in the SDTM TS Domain: Adaptive vs Non-Adaptive Trials

Understanding ADAPT in the SDTM TS Domain: Adaptive vs Non-Adaptive Trials Understanding ADAPT in the SDTM TS Domain: Adaptive vs Non-Adaptive Trials The Study Data Tabulation Model (SDTM) plays a critical role in organizing and submitting clinical trial data. One of the parameters that regulatory agencies look for in the Trial Summary (TS) domain is the ADAPT parameter ( TSPARMCD=ADAPT ), which indicates whether the trial follows an adaptive design. In this blog post, we will explore the meaning of ADAPT and provide examples of adaptive and non-adaptive trials. What is ADAPT in the TS Domain? The ADAPT parameter identifies whether the clinical trial is adaptive ( ADAPT=Y ) or non-adaptive ( ADAPT=N ). An adaptive trial allows for modifications to the study design based on interim results, making the trial more flexible and often more efficient. "Adaptive clinical trials allow for changes in design or hypothe...
SDTM Trial Summary Domain: ACTSUB vs Screen Failures Understanding SDTM Trial Summary Domain: ACTSUB vs Screen Failures In the world of clinical data management, the Study Data Tabulation Model (SDTM) plays a vital role in organizing and submitting clinical trial data to regulatory agencies. One of the most essential domains in SDTM is the Trial Summary (TS) domain, which provides key information about the clinical trial itself. In this blog post, we will explore the Actual Number of Subjects (ACTSUB) and how it differs from screen failures. We will also reference regulatory guidelines and SDTM Implementation Guides to ensure a deeper understanding. What is the TS Domain? The Trial Summary (TS) domain contains high-level information about the clinical trial. This includes essential data such as the number of subjects, the start and end dates of the trial, trial objectives, and much more. The TSPARMCD variable define...

Understanding EC vs. EX Domains in SDTM: When to Use Each

Understanding EC vs. EX Domains in SDTM: When to Use Each Understanding EC vs. EX Domains in SDTM: When to Use Each In SDTM, the EC (Exposure as Collected) and EX (Exposure) domains are both used to capture data related to drug or therapy exposure, but they serve different purposes depending on how the exposure data is collected and whether the study is blinded or unblinded. Key Updates from PharmaSUG Papers: PharmaSUG 2017 Paper DS08 introduces the historical context of the EC domain, which was established in SDTMIG v3.2 to support the EX domain by providing detailed traceability for exposure data. EC helps capture deviations, titrations, and other variations from planned dosing, especially when the collected data doesn't match protocol-specified dosing. PharmaSUG 2022 Paper DS121 emphasizes the importance of capturing dose modifications using the EC domain, which often occurs in oncology trials. By utilizing EC, sponsors can accurate...

Study Start Date in SDTM – Why Getting It Right Matters

Study Start Date in SDTM – Why Getting It Right Matters Study Start Date in SDTM – Why Getting It Right Matters The Study Start Date (SSTDTC) is a crucial element in the submission of clinical trial data, especially in meeting regulatory requirements. Since December 2014, the FDA has provided explicit guidance on defining and utilizing this data point, but many sponsors and service providers face challenges in its consistent application. Missteps in defining the Study Start Date can lead to technical rejection during submission reviews, delaying the regulatory process. This article explores the definition, importance, and proper implementation of the Study Start Date in SDTM (Study Data Tabulation Model) submissions, based on regulatory guidance and best practices. FDA’s Definition of Study Start Date The FDA, in its 2014 guidance, clarified that the Study Start Date for clinical trials is the earliest date of informed consent for any subject ...

Best Practices for Joining Additional Columns into an Existing Table Using PROC SQL

Best Practices for Joining Additional Columns into an Existing Table Using PROC SQL Best Practices for Joining Additional Columns into an Existing Table Using PROC SQL When working with large datasets, it's common to add new columns from another table to an existing table using SQL. However, many programmers encounter the challenge of recursive referencing in PROC SQL when attempting to create a new table that references itself. This blog post discusses the best practices for adding columns to an existing table using PROC SQL and provides alternative methods that avoid inefficiencies. 1. The Common Approach and Its Pitfall Here's a simplified example of a common approach to adding columns via a LEFT JOIN : PROC SQL; CREATE TABLE WORK.main_table AS SELECT main.*, a.newcol1, a.newcol2 FROM WORK.main_table main LEFT JOIN WORK.addl_data a ON main.id = a.id; QUIT; While this approach might seem straightforward, it leads to a warning: "CREATE T...

Comprehensive SDTM Review

Comprehensive SDTM Review Mastering the SDTM Review Process: Comprehensive Insights with Real-World Examples The process of ensuring compliance with Study Data Tabulation Model (SDTM) standards can be challenging due to the diverse requirements and guidelines that span across multiple sources. These include the SDTM Implementation Guide (SDTMIG), the domain-specific assumptions sections, and the FDA Study Data Technical Conformance Guide. While automated tools like Pinnacle 21 play a critical role in detecting many issues, they have limitations. This article provides an in-depth guide to conducting a thorough SDTM review, enhanced by real-world examples that highlight commonly observed pitfalls and solutions. 1. Understanding the Complexity of SDTM Review One of the first challenges in SDTM review is recognizing that SDTM requirements are spread across different guidelines and manuals. Each source offers a unique perspective on compliance:...

Revolutionizing SDTM Programming in Pharma with ChatGPT

Revolutionizing SDTM Programming in Pharma with ChatGPT Revolutionizing SDTM Programming in Pharma with ChatGPT By Sarath Introduction In the pharmaceutical industry, standardizing clinical trial data through Study Data Tabulation Model (SDTM) programming is a critical task. The introduction of AI tools like ChatGPT has opened new opportunities for automating and enhancing the efficiency of SDTM programming. In this article, we will explore how ChatGPT can assist programmers in various SDTM-related tasks, from mapping datasets to performing quality checks, ultimately improving productivity and accuracy. What is SDTM? SDTM is a model created by the Clinical Data Interchange Standards Consortium (CDISC) to standardize the structure and format of clinical trial data. This model helps in organizing data for submission to regulatory bodies such as the FDA. SDTM programming involves mappi...

Unleashing the Power of PROC DATASETS in SAS

Unleashing the Power of PROC DATASETS in SAS Unleashing the Power of PROC DATASETS in SAS The PROC DATASETS procedure is a versatile and efficient tool within SAS for managing datasets. Often described as the "Swiss Army Knife" of SAS procedures, it allows users to perform a variety of tasks such as renaming, deleting, modifying attributes, appending datasets, and much more, all while consuming fewer system resources compared to traditional data steps. In this article, we’ll explore key use cases, functionality, and examples of PROC DATASETS , illustrating why it should be part of every SAS programmer's toolkit. 1. Why Use PROC DATASETS? Unlike procedures like PROC APPEND , PROC CONTENTS , and PROC COPY , which focus on specific tasks, PROC DATASETS integrates the functionalities of these procedures and more. By using PROC DATASETS , you avoid the need for multiple procedures, saving both time and system resources since it on...

Advanced SDTM Mapping Pitfalls and How to Avoid Them

Advanced SDTM Mapping Pitfalls and How to Avoid Them Advanced SDTM Mapping Pitfalls and How to Avoid Them Introduction Mapping clinical data to SDTM domains is a complex process involving many technical and logical challenges. For experienced programmers, common issues often revolve around proper handling of controlled terminology, managing derived variables, ensuring consistency between domains, and maintaining relational integrity. This article explores some of the most common SDTM mapping pitfalls, with advanced solutions and SAS code examples, to help avoid regulatory submission errors. Pitfall 1: Handling Derived Variables Incorrectly One of the most common issues in SDTM mapping is incorrectly handling derived variables, which can lead to inaccuracies in key datasets such as EX (Exposure) and VS (Vital Signs). Example: A derived variable such as EXDUR (Exposure Duration) in the EX domain may not be properly calculated or m...

Advanced SDTM Programming Techniques for SAS Programmers

Advanced SDTM Programming Techniques for SAS Programmers Advanced SDTM Programming Techniques for SAS Programmers As an experienced SAS programmer working with the Study Data Tabulation Model (SDTM), it's crucial to stay updated with the latest programming techniques. Whether you're tasked with building SDTM domains from scratch or optimizing existing code, there are several advanced concepts that can improve your workflows and output. In this post, we’ll explore some techniques that can help you overcome common SDTM challenges and boost efficiency in handling clinical trial data. 1. Efficient Handling of Large Datasets When dealing with large clinical datasets, speed and efficiency are key. One method to optimize SDTM domain generation is to reduce the data footprint by eliminating unnecessary variables and duplicative observations. Consider the following approaches: Removing Duplicate ...

Excluding Variables in PROC COMPARE Using the DROP Dataset Option

Excluding Variables in PROC COMPARE Using the DROP Dataset Option Excluding Variables in PROC COMPARE Using the DROP Dataset Option When comparing two datasets using PROC COMPARE in SAS, there may be cases where you want to exclude specific variables from the comparison. One efficient way to do this is by using the DROP dataset option. This option allows you to remove certain variables from consideration during the comparison process. Using the DROP Dataset Option in PROC COMPARE The DROP dataset option is applied directly to the dataset references in the BASE and COMPARE options of PROC COMPARE . When you use DROP , the specified variables are excluded from the comparison. Here is the syntax for using the DROP option: proc compare base=dataset1(drop=var_to_exclude) compare=dataset2(drop=var_to_exclude); run; In this example, var_to_exclude is the name of the variable you want to ex...

Mastering PROC SQL: Best Practices for Seamlessly Adding Columns

Mastering PROC SQL: Best Practices for Seamlessly Adding Columns Mastering PROC SQL: Best Practices for Seamlessly Adding Columns PROC SQL in SAS is a powerful tool, especially when you need to add new columns to existing tables. Whether you're updating tables with new data or making calculated columns, following best practices ensures your code is efficient, maintainable, and easy to understand. 1. Use ALTER TABLE to Add Columns The most straightforward way to add a column to a table is by using the ALTER TABLE statement. It allows you to add one or more columns without disrupting the existing data structure. proc sql; alter table your_table_name add new_column1 num format=8. label='New Column 1', new_column2 char(20) label='New Column 2'; quit; Tip: Always specify the data type ( num for numeric, char(n) for character) and add useful formats and labels to keep your columns clear and organized. 2. Av...

How to Address PROC COMPARE Reporting Same Values as Different in SAS

How to Address PROC COMPARE Reporting Same Values as Different in SAS How to Address PROC COMPARE Reporting Same Values as Different in SAS Working with large datasets in SAS often requires comparing data between two tables. The PROC COMPARE procedure is an essential tool for this task, but sometimes it reports values as different even when they appear to be identical. This issue can arise from various causes, such as numeric precision differences, rounding issues, or formatting inconsistencies. In this post, we will explore common causes of this issue and how to resolve them. 1. Numeric Precision Issues SAS stores numeric values using floating-point precision, which can lead to small differences that aren't immediately visible. These differences may cause PROC COMPARE to report discrepancies even though the values seem the same. Solution: Use the CRITERION or FUZZ option to define an acceptable tolerance for differences. pro...

5 Approaches to Identify Blank Columns in SAS Datasets

5 Approaches to Identify Blank Columns in SAS Datasets 5 Approaches to Identify Blank Columns in SAS Datasets Author: Sarath Date: September 5, 2024 When working with large datasets in SAS, it’s crucial to ensure the integrity of your data. One common task is identifying columns that are completely blank, meaning they contain no non-missing values. In this article, we'll explore five different methods to efficiently find blank columns in SAS datasets, along with examples for each approach. 1. Using PROC MEANS or PROC SUMMARY The simplest way to identify blank columns is by using PROC MEANS or PROC SUMMARY . These procedures provide a summary of missing values for both numeric and character variables. You can quickly determine which columns are fully blank by checking the output for variables with 100% missing values. proc means data=your_dataset nmiss; var _numeric_; /* For numeric variables */ run; proc me...

Effortlessly Upcase All Variables in SAS Using PROC DATASETS

Effortlessly Upcase All Variables in SAS Using PROC DATASETS Effortlessly Upcase All Variables in SAS Using PROC DATASETS When working with SAS datasets, ensuring consistency across variables, especially character variables, can be crucial. A common requirement is to upcase all character variables, converting their values to uppercase. While several methods exist to achieve this, one of the most efficient and dynamic approaches involves using the PROC DATASETS procedure. In this article, we will delve into how PROC DATASETS works and how you can use it to upcase all character variables in your dataset with minimal effort. Understanding PROC DATASETS The PROC DATASETS procedure is primarily used for managing SAS datasets within a library. It allows you to rename, delete, append, modify, and more, without the need to read or copy the data into the Program Data Vector (PDV). This makes it highly efficient, especially when you need to modify...

Mastering SAS: 6 Ways to Upcase All Variables in Your Dataset

How to Upcase All Variables in a SAS Dataset How to Upcase All Variables in a SAS Dataset When working with character data in SAS, you may often need to ensure that all text variables are in uppercase. Fortunately, SAS provides several methods to upcase variables in a dataset, depending on your specific needs. In this article, we will explore various ways to achieve this task and provide code snippets for each method. 1. Using DATA Step with UPCASE Function The UPCASE function is the simplest way to convert all character variables to uppercase using a DATA step. data upcase_dataset; set original_dataset; array char_vars _character_; do i = 1 to dim(char_vars); char_vars[i] = upcase(char_vars[i]); end; drop i; run; This approach loops through all character variables and applies the UPCASE function to each of them. 2. Using PROC SQL with CASE Statement In this method, PROC SQL is used...