Validation Checks by Standard

ADaM 2.1

The SAS Clinical Standards Toolkit 1.4 provides 159 unique ADaM 2.1 validation checks. These validation checks are derived from the SAS interpretation of the CDISC ADaM Validation Checks Version 1.0 (final production version dated September 20, 2010), and the CDISC ADaM Validation Checks Version 1.1 Maintenance Release (dated and released January 21, 2011 to correct errors and remove duplicate checks). These documents are available in the members only area at http://www.cdisc.org/adam.
Information about the 159 records in the CDISC ADaM 2.1 Validation Master data set is in Validation Checks. Only selected columns are listed in the appendix.
Consider the interrelationships among the SAS Clinical Standards Toolkit validation check metadata. All run-time Validation Control data sets, any programs that build or derive from these data sets, corresponding Messages data sets, and the Validation_StdRef data set are examples of how interconnected many SAS Clinical Standards Toolkit metadata files are. For more information about the Messages data set, see Messages.
By default, the Validation Master data set is located in the <global standards library directory>/standards/cdisc-adam-2.1-1.4/validation/control folder.

CDISC ODM 1.3.0

The SAS Clinical Standards Toolkit provides check macros that validate the data in the SAS data sets representing CDISC ODM 1.3.0 data. The structure of this data is similar to CDISC CRT-DDS. Therefore, the process for validating the data is similar. The goal of these check macros is to ensure that all data is correctly specified, and that referential integrity is maintained. As a result, a standards-compliant CDISC define.xml file can be produced from these data sets.
As in CRT-DDS, the validity of ODM data is determined by the standard in the form of XML schema definitions. These XML schema definitions must be translated into checks appropriate for the relational and tabular formats.
Checks fall into these general categories:
  • Ensures that all cross-table references are satisfied and that the referenced item actually exists (referential integrity).
  • Ensures that required variables are not missing or empty for an observation or row.
  • Ensures that character data conforms to a particular format.
  • Formats are specified in the standard in one of two ways:
    • an enumeration
    • a regular expression
