CDISC ADaM 1.0 Validation Rules
The following is a listing of CDISC ADaM version 1.0 validation rules implemented in OpenCDISC Validator. The rules are based on the validation checks published by CDISC ADaM team.
| Rule ID | Description | Domain | Category | Severity |
|---|---|---|---|---|
| AD0001 | ADaM Subject level (ADSL) dataset should be included in every submission. | ADSL | Presence | Error |
| AD0005 | A variable with a suffix of FL has a value that is not Y, N or null (exception: RFL, PFL and population flags COMPLFL,FASFL,ITTFL,PPROTFL,SAFFL,RANDFL,ENRLFL cannot be null and at least 1 must be included in ADSL) | ADSL, BDS | Terminology | Error |
| AD0006 | A variable with a suffix of FN has a value that is not Y, N or null (exception: RFL, PFL and population flags COMPLFN,FASFN,ITTFN,PPROTFN,SAFFN,RANDFN,ENRLFN cannot be null and at least 1 must be included in ADSL) | ADSL, BDS | Terminology | Error |
| AD0007 | If a Flag Numeric (*FN) variable is present, its associated Flag Character (*FL) variable must be present | ADSL, BDS | Presence | Error |
| AD0010 | When a Flag variable (FL) is Y, its corresponding Flag numeric variable (FN) must be 1 | ADSL, BDS | Consistency | Error |
| AD0011 | When a Flag variable (FL) is N, its corresponding Flag numeric variable (FN) must be 0 | ADSL, BDS | Consistency | Error |
| AD0012 | When a numeric Flag variable (*FN) is populated, its corresponding character Flag variable (*FL) must be populated | ADSL, BDS | Consistency | Error |
| AD0016 | All ADaM variable labels must be no more than 40 characters in length | ADSL, BDS | Format | Error |
| AD0018 | Variable Label in the dataset should match the variable label described in ADaM. When creating a new domain Variable Labels could be adjusted as appropriate. | ADSL, BDS | Metadata | Error |
| AD0033 | A variable with a suffix of RFL has a value that is not Y or null (R = record level flag variable) | BDS | Terminology | Error |
| AD0034 | A variable with a suffix of PFL has a value that is not Y or null (P = parameter level flag variable) | BDS | Terminology | Error |
| AD0035 | A variable with a suffix of RFN has a value that is not 1 or null (R = record level flag variable) | BDS | Terminology | Error |
| AD0036 | A variable with a suffix of PFN has a value that is not 1 or null (P = parameter level flag variable) | BDS | Terminology | Error |
| AD0037 | For a given value of any character Pooled Group y variable (*GRy), all values of its numeric Pooled Group y variable (*GRyN) should be the same | ADSL | Consistency | Error |
| AD0038 | For a given value of any numeric Pooled Group y variable (*GRyN), all values of its character Pooled Group y variable(*GRy) should be the same | ADSL | Consistency | Error |
| AD0039 | A variable with a suffix of DTF (Date Imputation Flag) has a value that is not within Controlled Terminology for DATEF (D= Day, M=Month, Y=Year) | ADSL, BDS | Terminology | Error |
| AD0040 | A variable with a suffix of DTF (Date Imputation Flag) has a value that is not within Controlled Terminology for DATEF (D= Day, M=Month, Y=Year) | ADSL, BDS | Terminology | Error |
| AD0041 | The SAS format listed in the dataset must be YYYYMMDD. or YYMMDD10. | ADSL, BDS | Format | Error |
| AD0042 | The SAS format listed in the dataset must be HH:MM:SS.SS. | ADSL, BDS | Format | Error |
| AD0043 | The SAS format listed in the dataset must be YYYYMMDDHH:MM:SS.SS. or YYMMDD10HH:MM:SS.SS | ADSL, BDS | Format | Error |
| AD0044 | When both time and datetime variables are collected on the same record for the same observation, the Time portion of the datetime variable should be equal to the Time variable itself | ADSL, BDS | Consistency | Error |
| AD0045 | When both date and datetime variables are collected on the same record for the same observation, the Date portion of the datetime variable should be equal to the Date variable itself | ADSL, BDS | Consistency | Error |
| AD0046 | A variable with a suffix of DY has a value of zero | BDS | Limit | Error |
| AD0048 | ADSL must have at least one variable that ends in FL because you need at least one population flag | ADSL | Presence | Error |
| AD0053 | Patient unique subject identifier not found in the SDTM Demographics domain. There must be traceability between ADaM and SDTM | ADSL, BDS | Consistency | Error |
| AD0054 | Within ADSL there is more than one record for a unique value of USUBJID | ADSL | Consistency | Error |
| AD0058 | The SAS TYPE for this variable does not equal Num | ADSL, BDS | Format | Error |
| AD0059 | The SAS TYPE for this variable does not equal Num | ADSL, BDS | Format | Error |
| AD0060 | The SAS TYPE for this variable does not equal Num | ADSL, BDS | Format | Error |
| AD0061 | The presence of SDTM.EX (Exposure) domain implies that there should be a Treatment Start Date / Datetime field present in the ADaM data | ADSL | Presence | Error |
| AD0062 | For TRTxxA (Actual Treatment), xx must be its associated treatment period (01 to 99) | ADSL | Format | Error |
| AD0063 | For TRTxxAN (Actual Treatment), xx must be its associated treatment period (01 to 99) | ADSL | Format | Error |
| AD0064 | If Actual Treatment (TRTxxAN) numeric variable is present, there must be a corresponding Actual Treatment (TRTxxA) character variable | ADSL | Presence | Error |
| AD0065 | For TRxxPGy(N) (Planned Pooled Treatment), xx must be its associated treatment period (01 to 99) and y be the treatment sequence | ADSL | Format | Error |
| AD0066 | If Planned Pooled Treatment y for Period xx (TRxxPGyN) numeric variable is present, there must be a corresponding Planned Pooled Treatment y for Period xx (TRTPGy) character variable | ADSL | Presence | Error |
| AD0067 | If Planned Pooled Treatment y for Period xx (TRxxPGyN) numeric variable is present, there must be a corresponding Planned Pooled Treatment y for Period xx (TRTPGy) character variable | ADSL | Presence | Error |
| AD0068 | For TRxxAGy(N) (Actual Pooled Treatment), xx must be its associated treatment period (01 to 99) and y be the treatment sequence | ADSL | Format | Error |
| AD0069 | If Planned Pooled Treatment y for Period xx (TRxxPGyN) character variable is present, there must be a corresponding Planned Pooled Treatment y for Period xx (TRTPGy) numeric variable | ADSL | Presence | Error |
| AD0073 | For TRTxxP (Planned Treatment), xx must be its associated treatment period (01 to 99) | ADSL | Format | Error |
| AD0074 | For TRTxxPN (PlannedTreatment), xx must be its associated treatment period (01 to 99) | ADSL | Format | Error |
| AD0075 | If Planned Treatment (TRTxxPN) numeric variable is present, there must be a corresponding Planned Treatment (TRTxxP) character variable | ADSL | Presence | Error |
| AD0076 | For a given value of character Planned Treatment for Period xx (TRTxxP), all values of its numeric Planned Treatment for Period xx (TRTxxPN) should be the same | ADSL | Consistency | Error |
| AD0077 | For a given value of numeric Planned Treatment for Period xx (TRTxxPN), all values of its character Planned Treatment for Period xx (TRTxxP) should be the same | ADSL | Consistency | Error |
| AD0078 | If Planned Treatment for Period xx (TRTxxP) is present, Frist Treatment date for period xx (TRxxSDT) must be present, especially if there is more than one treatment period | ADSL | Presence | Error |
| AD0079 | If Planned Treatment for Period xx (TRTxxP) is present, Last Treatment date for period xx (TRxxEDT) must be present, especially if there is more than one treatment period | ADSL | Presence | Error |
| AD0080 | If Actual Treatment (TRTxxA) is present, its corresponding Planned Treatment (TRTxxP) must be present | ADSL | Presence | Error |
| AD0083 | If TR01SDT (first treatment in Period 01) exists it must equal TRTSDT (First Treatment Date of entire trial for a given patient) | ADSL | Consistency | Error |
| AD0084 | Last treatment date (TRTEDT) for this patient record should be equal to the max Last Treatment Date (TRxxEDT) amoung all periods 01 thru xx | ADSL | Consistency | Error |
| AD0092 | For a given value of Planned treatment (TRTP), all values of planned treatment numeric (TRTPN) should be the same | BDS | Consistency | Error |
| AD0093 | For a given value of Planned treatment numeric (TRTPN), all values of planned treatment (TRTP) should be the same | BDS | Consistency | Error |
| AD0094 | Pooled Treatment group variables must contain a numeric 1-9 in their name | BDS | Format | Error |
| AD0095 | For a given value of Actual treatment (TRTA), all values of actual treatment numeric (TRTAN) should be the same | BDS | Consistency | Error |
| AD0096 | For a given value of Actual treatment numeric (TRTAN), all values of actual treatment (TRTA) should be the same | BDS | Consistency | Error |
| AD0097 | If Planned Pooled Treatment y(TRTPGyN) numeric variable is present, there must be a corresponding Planned Pooled Treatment y (TRTPGy) character variable | BDS | Presence | Error |
| AD0098 | Any variable ending in SDY (Start day) must have a value less than or equal to its corresponding EDY (end day) value | BDS | Consistency | Error |
| AD0099 | Any variable ending in SDY (Start day) must have a value less than or equal to its corresponding EDY (end day) value | BDS | Consistency | Error |
| AD0100 | When analysis period (APERIOD) exists such as 01, the BDS Analysis period end date (APEREDT) must equal the ADSL analysis period start date (AP01EDT) for that period | BDS | Consistency | Error |
| AD0101 | When analysis period (APERIOD) exists such as 01, the BDS Analysis period end date time (APEREDTM) must equal the ADSL analysis period end date time (AP01EDTM) for that period | BDS | Consistency | Error |
| AD0102 | The analysis period (APERIOD) will be a number like 01. There must be a corresponding planned treatment variable for this period (TRT01P) | BDS | Consistency | Error |
| AD0103 | The analysis period (APERIOD) will be a number like 01. There must be a corresponding first treatment date variable for this period (TRT01SDT) | BDS | Consistency | Error |
| AD0104 | The analysis period (APERIOD) will be a number like 01. There must be a corresponding last treatment date variable for this period (TRT01EDT) | BDS | Consistency | Error |
| AD0105 | For a given value of Analysis Period numeric value (APERIOD), all values of Analysis Period character value (APERIODC) should be the same | BDS | Consistency | Error |
| AD0106 | For a given value of Analysis Period character value (APERIODC), all values of Analysis Period numeric value (APERIOD) should be the same | BDS | Consistency | Error |
| AD0107 | When analysis period (APERIOD) exists such as 01, the BDS Analysis period start date (APERSDT) must equal the ADSL analysis period start date (AP01SDT) for that period | BDS | Consistency | Error |
| AD0108 | When analysis period (APERIOD) exists such as 01, the BDS Analysis period start date time (APERSDTM) must equal the ADSL analysis period start date time (AP01SDTM) for that period | BDS | Consistency | Error |
| AD0109 | For a given value of Analysis Visit (AVISIT), all values of Analysis Visit numeric(AVISITN) should be the same | BDS | Consistency | Error |
| AD0110 | For a given value of Analysis Visit numeric (AVISITN), all values of Analysis Visit (AVISIT) should be the same | BDS | Consistency | Error |
| AD0111 | When ARELTM is present, the anchor time variable and ARELTMU must also be included in the dataset, and the anchor time variable must be identified in the metadata for ARELTM | BDS | Presence | Error |
| AD0112 | If ARELTMU (unit) is populated ARELTM must be populated and vice versa | BDS | Consistency | Error |
| AD0113 | When ARELTM is present, the anchor time variable and ARELTMU must also be included in the dataset, and the anchor time variable must be identified in the metadata for ARELTM | BDS | Presence | Error |
| AD0114 | If ARELTMU (unit) is populated ARELTM must be populated and vice versa | BDS | Consistency | Error |
| AD0115 | If ATPT is populated ATPTREF must be populated and vice versa | BDS | Consistency | Error |
| AD0116 | If ATPT is populated ATPTREF must be populated and vice versa | BDS | Consistency | Error |
| AD0117 | For a given value of Analysis timepoint numeric (ATPTN), all values of Analysis timepoint (ATPT) should be the same for a given PARAMCD | BDS | Consistency | Error |
| AD0118 | For a given value of Analysis timepoint (ATPT), all values of Analysis timepoint numeric (ATPTN) should be the same for a given PARAMCD | BDS | Consistency | Error |
| AD0121 | Any variable ending in SDT (Start date) must have a value less than or equal to its corresponding EDT (end date) value (e.g. ADSL - TRTSDT, TR01SDT, AP01SDT ; BDS - APERSDT | ADSL, BDS | Consistency | Error |
| AD0122 | Any variable ending in SDT (Start date time) must have a value less than or equal to its corresponding EDT (end date time) value (e.g. ADSL - TRTSDTM, TR01SDTM, AP01SDTM ; BDS - APERSDTM | ADSL, BDS | Consistency | Error |
| AD0123 | For a given value of parameter code (PARAMCD), all values of parameter type (PARAMTYP) should be the same | BDS | Consistency | Error |
| AD0124 | For a given value of parameter code (PARAMCD), all values ofparameter catetgory y (PARCATy) should be the same | BDS | Consistency | Error |
| AD0125 | For a given value of numeric Parameter Category (PARCATyN), all values of character Parameter Category (PARCATy) should be the same | BDS | Consistency | Error |
| AD0126 | For a given value of character Parameter Category (PARCATy), all values of numeric Parameter Category (PARCATyN) should be the same | BDS | Consistency | Error |
| AD0129 | For a given value of Baseline Value character result (BASEC), all values of Baseline Value numeric result (BASE) should be the same for a given PARAMCD | BDS | Consistency | Error |
| AD0130 | For a given value of Baseline Value numeric result (BASE), all values of Baseline Value character result (BASEC) should be the same for a given PARAMCD | BDS | Consistency | Error |
| AD0132 | When all 3 variables are populated, Ratio to Base (R2BASE) must equal Analysis Value (AVAL) / Baseline Value (BASE) | BDS | Consistency | Error |
| AD0133 | When all 3 variables are populated, Ratio to AyLO (R2AyLO) must equal Analysis Value (AVAL) / Analysis Range y LO Value (AyLO) | BDS | Consistency | Error |
| AD0134 | When all 3 variables are populated, Ratio to AyHI (R2AyHI) must equal Analysis Value (AVAL) / Analysis Range y HI Value (AyLO) | BDS | Consistency | Error |
| AD0135 | For a given value of shift-numeric (SHIFTyN), all values of shift-text (SHIFTy) should be the same | BDS | Consistency | Error |
| AD0136 | For a given value of shift-text (SHIFTy), all values of shift-numeric (SHIFTyN) should be the same | BDS | Consistency | Error |
| AD0137 | When CRITyFL (Analysis Criterion Flag) is populated, it's corresponding parent Analysis Criterion Y must be populated | BDS | Consistency | Error |
| AD0138 | When CRITy (Analysis Criterion) is populated, it's corresponding Analysis Criterion Y Flag must be populated | BDS | Consistency | Error |
| AD0139 | If Criterion Y variable Flag is present, there must also be a corresponding Criterion Y variable | BDS | Presence | Error |
| AD0140 | If Criterion Y variable is present, there must also be a corresponding Criterion Y Flag variable | BDS | Presence | Error |
| AD0141 | For a given value of Parameter code (PARAMCD), all values of Parameter name (PARAM) should be the same | BDS | Consistency | Error |
| AD0142 | For a given value of Parameter name (PARAM), all values of Parameter code (PARAMCD) should be the same | BDS | Consistency | Error |
| AD0146 | For a given value of Parameter numeric (PARAMN), all values of Parameter (PARAM) should be the same | BDS | Consistency | Error |
| AD0147 | For a given value of Parameter (PARAM), all values of Parameter numeric (PARAMN) should be the same | BDS | Consistency | Error |
| AD0148 | Numeric Value of Parameter name (PARAMN) must only contain digits 0-9 | BDS | Format | Error |
| AD0149 | For a given value of Analysis Value Numeric (AVAL), all values of Analysis Value Character (AVALC) should be the same for a given PARAMCD | BDS | Consistency | Error |
| AD0150 | For a given value of Analysis Value Character (AVALC), all values of Analysis Value Numeric (AVAL) should be the same for a given PARAMCD | BDS | Consistency | Error |
| AD0151 | For a given value of parameter code (PARAMCD), all values of Analysis Criterion y (CRITy) should be the same | BDS | Consistency | Error |
| AD0152 | If the record is flagged as the baseline, then the Baseline Value (BASE) must equal the Analysis Value (AVAL) | BDS | Consistency | Error |
| AD0153 | For a given Patient (USUBJID) ,Parameter (PARAM), If there are multiple baseline records flagged, BASETYPE must be populated | BDS | Consistency | Error |
| AD0158 | If AWTDIFF is present then AWTARGET must be present | BDS | Presence | Error |
| AD0159 | If AWTDIFF is populated AWTARGET must be populated | BDS | Consistency | Error |
| AD0160 | If AWU is present then AWLO and AWHI must be present | BDS | Presence | Error |
| AD0161 | If AWU is populated both AWLO and AWHI must be populated | BDS | Consistency | Error |
| AD0162 | Any variable ending in LO must have a value less than or equal to its corresponding HI value (e.g. AWLO, ANRLO, A1LO) | BDS | Consistency | Error |
| AD0163 | If BTOXGR is present then ATOXGR and ABLFL must be present | BDS | Presence | Error |
| AD0164 | If BTOXGR is present then ATOXGR and ABLFL must be present | BDS | Presence | Error |
| AD0166 | If BNRIND is present then ANRIND and ABLFL must be present | BDS | Presence | Error |
| AD0167 | If BNRIND is present then ANRIND and ABLFL must be present | BDS | Presence | Error |
| AD0169 | Censor value (CSNR) must only contain digits 0-9 | BDS | Format | Error |
| AD0170 | If STARTDT is present then CNSR must be present | BDS | Presence | Error |
| AD0171 | If ONTRTFL =Y then TRTSDT <=ADT <= TRTEDT should be true (analysis must be between start and end range) Also ensure patient exists in both files | BDS | Consistency | Error |
| AD0172 | If ONTRTFL =Y then TRTSDT <=ADT <= TRTEDT should be true (analysis must be between start and end range) Also ensure patient exists in both files | BDS | Consistency | Error |
| AD0173 | if ONTRTFL!=Y then TRTSDT <=ADT <= TRTEDT should NOT be true (analysis must occur outside of treatment range. Also ensure patient exists in both files | BDS | Consistency | Error |
| AD0174 | If LVOTFL =Y then TRTSDT <=ADT <= TRTEDT should be true (analysis must be between start and end range) Also ensure patient exists in both files | BDS | Consistency | Error |
| AD0175 | For a given Patient (USUBJID) ,Parameter (PARAM) only one record should be marked as Last Value on Treatment | BDS | Consistency | Error |
| AD0176 | Anaysis Baseline Flag (character) has value that is not 1 or null | BDS | Terminology | Error |
| AD0177 | For a given Patient (USUBJID) ,Parameter (PARAM) and baseline type (BASETYPE) only one record can be the actual baseline value, marked by ABLFL = Y (with optional ABLFN = 1) | BDS | Consistency | Error |
| AD0178 | A variable of form ANLzzFL (analysis record flag) has a value that is not Y or null | BDS | Terminology | Error |
| AD0179 | If LVOTFL =Y then TRTSDT <=ADT <= TRTEDT should be true (analysis must be between start and end range) Also ensure patient exists in both files | BDS | Consistency | Error |
| AD1001 | Variables described in ADaM as Required must be included in the dataset. | ADSL, BDS | Presence | Error |
| AD1002 | Variables described in ADaM as Expected should be included in the dataset. | ADSL, BDS | Presence | Warning |
| AD1003 | For subject-level character population flag variables: N = no (not included), Y = yes (included). Null values are not allowed | ADSL | Terminology | Error |
| AD1004 | For subject-level numeric population flag variables: 0 = no (not included), 1 = yes (included). Null values are not allowed | ADSL | Terminology | Error |
| AD1005 | At least one analysis value (numeric or character) is not present in BDS | BDS | Presence | Error |
| AD1006 | Variable must be a max of 8 characters, start with a letter A-Z and and not contain anything other than letter, numbers, underscore (_) (as specified in ADaM rules 13,14,15) | ADSL, BDS | Format | Error |
| AD1007 | Variable must be a max of 8 characters, start with a letter A-Z or underscore, and and not contain anything other than letter, numbers, underscore (_) as specififed in ADaM rules 143,144,145 | BDS | Format | Error |
| AD1008 | Required variables (where Core attribute is 'Req') cannot be null for any record. | ADSL, BDS | Presence | Error |
