The SAS Clinical Standards
Toolkit 1.4 supports this CDISC ODM 1.3.0 functionality:
-
reading and representing in SAS
a complete odm.xml file (specific limitations are noted below)
-
building an odm.xml file from a
SAS representation of the ODM standard
-
schema-level validating of an odm.xml
file
-
validating the structure and content
of the SAS representation of an odm.xml file
-
identifying unsupported (unrecognized)
ODM elements and attributes by using a sample tool
The SAS Clinical Standards
Toolkit 1.4 does not support this CDISC ODM 1.3.0 functionality:
-
reading or writing the DigitalSignatures
section of the ODM
-
vendor or customer extensions of
the ODM
-
any functionality added with ODM
1.3.1
-
processing is limited to a single
ODM file (for example, the use of PriorFileOID to reference another
file is ignored)
-
Full file metadata is expected
in each file.
-
Effective support only for ODM
FileType=Snapshot. The SAS Clinical Standards Toolkit 1.4 makes no
attempt to process multiple transactions per data point; multiple
transactions are saved in the SAS ODM representation for subsequent
processing
The domain and column
metadata that constitute the SAS representation of CDISC ODM 1.3.0
are derived from the global standards library in these formats:
-
as empty data sets (using the utility
macro cst_createTablesForDataStandard)
-
-
Sample Reference_Tables Record (CDISC ODM 1.3.0)
|
|
|
|
|
|
|
Item group-level data
information
|
|
FK_FORMDATA FK_REFERENCEDATA
ITEMGROUPOID ITEMGROUPREPEATKEY
|
|
|
|
|
|
|
|
|
|
|
|
|
Sample Reference_Columns Record (CDISC ODM 1.3.0)
|
|
|
|
|
|
|
|
|
Uniquely identifies
a subject in a study
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
As a general rule, the
SAS representation of the CDISC ODM standard is patterned to match
the XML element (data set) and attribute (column) structure of odm.xml.
For example, consider this XML extract:
<ClinicalData StudyOID="P2006-101" MetadataVersionOID="101.01">
<SubjectData SubjectKey="1000" TransactionType="Insert">
<StudyEventData StudyEventOID="101.Screen">
<FormData FormOID="101.DEMOG">
<ItemGroupData ItemGroupOID="101.DM">
<ItemDataString ItemOID="101.USUBJID">101-01-01</ItemDataString>
<ItemDataString ItemOID="101.SEX">F</ItemDataString>
</ItemGroupData>
</FormData>
</StudyEventData>
</SubjectData>
</ClinicalData>
This table describes
how the XML element and attribute information maps to the SAS representation.
Sample Mapping of odm.xml File to SAS Representation
|
|
|
|
<ClinicalData StudyOID="P2006-101"
MetadataVersionOID="101.01">
|
|
|
|
<SubjectData SubjectKey="1000"
TransactionType="Insert">
|
|
|
|
<StudyEventData StudyEventOID="101.Screen">
|
|
|
|
<FormData FormOID="101.DEMOG">
|
|
|
|
<ItemGroupData ItemGroupOID="101.DM">
|
|
|
|
<ItemDataString ItemOID="101.USUBJID">101-01-01</ItemDataString>
|
|
|
|
<ItemDataString ItemOID="101.SEX">F</ItemDataString>
|
|
|
|
This table lists the
complete set of 66 tables that form the SAS Clinical Standards Toolkit
1.4 SAS representation of the CDISC ODM 1.3.0 standard.
Data Sets in the SAS Representation of the CDISC ODM 1.3.0
Standard
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLItemDecodeTranslatedText
|
|
|
|
|
MethodDefFormalExpression
|
ConditionDefFormalExpression
|
|
|
|
ConditionDefTranslatedText
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StudyEventDefTranslatedText
|
|
|
|
|
|
|
|
|
ItemGroupDefTranslatedText
|
|
|
|
|
|
ItemQuestionTranslatedText
|
|
|
|
The highly structured
nature of CDISC ODM data requires that any mapping to a relational
format include a large number of data sets, with foreign key relationships
to help preserve the intended non-relational object structure. In
the SAS Clinical Standards Toolkit, foreign key relationships are
enforced when validating the CDISC ODM data sets.
Field lengths in the
CDISC ODM data sets are consistent by core data type. CDISC has not
specified any limit to the length of most character fields. Arbitrary
lengths have been chosen by data type. These lengths are listed in
this table. In the table, standard data types are distilled into core
data types. To be safe, larger lengths have been chosen to ensure
that no data loss occurs in the SAS Clinical Standards Toolkit pre-installed
data sets. Production tables might be compressed using SAS mechanisms
to preserve disk space.
CDISC ODM Default Lengths by Data Type
|
|
|
|
|
A unique object identifier
or a reference
|
|
|
A character field that
can accommodate a large number of characters
|
|
|
|
|
|
An item of collected
or reference data
|
|
|
An absolute or relative
file system path or URL
|
The table metadata for
the 66 data sets and the column metadata for the 315 columns in those
data sets that comprise the SAS representation of the CDISC ODM 1.3.0
standard are in this folder:
<global standards library directory>/standards/cdisc-odm-1.3.0-1.4/metadata
.
Table metadata is in
reference_tables.sas7bdat, and column metadata is in reference_columns.sas7bdat.
ODM 1.3.0 SAS Data Sets shows the CDISC
ODM 1.3.0 data model that is the foundation for implementation in
the SAS Clinical Standards Toolkit. No data set
has more than one variable that acts as the key or index for that
data set. The key variable name is appended with two asterisks (**).
Some data sets do not have a key. A foreign key variable name is appended
with two carat characters (^^). A foreign key variable name references
the name of the data set for which it is a foreign key. The data set
name is referenced within brackets. A required field is marked with
an X between brackets, [X]. A required field is a field for which
a non-nil and non-whitespace-only value must be provided for any observation
in that data set.
Only the ODM data set,
which contains valid values for the FileOID, CreationDateTime, and
FileType variables, is needed to create a minimal, but valid, CDISC
ODM-compliant XML document. This is based on the CDISC ODM standard,
which is flexible. All table and column names are case sensitive.
They must be specified exactly as shown.
In the SAS implementation
of the relational data model, the keys are extended to define a unique
record in every SAS data set. For example, a unique record in the
EnumeratedItems data set is defined by the variables FK_CODELISTS
and CODEDVALUE. These SAS data set keys are in the table metadata
in the SAS Reference_Tables data set.
Starting in ODM 1.3.0,
there are two forms of the ItemData element, which is the element
used by ODM for transmitting clinical data item values. These two
forms are untyped and typed. Here is an example of a typed ItemData
element:
<ItemDataFloat ItemOID="ItemDef.OID.VS.VSSTRESN"
TransactionType="Insert">76</ItemDataFloat>
Here is an example of
an untyped ItemData element:
<ItemData ItemOID="ID.AETERM"
Value="HEADACHE" />
Both of these data values
are stored in the Value variable in the ItemData SAS data set. In
the case of typed data, the ItemDataType variable in the ItemData
SAS data set has the data type (for example, Float). In the case of
untyped data, the ItemDataType variable in the ItemData SAS data set
is null.
Typed and untyped data
transmission should not be mixed within a single ODM file. However,
in the example provided by the SAS Clinical Standards Toolkit, both
types are part of the same example for demonstration purposes.
With the production
release of the SAS Clinical Standards Toolkit 1.4, the CDISC ODM standard
supports reading and representing in SAS a complete odm.xml file,
building an odm.xml file, and validating the structure and content
of the SAS representation of an odm.xml file. In addition, it validates
the structural integrity of the odm.xml file.
To support all of this
functionality, supplemental files include the following global standards
library files:
-
A SAS format catalog (crtddsct.sas7bcat)
in the
formats
folder provides valid
values for selected columns in the 66 tables of the SAS representation.
-
The Messages data set in the
messages
folder provides error messaging for all
Validation Master checks.
-
The Validation Master data set
in the
validation/control
folder contains
the superset of checks validating the structure and content of the
66 tables.
-
SAS code in the
macros
folder provides CDISC ODM-specific code that
augments the code provided in the primary SAS Clinical Standards Toolkit
autocall library (
!sasroot/cstframework/sasmacro
).
It is this set of files,
in whole or in part, that defines the CDISC ODM reference standard.