Some Considerations When Designing ADaM Datasets Italian CDISC UN Day - Milan 27 th October 2017 Antonio Valenti Principal Statistical Programmer CROS NT - Verona
Content Disclaimer All content included in this presentation is for informational purposes only. These are from personal notes taken during the attendance of the webinar in reference. Please refer to the original presentation and to the latest published standards documents for the most authoritative implementation information.
Reference CDISC Members Only Mini-Training Series Some Considerations When Designing ADaM Datasets Nate Freimark, Vice President -Clinical Programming and Date Standards, The Griesser Group CDISC Webinar 09MAR2017
Overview General concepts ADSL related tips &FAQ BDS related tips &FAQ OCCDS related tips &FAQ
General #1 Variables selection Just because a variable is defined in the ADaMIG does not mean it has to be created in an/all ADaM datasets: SITEID/SUBJID in all BDS datasets TM and DTM variables when time is missing Numeric variables not used in analysis (i.e. ARMN) Null variables (i.e. AVISIT/AVISITN) Variables from ADSL can be copied to other ADaM datasets without renaming to a new variable (i.e. AX01SDT in BDS = ADSL.TR01SDT) Variables coming from SDTM should be copied without changes, but bad SDTM should not necessarily translate to bad ADaM (i.e. TPT containing VISIT)
General #2 Date/time variables Respect suffix conventions (DT, TM, DTM, DTF, TMF, DY) Date/time variables should have associated study day variables. When date/time imputation are needed it is a good idea to keep the SDTM variable that contains the partial value Creating the DT, TM, and DTM triplicate just because it can be done is not necessary For a given SDTM DTC variable, if only hh and mm are collected, and ss are imputed in *DTM as 00, then it is not necessary to set *TMF to S. However if collected but are missing should be qualified in *TMF.
General #2 (example) Date/time Example 1 SDTM ADAM --DTC 2014-02-24T12:00 2014-03-10T10:30 --DT --TM --DY 2014-02-24 12:00:00 1 2014-03-10 10:30:00 16 Date/time Example 2 SDTM ADAM --DTC 2014-02-24T12:00 2014-03-10T10:31:50 --DT --TM --TMF --DY 2014-02-24 12:00:00 S 1 2014-03-10 10:31:50 16
General #3 Visit/Time Point Variables AVISIT/AVISITN/ATPT/ATPN should be the timing variables that are in datasets VISIT/VISITNUM/--TPT/--TPTNUM should also be kept if the values/algorithms differ VISIT/VISITNUM have to come from SDTM and cannot be derived/changed in ADaM but bad SDTM should not necessarily translate to bad ADaM (TPT containing VISIT values) AVISIT last value within a window is not an ENDPOINT value unless you are outputting an extra record if true then DTYPE has to be present. If not then ANLzzFLshould be used AVISIT RESCREEN/UNSCHEDULED are not generally valid AVISIT values unless they are summarized on the table or defined in the SAP if not they should be null (or windowed)
General #3 (example) Visit/time point bad implementation AVISIT ATPT PARAM Day 1 12 h Heart rate (bpm) Day 1 12 h Baseline Baseline DIASTOLIC BLOOD PRESSURE Visit/time point good implementation AVISIT ATPT PARAM Day 1 12 h Heart rate (bpm) Baseline Diastolic Blood Pressure (mmhg)* uses XXSTRESU value
ADSL #1 Population Flags ITTFL do not created it, if is same as RANDFL and not defined in protocol/sap RANDFL why is it tied to being dosed? DISCFL this appears to be the inverse of COMPLFL (only one) NOMEDFL what is the purpose of a combination flag? (use the available flags) Some population flags in the efficacy analysis are too complicated. Can we generate these population flags by referring to each other? Circular logic is always a concern
ADSL #2 Treatment Variables ARM/ARMCD are not analysis variables do not have to be included in every dataset Use (TRTSEQP) There is no variable ARMGR1 in ADaM ARMN is not necessary ARM is required per the ADaMIG v1.1 for traceability, ACTARM is perm TRT01A do you check whether Actual differs from Planned or do you always create? Check order TRT01P vs TRT02P (TR01SDT/TR01EDT vs TR02SDT/TR02EDT). Check also TRTSEQP (order is reversed?)
ADSL #3 Treatment duration Duration AEXDURN I don t see why this is prefixed with A/Analysis EXDURN is sufficient xxxdur DUR in SDTM is ISO8601. Use ADaMIG v1.1 defined variables and xxxdurc (if needed) ADSL do you have any subjects with missing disposition records? it should be null in that case and not discontinued make sure metadata covers all scenarios
ADSL #4 Date Variables APxxSDT/APxxEDT are paired variables both or neither should be present There should not be more APxx variables then there are TRTxxP ADSL.TRTSDT/TRTEDT required ADSL.TR01SDT/TR01EDT not needed in a single period trial TRTSDT/TRTEDT based on RFX not RF (start of trt not the study) LSTVST (based on Last SV record in spec)? SV has no order unless VISITNUM is in the correct order VISITNUM (i.e. 99 for Unscheduled) Is there a reason you format dates as DATE9 instead of YYMMDD10? No right or wrong but you should be consistent across datasets
ADSL #5 Other Variables SEX per SDTM is M/F you cannot change any SDTM variable value in ADaM DEATHFL why not use SDTM variable DTHFL? DSTERM/DSDECOD may be one of several DS records renaming to useful concept is helpful HEIGHT should be HEIGHTBL or BLHEIGHT to indicate it is a baseline value (similar to label) Baseline variables should start or end with BL and not just B AGEU is required
Population flags BDS #1 all BDS have to have at least one population flag variable however not all ADSL population variables have to included in every ADaM dataset Can we add free text to the label of ANLzzFL or any variable with y, zz, xx? e.g: added text Analysis Flag zz Last for Dup. Records. Yes for y and zz but not for xx ADxx-xxxxxFL values of 1-4 are not allowed for an FL variable ADLB -no ANLzzFL variables are needed for analysis? (this is possible if there are no multiple nominal visit values and unscheduled values are not summarized) Is BLFL=Y always the value where ABLFL=Y?
BDS #2 Incorrect/Iffy Variables/Values AVALU is not a valid ADaM variable if unit is relevant it should be included in PARAM if not then just keep ORRESU/STRESU ADxx-AVALC is not left-justified for numeric values (nor does AVALC have to be populated for numeric parameters) ADDV -AVALC are these values actually analyzed/summarized? Is there a protocol deviation summary why was this ADaM created? Shouldn t ADDV be OCCDS in any case? ADPE -Summary is by AVISIT why are ABLFL/BASEC needed?
BDS #3 PARAM/PARAMCD/LBCAT ADLB -LBTEST/LBTESTCD generally are not sufficient for PARAM/PARAMCD in labs since there are the same TEST in CHEMISTRY and URINALYSISPARAM/PARAMCD have to uniquely identify -using PARCAT1 is not allowed GLUC cannot have two different PARCAT1 values Is it your standard or the sponsor s standard to capture LBCAT in PARAM instead of only the ones that are common in more than one LBCAT? Any value added in capturing on all PARAMCD? Only add U to the ones that are in more than one LBCAT can be enough
BDS #3 (Example) PARAM/PARAMCD/LBCAT Wrong definition PARAMCD PARAM PARCAT1 CA Urine Calcium URINALYSIS CA Blood Calcium CHEMISTRY RBC Blood Erythrocytes HAEMATOLOGY Correct definition CAU Urine Calcium URINALYSIS CA Calcium CHEMISTRY RBC Erythrocytes HAEMATOLOGY
BDS #4 Incorrect/Iffy Variables/Values (continue) ADLB -A lot of the PARAM appear to be CRIT values and should not be added parameters (e.galkgr15) -for the ones that look at multiple PARAM it makes sense but not so much for the ones that are within PARAM
BDS #4 (Example) PARAM/PARAMCD/LBCAT Bad definition PARAMCD AVAL AVALC ALK 20 ALKGR15 20 Y Good definition PARAMCD AVAL CRIT1 CRIT1FL ALK 20 ALK > 15 Y
BDS #5 BASE/BASETYPE ADLB -BASETYPE is not populated for all records within a PARAM ADLB/ADVS -Having BASE and not CHG seems odd what is the purpose? BASE should reference ABLFL and not AVISITN ADaMIG -BASE contains the value of AVAL copied from a record within the parameter on which ABLFL = Y (and BNRIND=ANRIND where ABLFL= Y ) AVALCATy/CRITy ADxx.AVALCAT1/AVALCAT2 -these can only be categorizations of AVAL only CRITy/MCRITy can be based on any variable CRITy has to be a constant value within PARAM if it varies then use AVALCATy (or MCRITyML)
BDS #5 (Example) AVALCATy/CRITy Bad definition AVAL AVALC CHG AVALCAT1* 90 High 20 GT 90 and CHG > 20 95 High 10 Good definition AVAL AVALC CHG AVALCAT1 CRIT1* CRIT1FL* 90 20 High GT 90 and CHG > 20 Y 95 10 High
BDS #6 Timing Variables ENDPOINT BASELINE is not a correct AVISIT value this should be AVISIT=BASELINE with DTYPE=AVERAGE. Why are there AVISIT=ENDPOINT xxxx in any case it does not have that on the tables What does ATPT=ENDPOINT 0.5 H POST-DOSE mean? If these are supposed to identify the average value then DBTYPE should be used and not a changed ATPT value it is not a different visit/timepoint ADTC often included this. Value added?
BDS #7 DTYPE DTYPE=SUM or COMBINED is incorrect DTYPE is for records within a parameter and not totally derived parameters DTYPE=MAXIMUM (used to identify a maximum record) -this is incorrect usage of DTYPE -there is no indication that there is an added row with AVISIT="Maximum" -this should be identified with an ANLzzFL DTYPE=EOT is not correct it does not describe the derivation method (it could be LOV Last Observed Value) ADLB -LBMAXFL/LBMINFL/POSTHIFL/POSTLOFL (and all the rest of the flags) these should all be ANLzzFL (or AVISIT added rows) see section 4.5.3.1 of the ADaMIG
BDS #7 (Example) Wrong AVISIT PARAMCD AVAL DBTYPE Week 1 DBP 80 Week 2 DBP 120 MAXIMUM POSTHIFL Y Use ANLxxFL Add AVISIT and Use DBTYPE AVISIT PARAMCD AVAL ANL01FL Week 1 DBP 80 Week 2 DBP 120 Y AVISIT PARAMCD AVAL DBTYPE Week 1 DBP 80 Week 2 DBP 120 Post-Baseline Maximum DBP 120 MAXIMUM
OCCDS #1 ADAE ADAE -Creating records with ANYAE=N and populating AETERM with None for subjects with no AEs is not allowed AEDUR is an SDTM variable that is character and ISO 8601 it cannot be changed to numeric in ADaM. Use ADURN (derived) Do not change SDTM variables as AEOUTR (SDTM.AE.AEOUT), AESEV should be SDTM.AESEV TRTEMFL -derivation may not be correct if time is imputed use caution in defining TRTEMFL ASTDT should be included even if ASTDTM is present. No a requirement just a suggestion
OCCDS #2 ADCM /ADMH ADCM -CMDOSU/CMDOSFRQ/CMROUTE changed from SDTM values this is not allowed ADMH ASTDT/AENDT do these add value? These appear to be mostly partial dates
Conclusion Thanks for your attention Questions?