The SAS Clinical Standards Toolkit 1.4 provides 179 unique ODM 1.3.0 validation checks. These validation checks were developed by SAS and are based on ODM implementation experience and careful review of the CDISC ODM Implementation Guide, with special emphasis on the occurrence of “should” within the Implementation Guide.
Information about the 179 records in the CDISC ODM 1.3.0 Validation Master data set is in Validation Checks. Only selected columns are listed in the appendix.
Consider the interrelationships among the SAS Clinical Standards Toolkit validation check metadata. All run-time Validation Control data sets, any programs that build or derive from these data sets, corresponding Messages data sets, and the Validation_StdRef data set are examples of how interconnected many SAS Clinical Standards Toolkit metadata files are. For more information about the Messages data set, see Messages.
By default, the Validation Master data set is located in the <global standards library directory>/standards/cdisc-odm-1.3.0-1.4/validation/control folder.
ODM Validation Check Types lists the types of checks for ODM data.
Each check type is assumed to operate on data that exists in a source column in a source data set. A check type can reference one or more parameters that validate the source column data. A parameter can be a character string or a representation of a column other than the source column against which the source column data must be compared.
All character comparisons are case sensitive. Character data is assumed to have been trimmed of leading and trailing white space.
ODM Validation Check Types
Check Type
Check ID
Category
Description
Unique in data set
ODM0100
Structural
No two values for the source column can be equivalent within the same source data set.
ODM0211
Structural
Duplicate OrderNumber element. The OrderNumber attribute must be unique within the same source data set when not null.
Required character value
ODM0101
Data
The trimmed (white space removed) value of the character data must consist of one or more characters.
Required numeric value
ODM0101
Data
The numeric value of the column cannot be missing.
Enumeration(s0,s1,…)
ODM0114
Data
If character data exists, its value must match one of the given enumerated character strings. All string comparisons are case sensitive.
Foreign key(targetColumn)
ODM0110
Structural
Each existing value in this column must have an equivalent value in the given target column.
Foreign key required(targetColumn)
(1)
Structural
A value is required for this column in every row and each value must have an equivalent value in the given target column. This check is the equivalent of running the required character value check, and failing if that check fails. If required character value passes, the foreign key() check is run.
Character format: language
ODM0106
Data
The character data must consist of 1-8 alphabetical characters of either case, followed optionally by a hyphen character and any sequence of 1-8 alphabetical characters of either case or numeric after that hyphendigits. For example, e is a legal value, as are en-us and english and english-d842. Illegal values include 1en, mumblespeak, and en_us. The hyphen character sequence can be repeated any number of times also making a value such as english-mumbly-growly-47 a legal value. Regular expression: “[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*”.
Character format: fileName
ODM0107
Data
The character data must not contain any characters other than upper- and lower-case letters of the alphabet, numeric digits, the underscore (_) character, or a period. Regular expression: [A-Za-z0-9_.]+.
Character format: sasName
ODM0108
Data
The first character must be either alower- or upper-case letter or an underscore (_). Any subsequent character must be either an upper- or lowercase letter, a numeric digit, or the underscore (_). Regular expression: [A-Za-z_][A-Za-z0-9_]*.
Character format: sasFormat
ODM0109
Data
The first character must be either a lower- or upper-case letter, an underscore (_), or the dollar sign ($). Any subsequent character must be either an upper- or lowercase letter, a numeric digit, the underscore (_), or a period. Regular expression: [A-Za-z_$][A-Za-z0-9_.]*.
Must Have Corresponding Value(targetColumn)
ODM0111
Structural
For each distinct value in this column, there must be at least one equivalent value in the supplied target column.
Unique across data sets(targetcolumn0,…)
ODM0112
Structural
No value in this column can be equal to any value in any of the given data set columns.
Primary key
(2)
Data
Must satisfy the Unique in data set check type and the required character value check type.
Invalid Value
ODM0200
Data
Documents based on ODM 1.3 should have ODM version set to 1.3.
ODM0217
Data
An invalid SAS format name. In case the data type is character, the format name needs to start with the $ character.
ODM0219
Data
An invalid integer value. The attribute is defined as an integer, but the text string does not match the named data format. The allowed string pattern for an integer is: -?digit+.
ODM0221
Data
An invalid float value. The attribute is defined a float, but the text string does not match the named data format. The allowed string pattern for a float is: -?digit+(.digit+)?.
ODM0222
Data
An invalid date value. The attribute is defined as a date, but the text string does not match the named data format. The allowed string pattern for a date is: YYYY-MM-DD.
ODM0223
Data
An invalid time value. The attribute is defined a time, but the text string does not match the named data format. The allowed string pattern for a time is: hh:mm:ss(.n+)?((+|-)hh:mm)?.
ODM0224
Data
An invalid datetime value. The attribute is defined as a datetime, but the text string does not match the named data format. The allowed string pattern for a datetime is: YYYY-MMM-DD T hh:mm:ss(.n+)?((+|-)hh:mm)?.
External File Reference Found
ODM0201
Data
External file reference found because the prior file OID is not missing (for example, ODM.PriorFileOID ne ‘’)
Referenced OID Not Found
ODM0202
Data
If Metadata version IncludedOID is non-null, the referenced OID must be found in this XML file.
ODM0203
Data
If Metadata version IncludedStudyOID is non-null, the referenced OID must be found in this XML file.
Attribute is Required
ODM0216
Column
The ItemDef length attribute is required when data type is text, string, integer, or float and can be ignored for the other types.
ODM0220
Column
The required attribute SignificantDigits cannot be empty or missing when Data type is Float.
ODM0228
Column
Only numeric (integer or float) items should have measurement units. The MeasurementUnitRefs list the acceptable measurement units for this type of item. If only one MeasurementUnitRef is present, all items of this type carry this measurement unit by default. If no MeasurementUnitRef is present, the item's value is scalar (for example., a pure number).
Data Set Does Not Exist
ODM0218
Metadata
Invalid root element. The ODM file must contain a root element called ODM. In other words, the ODM data set must exist.
Mixed Data Exists
ODM0226
Multirecord
Typed and Untyped data transmission should not be mixed within a single ODM file.
Multiple Records Exists
ODM0227
Column
To avoid ambiguity, a particular language tag should not occur more than once in a series of TranslatedText elements
(1) This validation is a combination of checks ODM0101 and ODM0110.
(2) This validation is a combination of checks ODM0100 and ODM0101.
Each check type belongs to one of two categories:
  1. Data checks have no dependencies on data outside of the source table. An example is ensuring that a value exists in a column in which values cannot be missing.
  2. Structural checks deal with relationships and data integrity between tables. An example is foreign key enforcement. Structural conditions must be met for the successful generation of an ODM XML file. You might want to defer structural checks until later in the process when populating the ODM data sets. This is because foreign key relationships require that the data is made available in a particular order (that is, a referenced key must be available before the foreign key to it can exist).
The CDISC ODM validation checks that are listed in ODM Validation Checks Using Expected Values are performed by comparing the data against a set of expected values. The expected values are stored in a format catalog (odmct.sas7bcat) and a data set (odmct.sas7bdat). They are located in the <global standards library directory>/standards/cdisc-odm-1.3.0-1.4/formats folder.
The methodology ensures case-sensitivity compliance, which is required by the XML schema validation. For example, ItemRangeChecks has a Comparator variable whose values are controlled by the Comp Enumeration ("EQ", "GE", "GT", "IN", "LE", "LT", "NE", and "NOTIN"). If mixed case or lowercase values are detected, then this validation check reports an error. The validation check is ODM0114 (see ODM Validation Check Types), and it uses the Comp SAS format to report this as an error.
The SASReferences data set needs to contain a row for fmtsearch, with SAS libref set to odmfmt and the Filename set to odmct.sas7bcat.
ODM Validation Checks Using Expected Values
CheckID
Table
Variable Checked
XML Codelist
Check
ODM0114
Annotation
TransactionType
TType
Enumeration ("Context", "Insert", "Remove", "Update", "Upsert")
ODM0114
Annotation
CommentSponsorOrSite
SPSite
Enumeration ("Site", "Sponsor")
ODM0114
Annotation
ParentType
PType
Enumeration ("Annotations", "Association", "AuditRecords", "FormData", "ItemData", "ItemGroupData", "Signatures", "StudyEventData", "SubjectData")
ODM0114
AuditRecord
EditPoint
EditPT
Enumeration ("DBAudit", "DataManagement", "Monitoring")
ODM0114
AuditRecord
UsedImputationMethod
NY
Enumeration ("No", "Yes")
ODM0114
AuditRecord
ParentType
PType
Enumeration ("Annotations", "Association", "AuditRecords", "FormData", "ItemData", "ItemGroupData", "Signatures", "StudyEventData", "SubjectData")
ODM0114
CodeLists
DataType
CLType
Enumeration ("float", "integer", "string", "text")
ODM0114
FormData
TransactionType
TType
Enumeration ("Context", "Insert", "Remove", "Update", "Upsert")
ODM0114
FormDefItemGroupRefs
Mandatory
NY
Enumeration ("No", "Yes")
ODM0114
FormDefs
Repeating
NY
Enumeration ("No", "Yes")
ODM0114
ItemData
TransactionType
TType
Enumeration ("Context", "Insert", "Remove", "Update", "Upsert")
ODM0114
ItemData
IsNull
NY
Enumeration ("No", "Yes")
ODM0114
ItemData
ItemDataType
DType
Enumeration ("Any", "Base64Binary", "Base64Float", "Boolean", "Date", "Datetime", "DurationDatetime", "Float", "HexBinary", "HexFloat", "IncompleteDatetime", "Integer", "IntervalDatetime", "PartialDate", "PartialTime", "String", "Time", "URI")
ODM0114
ItemDefs
DataType
IDType
Enumeration ("URI", "base64Binary", "base64Float", "boolean", "date", "datetime", "double", "durationDatetime", "float", "hexBinary", "hexFloat", "incompleteDatetime", "integer", "intervalDatetime", "partialDate", "partialTime", "string", "text", "time")
ODM0114
ItemGroupData
TransactionType
TType
Enumeration ("Context", "Insert", "Remove", "Update", "Upsert")
ODM0114
ItemGroupDefItemRefs
Mandatory
NY
Enumeration ("No", "Yes")
ODM0114
ItemGroupDefs
Repeating
NY
Enumeration ("No", "Yes")
ODM0114
ItemGroupDefs
IsReferenceData
NY
Enumeration ("No", "Yes")
ODM0114
ItemRangeChecks
Comparator
Comp
Enumeration ("EQ", "GE", "GT", "IN", "LE", "LT", "NE", "NOTIN")
ODM0114
ItemRangeChecks
SoftHard
Soft
Enumeration ("Hard", "Soft")
ODM0114
Location
LocationType
LocType
Enumeration ("CRO", "Lab", "Other", "Site", "Sponsor")
ODM0114
MethodDefs
Type
MType
Enumeration ("Computation", "Imputation", "Other", "Transpose")
ODM0114
ODM
Archival
YesNo
Enumeration ("Yes")
ODM0114
ODM
FileType
FileType
Enumeration ("Snapshot", "Transactional")
ODM0114
ODM
Granularity
Gran
Enumeration ("AdminData", "All", "AllClinicalData", "Metadata", "ReferenceData", "SingleSite", "SingleSubject")
ODM0114
Signature
ParentType
PType
Enumeration ("Annotations", "Association", "AuditRecords", "FormData", "ItemData", "ItemGroupData", "Signatures", "StudyEventData", "SubjectData")
ODM0114
SignatureDef
Methodology
SMethod
Enumeration ("Digital", "Electronic")
ODM0114
StudyEventData
TransactionType
TType
Enumeration ("Context", "Insert", "Remove", "Update", "Upsert")
ODM0114
StudyEventDefs
Repeating
NY
Enumeration ("No", "Yes")
ODM0114
StudyEventDefs
Type
Type
Enumeration ("Common", "Scheduled", "Unscheduled")
ODM0114
StudyEventFormRefs
Mandatory
NY
Enumeration ("No", "Yes")
ODM0114
SubjectData
TransactionType
TType
Enumeration ("Context", "Insert", "Remove", "Update", "Upsert")
ODM0114
User
UserType
UType
Enumeration ("Investigator", "Lab", "Other", "Sponsor")
ODM0114
UserAddress
Country
C3166ISO
Controlled by the two-letter codes from the ISO 3166-1 standard for country codes. The values are available from this Web site: http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm

CDISC SDTM 3.1.1

The SAS Clinical Standards Toolkit 1.4 provides 150 unique SDTM 3.1.1 validation checks. These checks are derived from four sources.
  • The SAS interpretation of the CDISC SDTM WebSDM 2.6 documented checks. See the white paper at:
    http://phaseforward.com/resource/whitepapers/Validation Checks 2.6/WebSDM V2.6 Validation Checks FINAL.pdf
  • An update to the WebSDM validation checks (Version 3.0, revised June 2009) available at:
    http://www.phaseforward.com/products/cdisc/
  • Checks supporting loads into the Janus study data repository being developed by the FDA and the NCI. This information is documented in the SDTM Validation Specification, v.1.0, November 2007 available at:
    http://www.fda.gov/downloads/ForIndustry/DataStandards/StudyDataStandards/UCM190628.pdf
  • SAS checks based on SAS data management and cleaning experiences building CDISC SDTM domains.
The CDISC SDTM 3.1.1 Validation Master data set, as defined in the SAS Clinical Standards Toolkit 1.4, contains 257 records. Even though the SAS Clinical Standards Toolkit provides 150 unique CDISC SDTM 3.1.1 checks, there are 257 records in the Validation Master data set. The Validation Master data set is built with multiple instances of the checks. This better supports check selection by version or checksource (that is, WebSDM, Janus, or customer-defined checks), and enables unique check logic and messaging by version or checksource. Of these 257 checks, three are inactive, and 12 are deprecated. Deprecated CDISC SDTM checks generally reflect changes in the WebSDM specifications over time.
Note: The validation check data set column checkstatus is designed to provide an indication of the “state” of each check. It says whether the check is ready to be run in its current defined state, or should it be run based on some external criteria. Valid values are 1 (active), 0 (inactive), -1 (deprecated), and -2 (not yet implemented). Values are extensible to meet your given requirements. No SAS Clinical Standards Toolkit code requires specific values. You can elect to use other values such as 0 (draft), 1 (test), and 2 (production). If a check is included in the run-time validation control data set, the SAS Clinical Standards Toolkit attempts to run the check as defined, regardless of the value of the checkstatus column.
This table provides the distribution of all 257 CDISC SDTM validation checks by the original source of the check (the Validation Master checksource field).
Distribution of CDISC SDTM 3.1.1 Validation Checks
Check Source
Count
Deprecated
Inactive
WebSDM
114
5
1
Janus
53
2
0
JanusFR
58
3
1
SAS
32
2
1
Total
257
12
3
This does not mean that the SAS Clinical Standards Toolkit 1.4 supports 114 different WebSDM checks or 32 unique SAS checks. There are multiple instances of specific checks to handle different sets of SDTM domains. For example, check SDTM0604 assesses whether the sequence numbers (**SEQ) are consecutively numbered. For most domains, this is assessed within each patient (USUBJID). However, the trial summary (TS) domain does not contain patient-level data, so the check logic differs. The Validation Master metadata differs for these two instances of the SDTM0604 check, but reports the same error message for the check.
Information about the 257 records in the CDISC SDTM 3.1.1 Validation Master data set is itemized in CDISC SDTM Validation Checks. Only selected columns are listed in the appendix. For a full description of a sample Validation Master data set for the CDISC SDTM standard, see Sample CDISC SDTM 3.1.2 Validation Master Data Set Record.
Consider the interrelationships among the SAS Clinical Standards Toolkit validation check metadata. All run-time Validation Control data sets, any programs that build or derive from these data sets, corresponding Messages data sets, and the Validation_StdRef data set are examples of how interconnected many SAS Clinical Standards Toolkit metadata files are. For more information about the Messages data set, see Messages.
By default, the Validation_StdRef data set is found in the <global standards library directory>/standards/cdisc-sdtm-3.1.1-1.4/validation/control folder.
Note: Currently, the SAS Clinical Standards Toolkit does not fully support all WebSDM checks. Checks that are not supported require a comparison between SDTM metadata and an associated define.xml file. Loads into the Janus repository require the existence and use of a define.xml file. However, the SAS Clinical Standards Toolkit 1.4 does not require an associated define.xml file for SDTM validation. For more information, see the SAS site support.sas.com for SAS Notes, other usage notes, and their current status.

CDISC SDTM 3.1.2

The SAS Clinical Standards Toolkit 1.4 provides 243 unique SDTM 3.1.2 validation checks. These checks are derived from four sources.
  • The SAS interpretation of the CDISC SDTM WebSDM 3.0 documented checks. Documentation is available at http://www.phaseforward.com/products/cdisc/.
  • The SAS interpretation of OpenCDISC CDISC SDTM 3.1.2 validation rules. The validation rules are available at http://www.opencdisc.org/projects/validator/cdisc-sdtm-3.1.2-validation-rules.
  • Checks supporting loads into the Janus study data repository being developed by the FDA and the NCI. This information is documented in the SDTM Validation Specification, v1.0, November 2007 available at http://www.fda.gov/downloads/ForIndustry/DataStandards/StudyDataStandards/UCM190628.pdf.
  • SAS checks based on SAS data management and cleaning experiences building CDISC SDTM domains.
The CDISC SDTM 3.1.2 Validation Master data set, as defined in the SAS Clinical Standards Toolkit 1.4, contains 247 records. Even though the SAS Clinical Standards Toolkit provides 243 unique CDISC SDTM 3.1.1 checks, there are 247 records in the Validation Master data set. Of these 247 checks, one is inactive, eight are deprecated, and 18 are not implemented. Deprecated CDISC SDTM checks generally reflect changes in the WebSDM specifications over time. Checks that are not implemented generally involve a comparison of the CDISC SDTM data, metadata, or both with an associated define.xml file. Such cross-standard validation is not supported in the current release of the SAS Clinical Standards Toolkit. In the SAS Clinical Standards Toolkit 1.4, the Janus and JanusFR checks were dropped for SDTM 3.1.2.
This table provides the distribution of all 247 CDISC SDTM validation checks by the original source of the check (the Validation Master checksource field).
Distribution of CDISC SDTM 3.1.2 Validation Checks
Check Source
Count
Inactive
Deprecated
Not Implemented
WebSDM
164
0
5
12
Janus
1
0
1
0
OpenCDISC
44
0
0
6
SAS
38
1
2
0
Total
247
1
8
18
Note: The SAS Clinical Standards Toolkit allows multiple invocations of the same validation check. Multiple invocations for four checks account for the difference between the 243 unique checks and 247 records in the Validation Master data set. For example, check SDTM0604 assesses whether the sequence numbers (**SEQ) are consecutively numbered. For most domains, this is assessed within each patient (USUBJID). However, the trial summary (TS) domain does not contain patient-level data, so the check logic differs. The Validation Master metadata differs for these two instances of the SDTM0604 check, but reports the same error message for the check.
Information about the 247 records in the CDISC SDTM 3.1.2 Validation Master data set is itemized in CDISC SDTM Validation Checks. Only selected columns are listed in the appendix.
Consider the interrelationships among the SAS Clinical Standards Toolkit validation check metadata. All run-time Validation Control data sets, any programs that build or derive from these data sets, corresponding Messages data sets, and the Validation_StdRef data set are examples of how interconnected many SAS Clinical Standards Toolkit metadata files are. For more information about the Messages data set, see Messages.
By default, the Validation_StdRef data set is found in the <global standards library directory>/standards/cdisc-sdtm-3.1.2-1.4/validation/control folder.
Note: Currently, the SAS Clinical Standards Toolkit does not fully support all WebSDM checks. Checks that are not supported require a comparison between SDTM metadata and an associated define.xml file. Loads into the Janus repository require the existence and use of a define.xml file. However, the SAS Clinical Standards Toolkit 1.4 does not require an associated define.xml file for SDTM validation. For more information, see the SAS site at support.sas.com for SAS Notes, other usage notes, and their current status.

CDISC CRT-DDS 1.0

The SAS Clinical Standards Toolkit provides check macros that validate the data in the SAS data sets representing CDISC CRT-DDS data. The goal of these check macros is to ensure that all data is correctly specified and that referential integrity is maintained. As a result, a standards-compliant CDISC define.xml file can be produced from these data sets.
The validity of CRT-DDS data is determined by the standard in the form of XML schema definitions. These XML schema definitions must be translated into checks appropriate for the relational and tabular format.
Checks fall into these general categories:
  • Ensures that all cross-table references are satisfied and that the referenced item actually exists (referential integrity).
  • Ensures that required variables are not missing or empty for an observation or row.
  • Ensures that character data conforms to a particular format.
Formats are specified in the standard in one of two ways:
  • an enumeration
  • a regular expression
CRT-DDS Validation Check Types lists the types of checks for CRT-DDS data.
Each check type is assumed to operate on data that exists in a source column in a source data set. A check type can reference one or more parameters that validate the source column data. A parameter can be a character string or a representation of some column other than the source column against which the source column data must be compared.
All character comparisons are case sensitive. Character data is assumed to have been trimmed of leading or trailing white space.
CRT-DDS Validation Check Types
Check Type
Check ID
Category
Description
Unique in data set
CRT0100
Structural
No two values for the source column can be the same in the same source data set.
Required character value
CRT0101
Data
The trimmed (white space removed) value of the character data must consist of one or more characters.
Required numeric value
CRT0101
Data
The numeric value of the column cannot be missing.
Enumeration(s0,s1,...)
CRT0114
Data
If character data exists, its value must match one of the enumerated character strings. All string comparisons are case sensitive.
Foreign key(targetColumn)
CRT0110
Structural
Each existing value in this column must have an equivalent value in the target column.
Foreign key required(targetColumn)
(1)
Structural
A value is required for this column in every row. Each value must have an equivalent value in the target column. This check is the equivalent of running the required character value check, and this check failing if that check fails. If the required character value passes, the foreign key() check is run.
Character format: language
CRT0106
Data
The character data must consist of 1 to 8 alphabetical characters of any case. It can be followed by a hyphen and any sequence of 1 to 8 alphabetical characters in any case or numeric digits after that hyphen. For example, e is a legal value, as is en-us, english, and english-d842. Illegal values include 1en, mumblespeak, and en_us. The hyphen character sequence can be repeated, making a value such as english-mumbly-growly-47 a legal value. Regular expression: [a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*.
Character format: fileName
CRT0107
Data
The character data must not contain any characters other than uppercase and lowercase letters of the alphabet, numeric digits, an underscore (_), or a period. Regular expression: [A-Za-z0-9_.]+.
Character format: sasFormat
CRT0109
Data
The first character must be either a lowercase or uppercase letter, an underscore (_), or the dollar sign ($). Any subsequent character must be either an uppercase or lowercase letter, a numeric digit, an underscore (_), or a period. Regular expression: [A-Za-z_$][A-Za-z0-9_.]*.
Character format: sasName
CRT0108
Data
The first character must be either a lowercase or uppercase letter or an underscore (_). Any subsequent character must be either an uppercase or lowercase letter, a numeric digit, or an underscore (_). Regular expression: [A-Za-z_][A-Za-z0-9_]*.
Unique across data sets(targetcolumn0,...)
CRT0112
Structural
No value in this column can be the same as any value in any of the data set columns.
Primary key
(2)
Data
Must be unique in data set check type and the required character value check type.
Must Have Corresponding Value(targetColumn)
CRT0111
Structural
For each distinct value in this column, there must be at least one equivalent value in the target column.
No Duplicates Per Unique Value(targetColumn)
CRT0113
Structural
For each distinct value in the target column, each value in the source column must be unique. That is, the same value cannot appear more than once in the source column for each distinct value in the target column.
(1) This validation is a combination of checks CRT0101 and CRT0110.
(2) This validation is a combination of checks CRT0100 and CRT0101.
Each check type belongs to one of two categories.
  1. Data checks have no dependencies on data outside of the source table. An example is ensuring that a value exists in a column in which values cannot be missing.
  2. Structural checks deal with relationships and data integrity between tables. Foreign key enforcement is an example of a structural check. Structural conditions must be met for the successful generation of a define.xml file. You might want to defer structural checks until later in the process of populating the CRT-DDS data sets. This is because foreign key relationships require that the data be made available in a particular order (that is, a referenced key must be available before the foreign key to it can exist).
CRT-DDS Validation Checks
CRT-DDS Validation Number
Source Data Set
Check ID
Variable Being Checked
Check
0000
DefineDocument
CRT0100,
CRT0101
FileOID
Primary key
0001
DefineDocument
CRT0101
FileType
Required character value
0002
DefineDocument
CRT0100
ID
Unique in data set
0003
DefineDocument
CRT0112
ID
Unique across data sets (MDVLeaf.ID, ItemGroupLeaf.ID)
0005
DefineDocument
CRT0114
FileType
Enumeration ("Snapshot", "Transactional")
0006
DefineDocument
CRT0114
Archival
Enumeration ("Yes")
0007
DefineDocument
CRT0114
Granularity
Enumeration ("All", "Metadata", "AdminData", "ReferenceData", "AllClinicalData", "SingleSite", "SingleSubject")
0008
Study
CRT0101,
CRT0110
FK_DefineDocument
Foreign key required (DefineDocument.FileOID)
0009
Study
CRT0100,
CRT0101
OID
Primary key
0147
Study
CRT0101
StudyName
Required character value
0148
Study
CRT0101
StudyDescription
Required character value
0149
Study
CRT0101
ProtocolName
Required character value
0010
MeasurementUnits
CRT0100,
CRT0101
OID
Primary key
0011
MeasurementUnits
CRT0101
Name
Required character value
0012
MeasurementUnits
CRT0101,
CRT0110
FK_Study
Foreign key required (Study.OID)
0013
MUTranslatedText
CRT0106
lang
Character format: language
0014
MUTranslatedText
CRT0101,
CRT0110
FK_MeasurementUnits
Foreign key required (MeasurementUnits.OID)
0015
MetaDataVersion
CRT0100,
CRT0101
OID
Primary key
0016
MetaDataVersion
CRT0101
Name
Required character value
0017
MetaDataVersion
CRT0101,
CRT0110
FK_Study
Foreign key required (Study.OID)
0150
MetaDataVersion
CRT0101
DefineVersion
Required character value
0151
MetaDataVersion
CRT0101
StandardName
Required character value
0152
MetaDataVersion
CRT0101
StandardVersion
Required character value
0018
AnnotatedCRFs
CRT0101,
CRT0110
leafID
Foreign key required (MDVLeaf.ID)
0019
AnnotatedCRFs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0020
SupplementalDocs
CRT0101,
CRT0110
leafID
Foreign key required (MDVLeaf.ID)
0021
SupplementalDocs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0022
MDVLeaf
CRT0100,
CRT0101
ID
Primary key
0023
MDVLeaf
CRT0111
ID
Must have corresponding value (MDVLeafTitles.FK_MDVLeaf)
0024
MDVLeaf
CRT0112
ID
Unique across data sets (DefineDocument.ID, ItemGroupLeaf.ID)
0025
MDVLeaf
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0026
MDVLeafTitles
CRT0101,
CRT0110
FK_MDVLeaf
Foreign key required (MDVLeaf.ID)
0027
ComputationMethods
CRT0100,
CRT0101
OID
Primary key
0028
ComputationMethods
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0029
ValueLists
CRT0100,
CRT0101
OID
Primary key
0030
ValueLists
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0031
ValueListItemRefs
CRT0101,
CRT0110
ItemOID
Foreign key required (ItemDefs.OID)
0032
ValueListItemRefs
CRT0114
Mandatory
Enumeration ("Yes", "No")
0033
ValueListItemRefs
CRT0110
ImputationMethodOID
Foreign key (ImputationMethods.OID)
0034
ValueListItemRefs
CRT0110
RoleCodeListOID
Foreign key (CodeLists.OID)
0035
ValueListItemRefs
CRT0101,
CRT0110
FK_ValueLists
Foreign key required (ValueLists.OID)
0036
ValueListItemRefs
CRT0101
Mandatory
Required character value
0037
ProtocolEventRefs
CRT0101,
CRT0110
StudyEventOID
Foreign key required (StudyEventDefs.OID)
0038
ProtocolEventRefs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0039
ProtocolEventRefs
CRT0114
Mandatory
Enumeration ("Yes", "No")
0040
ProtocolEventRefs
CRT0101
Mandatory
Required character value
0041
ProtocolEventRefs
CRT0113
StudyEventOID
No duplicates per unique value (FK_MetaDataVersion)
0042
ProtocolEventRefs
CRT0113
OrderNumber
No duplicates per unique value (FK_MetaDataVersion)
0043
StudyEventDefs
CRT0100,
CRT0101
OID
Primary key
0044
StudyEventDefs
CRT0101
Name
Required character value
0045
StudyEventDefs
CRT0114
Repeating
Enumeration ("Yes", "No")
0046
StudyEventDefs
CRT0101
Repeating
Required character value
0047
StudyEventDefs
CRT0114
Type
Enumeration ("Scheduled", "Unscheduled", "Common")
0048
StudyEventDefs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0153
StudyEventDefs
CRT0101
Type
Required character value
0049
StudyEventFormRefs
CRT0101,
CRT0110
FormOID
Foreign key required (FormDefs.OID)
0050
StudyEventFormRefs
CRT0114
Mandatory
Enumeration ("Yes", "No")
0051
StudyEventFormRefs
CRT0101
Mandatory
Required character value
0052
StudyEventFormRefs
CRT0101,
CRT0110
FK_StudyEventDefs
Foreign key required (StudyEventDefs.OID)
0053
StudyEventFormRefs
CRT0113
FormOID
No duplicates per unique value (StudyEventFormRefs.FK_StudyEventDefs)
0054
StudyEventFormRefs
CRT0113
OrderNumber
No duplicates per unique value (StudyEventFormRefs.FK_StudyEventDefs)
0055
FormDefs
CRT0100,
CRT0101
OID
Primary key
0056
FormDefs
CRT0101
Name
Required character value
0057
FormDefs
CRT0114
Repeating
Enumeration ("Yes", "No")
0058
FormDefs
CRT0101
Repeating
Required character value
0059
FormDefs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0060
FormDefItemGroupRefs
CRT0101,
CRT0110
ItemGroupOID
Foreign key required (ItemGroupDefs.OID)
0061
FormDefItemGroupRefs
CRT0114
Mandatory
Enumeration ("Yes", "No")
0062
FormDefItemGroupRefs
CRT0101
Mandatory
Required character value
0063
FormDefItemGroupRefs
CRT0101,
CRT0110
FK_FormDefs
Foreign key required (FormDefs.OID)
0064
FormDefItemGroupRefs
CRT0113
OrderNumber
No duplicates per unique value (FormDefItemGroupRefs.FK_FormDefs)
0065
FormDefItemGroupRefs
CRT0113
ItemGroupOID
No duplicates per unique value (FormDefItemGroupRefs.FK_FormDefs)
0066
FormDefArchLayouts
CRT0100,
CRT0101
OID
Primary key
0067
FormDefArchLayouts
CRT0101
PdfFileName
Required character value
0068
FormDefArchLayouts
CRT0107
PdfFileName
Character format: filename
0069
FormDefArchLayouts
CRT0110
PresentationOID
Foreign key (Presentation.OID)
0070
FormDefArchLayouts
CRT0101,
CRT0110
FK_FormDefs
Foreign key required (FormDefs.OID)
0071
ItemGroupDefs
CRT0100,
CRT0101
OID
Primary key
0072
ItemGroupDefs
CRT0111
OID
Must have corresponding value (ItemGroupDefItemRefs.ItemOID)
0073
ItemGroupDefs
CRT0101
Name
Required character value
0074
ItemGroupDefs
CRT0114
Repeating
Enumeration ("Yes", "No")
0075
ItemGroupDefs
CRT0101
Repeating
Required character value
0076
ItemGroupDefs
CRT0114
IsReferenceData
Enumeration ("Yes", "No")
0077
ItemGroupDefs
CRT0108
SASDatasetName
Character Format: sasName
0078
ItemGroupDefs
CRT0101
Label
Required character value
0079
ItemGroupDefs
CRT0101
ArchiveLocationID
Required character value
0080
ItemGroupDefs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0081
ItemGroupDefItemRefs
CRT0101,
CRT0110
ItemOID
Foreign key required (ItemDefs.OID)
0082
ItemGroupDefItemRefs
CRT0114
Mandatory
Enumeration ("Yes", "No")
0083
ItemGroupDefItemRefs
CRT0101
Mandatory
Required character value
0084
ItemGroupDefItemRefs
CRT0110
ImputationMethodOID
Foreign key (ImputationMethods.OID)
0085
ItemGroupDefItemRefs
CRT0110
RoleCodeListOID
Foreign key (CodeLists.OID)
0086
ItemGroupDefItemRefs
CRT0101,
CRT0110
FK_ItemGroupDefs
Foreign key required (ItemGroupDefs.OID)
0087
ItemGroupDefItemRefs
CRT0113
OrderNumber
No duplicates per unique value (ItemGroupDefItemRefs.FK_ItemGroupDefs)
0088
ItemGroupDefItemRefs
CRT0113
ItemOID
No duplicates per unique value (ItemGroupDefItemRefs.FK_ItemGroupDefs)
0154
ItemGroupDefItemRefs
CRT0101
Role
Required character value
0089
ItemGroupAliases
CRT0101
Context
Required character value
0090
ItemGroupAliases
CRT0101
Name
Required character value
0091
ItemGroupAliases
CRT0101,
CRT0110
FK_ItemGroupDefs
Foreign key required (ItemGroupDefs.OID)
0092
ItemGroupLeaf
CRT0100,
CRT0101
ID
Primary key
0093
ItemGroupLeaf
CRT0112
ID
Unique across data sets (DefineDocument.ID, MDVLeaf.ID)
0094
ItemGroupLeaf
CRT0101,
CRT0110
FK_ItemGroupDefs
Foreign key required (ItemGroupDefs.OID)
0095
ItemGroupLeafTitles
CRT0101,
CRT0110
FK_ItemGroupLeaf
Foreign key required (ItemGroupLeaf.ID)
0096
ItemDefs
CRT0100,
CRT0101
OID
Primary key
0097
ItemDefs
CRT0101
Name
Required character value
0098
ItemDefs
CRT0114
DataType
Enumeration ("integer", "float", "date", "datetime", "time", "text", "string")
0099
ItemDefs
CRT0101
DataType
Required character value
0100
ItemDefs
CRT0108
SASFieldName
Character format: sasName
0101
ItemDefs
CRT0108
SDSVarName
Character format: sasName
0102
ItemDefs
CRT0110
CodeListRef
Foreign key (CodeLists.OID)
0103
ItemDefs
CRT0110
ComputationMethodOID
Foreign key (ComputationMethods.OID)
0104
ItemDefs
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0105
ItemQuestionTranslatedText
CRT0106
lang
Character format: language
0106
ItemQuestionTranslatedText
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0107
ItemQuestionExternal
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0108
ItemMURefs
CRT0101,
CRT0110
MeasurementUnitOID
Foreign key required (MeasurementUnits.OID)
0109
ItemMURefs
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0110
ItemRangeChecks
CRT0100,
CRT0101
OID
Primary key
0111
ItemRangeChecks
CRT0111
OID
Must have corresponding value (ItemRangeCheckValues.OID)
0112
ItemRangeChecks
CRT0101
Comparator
Required character value
0113
ItemRangeChecks
CRT0114
Comparator
Enumeration ("LT", "LE", "GT", "GE", "EQ", "NE", "IN", "NOTIN")
0114
ItemRangeChecks
CRT0101
SoftHard
Required character value
0115
ItemRangeChecks
CRT0114
SoftHard
Enumeration ("Soft", "Hard")
0116
ItemRangeChecks
CRT0101,
CRT0110
MURefOID
Foreign key required (MeasurementUnits.OID)
0117
ItemRangeChecks
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0118
ItemRangeCheckValues
CRT0101,
CRT0110
FK_ItemRangeChecks
Foreign key required (ItemRangeChecks.OID)
0119
RCErrorTranslatedText
CRT0106
lang
Character format: language
0120
RCErrorTranslatedText
CRT0101,
CRT0110
FK_ItemRangeChecks
Foreign key required (ItemRangeChecks.OID)
0121
ItemRole
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0122
ItemAliases
CRT0101
Context
Required character value
0123
ItemAliases
CRT0101
Name
Required character value
0124
ItemAliases
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0125
ItemValueListRefs
CRT0101,
CRT0110
ValueListOID
Foreign key required (ValueLists.OID)
0126
ItemValueListRefs
CRT0101,
CRT0110
FK_ItemDefs
Foreign key required (ItemDefs.OID)
0127
CodeLists
CRT0100,
CRT0101
OID
Primary key
0128
CodeLists
CRT0101
Name
Required character value
0129
CodeLists
CRT0114
DataType
Enumeration ("integer", "float", "text")
0130
CodeLists
CRT0101
DataType
Required character value
0131
CodeLists
CRT0109
SASFormatName
Character format: sasFormat
0132
CodeLists
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0133
ExternalCodeLists
CRT0101,
CRT0110
FK_CodeLists
Foreign key required (CodeLists.OID)
0134
ExternalCodeLists
CRT0112
FK_CodeLists
Unique across data sets (CodeListItems.FK_CodeLists)
0135
CodeListItems
CRT0100,
CRT0101
OID
Primary key
0137
CodeListItems
CRT0101,
CRT0110
FK_CodeLists
Foreign key required (CodeLists.OID)
0138
CodeListItems
CRT0112
FK_CodeLists
Unique across data sets (ExternalCodeLists.FK_CodeLists)
0139
CodeListItems
CRT0113
CodedValue
No duplicates per unique value (FK_CodeLists)
0140
CLItemDecodeTranslatedText
CRT0106
lang
Character format: language
0141
CLItemDecodeTranslatedText
CRT0101,
CRT0110
FK_CodeListItems
Foreign key required (CodeListItems.OID)
0142
ImputationMethods
CRT0100,
CRT0101
OID
Primary key
0143
ImputationMethods
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
0144
Presentation
CRT0100,
CRT0101
OID
Primary key
0145
Presentation
CRT0106
lang
Character format: language
0146
Presentation
CRT0101,
CRT0110
FK_MetaDataVersion
Foreign key required (MetaDataVersion.OID)
The CDISC CRT-DDS validation checks that are listed in CRT-DDS Validation Checks are performed by comparing the data against a set of expected values. The expected values have been stored in a format catalog (crtddsct.sas7bcat) and a data set (crtddsct.sas7bdat). They are in the <global standards library directory>/standards/cdisc-crtdds-1.0-1.4/formats folder.
This table lists the format names and values that are used during CRT-DDS validation. This methodology ensures case-sensitivity compliance required by the XML schema validation. For example, the ItemRangeChecks data set requires an enumeration edit for values such as LT and LE. If mixed case or lowercase values are detected, then the validation check reports an error. In this case, the validation check is CRT0114, (see CRT-DDS Validation Checks) and it uses the Comp format to report this as an error.
Enumeration Validation Format Values*
Format
Value 1
Value 2
Filetype
Snapshot
Transactional
Snapshot
Transactional
NY
Yes
No
Yes
No
Y
Yes
Yes
Gran
All
Metadata
AdminData
ReferenceData
AllClinicalData
SingleSite
SingleSubject
All
Metadata
AdminData
ReferenceData
AllClinicalData
SingleSite
SingleSubject
Type
Scheduled
Unscheduled
Common
Scheduled
Unscheduled
Common
IDType
integer
float
date
datetime
time
text
string
integer
float
date
datetime
time
text
string
Comp
LT
LE
GT
GE
EQ
NE
IN
NOTIN
LT
LE
GT
GE
EQ
NE
IN
NOTIN
Soft
Soft
Hard
Soft
Hard
CLType
integer
float
text
integer
float
text
*Value 1 and Value 2 are case sensitive.
The SASReferences data set needs to contain a row for fmtsearch, with SAS libref set to crtfmt and the Filename should refer to crtddsct.sas7bcat.
Example SASReferences File
Example SASReferences file