How to go from an SDTM Finding Domain to an ADaM-Compliant Basic Data Structure Analysis Dataset: An Example Qian Wang, MSD, Brussels, Belgium Carl Herremans, MSD, Brussels, Belgium PhUSE 2010, Berlin
PhUSE Berlin 2 ADaM versus SDTM ADaM datasets do use redundancy for easy analysis – common variables may be found across all analysis datasets (e.g., population flags, subject identifiers, etc.); ADaM datasets have a greater number of numeric variables (e.g., SAS formatted dates, numeric representation of a character grouping variable from SDTM); ADaM datasets may combine variables from multiple SDTM domains; ADaM datasets are named AD.
PhUSE Berlin 3 ADaM-compliant Basic Data Structure (BDS) A BDS dataset contains one or more records per subject, per analysis parameter and per analysis time point. It describes the data being analyzed and also includes variables to support the analysis (e.g. covariates) as well as information to facilitate traceability.
PhUSE Berlin 4 6 Basic Steps Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline
PhUSE Berlin 5 STEP 1: Preparing for ADAM Precursor by Adding SUPPQUAL to SDTM LB SUPPQUAL LB + SUPPQUAL (where RDOMAIN=‘LB’)
PhUSE Berlin 6 STEP 1: Preparing for ADAM Precursor by adding SUPPQUAL to SDTM USUBJIDSEXLBSEQLBTESTCDLBORRES LBFAST 0002_0001M1NA0.1Y STUDYIDRDOMAINUSUBJIDIDVARIDVARVARLQNAMQVAL 0002LB 0002_0001 LBSEQ1 LBFASTY USUBJIDSEXLBSEQLBTESTCDLBORRES 0002_0001M1NA0.1 +
PhUSE Berlin 7 STEP 1: Preparing for ADAM Precursor by Adding SUPPQUAL to SDTM proc transpose data=supplb out=supplb2 (rename=(idvarval=lbseq)); by usubjid idvarval; var qval; id qnam; idlabel qlabel; run; %addsuppqual(input_libary =, input_dataset_suppqual =, input_dataset_define =, output_library = );
PhUSE Berlin 8 6 Basic Steps Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline
PhUSE Berlin 9 STEP 2: Converting ISO8601 Date/Time --DTC T13:14:17
PhUSE Berlin 10 STEP 2: Converting ISO8601 Date/Time If not missing ADT and ATM populate ADTM
PhUSE Berlin 11 STEP 2: Converting ISO8601 Date/Time --DTCADTADTFATMATMFADTM T13:14:1715Dec200313:14:1715Dec2003:13:14: T13:1415Dec200313:14:00S15Dec2003:13:14: T1315Dec200313:00:00M15Dec2003:13:00: Dec Dec2003D Jul2003M %convert2date(input_dataset=, output_dataset= );
PhUSE Berlin 12 6 Basic Steps Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline
PhUSE Berlin 13 STEP 3: Creating Analysis Relative Day ADY = LBDT - ADSL. TRTSDT + (LBDT > ADSL.TRTSDT)
PhUSE Berlin 14 6 Basic Steps Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline
PhUSE Berlin 15 SDTM LB LBTESTCDLBTESTLBSTRESNLBSTRESU NASodium139mmol/L KPotassium3.5mmol/L ADaM ADLB PARAMCDPARAMAVAL NASodium (mmol/L)139 KPotassium (mmol/L)3.5 STEP 4: Creating Key Analysis Parameter Variables PARAM(CD), AVAL
PhUSE Berlin 16 STEP 4: Creating Key Analysis Parameter Variables PARAM(CD), AVAL SDTM LB LBDYLBTESTCDLBTESTLBSTRESNLBSTRESU 1NASodium139mmol/L 1NASodium145mmol/L ADaM ADLB ADYPARAMCDPARAMAVALDTYPE ANL01FL 1 NASodium (mmol/L)139 1 NASodium (mmol/L)145 1 NASodium (mmol/L)142 AVERAGEY
PhUSE Berlin 17 STEP 4: Creating Key Analysis Parameter Variables PARAM(CD), AVAL %finding(input_dataset=, domain=, summaryfunction=AVERAGE, output_dataset= );
PhUSE Berlin 18 6 Basic Steps Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline
PhUSE Berlin 19 Time Point (Target Day) Time window in Days Baseline (1)-70 to 7 Treatment 1 (45)8 to 90 Treatment 2 (135)91to Time Baseline Treatment 1Treatment 2 STEP 5: ADDING TIME WINDOWS
PhUSE Berlin 20 STEP 5: ADDING TIME WINDOWS Start dayStop dayTargetAVISITAVISITNBaseline -7071Baseline0Y 89045Treatment Treatment 22 ADYPARAMCDAVALAVISITAVISITNAWTARGETAWRANGEABLFLANL02FL -18NA141Baseline01-70 to 7 1NA140Baseline01-70 to 7YY 14NA145Treatment to 90 46NA149Treatment to 90Y
PhUSE Berlin 21 6 Basic Steps Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline
PhUSE Berlin 22 Step 6: Deriving Change From Baseline ADYPARAMCDAVALAVISITAVISITNABLFLBASECHG -18NA141Baseline NA140Baseline0Y NA145Treatment NA149Treatment %change(input_dataset=, input_timewindow_dataset=, output_dataset= );
PhUSE Berlin 23 Conclusion Step 1 Prepare ADaM Precursor Step 2 Convert ISO8601 Dates Step 3 Create Analysis Relative Day Step 4 Create Key Analysis Variables Step 5 Add Time Windows Step 6 Derive Change from Baseline 6 Steps have been described to transform a SDTM finding dataset into an ADaM-compliant BDS analysis dataset.