NIH | National Cancer Institute | NCI Wiki  

caDSR CDE Validator | CDE Validator User Guide 
Contents of this Page

General CDE Validator Questions

Q1. The system generates many warning messages, which makes it difficult to focus on the errors.

A1. The report produces Warnings for variances from the CDE question text, permissible value (PV), and permissible value meaning (PVM) so that the LPOs can determine how closely to the CDE they want to comply. The report is designed to be downloaded and reviewed using Microsoft Excel, where users can filter columns to display only the Errors.

In addition, the 'NCI Questions in ALS' report provides a summary of the Warnings and Errors for all required NRDS and NCI Standard CRF Template CDEs across all forms.

Questions about "Summary" Report

Q1. Protocol Name and ID seem to be reversed. What is used to populate these columns? 

A1: In the Rave ALS CRFDraft tab, Column C "ProjectName" is used for Protocol Name, and Column E "PrimaryFormOID" is used for Protocol Number. 

Q2. Why does the "# Forms In Protocol Checked" does not equal the "# Forms In Protocol"? 

A3: One or both of the following explanations may apply:

  • The system excludes forms with the text "cdeCart' in the form name. A possible resolution in the final release could be to exclude these forms in the count of the number of forms in the protocol. 
  • In the UI for Validator, the user can select a subset of forms from the list of the forms in the ALS document, so the number of forms checked might still not equal the number of forms in the protocol, but these counts would make more sense to the end user.

Q3. A "No CDE provided" message appears in sections that are not intended to have CDEs. These can be section headers or “dividers” on forms that do not include CDEs because they are not collecting data – only displaying messages.

A4: The owner of the form will know whether they intended to have a CDE associated with the question and can ignore the warning, but if there is a way to consistently and reliably detect the intent of the section, we could exclude reporting this warning in the final release. 

Technical Questions

Q1. How are the Fixed Unit and Datatype validations determined?

A1: Rave Fixed Unit is based on ALS.Fields.FixedUnit. It is compared with the caDSR ValueDomain.maxLength. If the Fixed Unit is {null} and the caDSR ValueDomain contains a maxLength value, then a WARNING is noted.

Rave does not have a "datatype" column, so the datatype to compare with caDSR ValueDomain.Datatype is derived from ALS.Fields.DataFormat. 

  • DataFormat value starting with $ equates to caDSR ALPHANUMERIC, CHARACTER, javal.lang.String, java.lang.Character, xsd.string.
  • DataFormat value starting with a numeral (no $) equates to caDSR Integer, NUMBER, java.lang.Integer, xsd:integer.
  • DataFormat value starting with dd equates to caDSR DATE, xsd:date; and to caDSR FormatName.
  • DataFormat value starting with HH, hh, equates to caDSR TIME, xsd:time.

Example: For a Rave DataFormat "$4", based on the rules above, the "$" would be determined to be equivalent to a CDE with a Datatype CHARACTER. 

Q2. What is the source for CDE Maximum Length comparison?

A2: The source of column AE in the form reports, CDE Maximum Length, is based on CDE's Value Domain (VD) Maximum length. The source of column AC in the report, Rave Length, is based on comparing ALS Fields.FixedUnit column P to CDE's VD Maximum Length. 

Q3. What is the source for comparing Rave UOM? 

A3. Column Z in the form reports is the Rave UOM (unit of measurement). If there is a UOM, it is in either Fields.FixedUnit column, or the UnitDictionary Sheet. The UnitDictionaryName is in the Fields.UnitDictionaryName column, and the system checks the appropriate UnitDictionaryEntries.CodedUnit column. This is not tested for conformance, but the CDE's VD UOM is displayed for information purposes. 

Q4. What are all the field mappings between Rave and caDSR that are used in the validator? 

A4. From the requirements document:

Checker Report Details

Source of ContentNotes
Rave Form OIDALS

Each row in this template represents one ASL Form. The questions are on the "Fields" tab where Forms.OID matches Fields.FormOID.

  • ALS Template Name: Forms
  • ALS Template Column Position: Column A
  • ALS Template Column Name: OID
caDSR Form IDALSNot used.
VersionALSNot used.
Total Number Of Questions CheckedValidatorEach question on an ALS form is represented by a row in the ALS "Fields" template, where Column A matches a Form OID on the Forms template.
Sequence #ValidatorThe sequence of the question in the Rave ALS file.
Rave Ordinal #ALS

Rave Ordinal is displayed in the report. It is the question number on the Rave User Interface, but may not be the same as the sequence of the question in the ALS file. Both Sequence number and RAVE Ordinal number are included in the report.

  • ALS Template Name: Forms
  • ALS Template Column Position: Column B
  • ALS Template Column Name: Ordinal
  • Example: 1
Rave Ordinal #ALS

Each row in Fields template represents one question. If enumerated, Fields.DataDictionaryName has one or more matching rows in the DataDictionaryEntries. Rows are matched by Fields.DataDictionaryName to DataDictionaryEntry.DataDictionaryName. This is not included in the report.

  • ALS Template Name: Fields
  • ALS Template Column Position: Column I
  • ALS Template Column Name: DataDictionaryName
CDE PID (Public ID)ALS

The system parses the field between "PID" and underscore V ('_V') for caDSR Public ID. In the example below, Public ID is 2003309.

Exceptions: If not valid, the system adds a "CDE not in caDSR Database" message. The system also checks the CDE Workflow Status. If CDE has been Retired, the system adds a "CDE has been Retired" message.

  • ALS Template Name: Fields
  • ALS Template Column Position: Column E
  • ALS Template Column Name: DraftFieldName
  • Example: Method of Payment PID2003309_V3_0
CDE VersionALS

The system parses the field for two positions after underscore V ('_V' for Version), changing the second character after the V to a dot ('.'). In the example below, Version is 3.0.

Exceptions: If one or more newer Versions of CDE exist, the system adds a "New version X,X,X exists" message.

  • ALS Template Name: Fields
  • ALS Template Column Position: Column E
  • ALS Template Column Name: DraftFieldName
  • Example: Method of Payment PID2003309_V3_0
NCI CategoryALS

The system checks whether each question is associated with an "NRDS" CDE. Valid results are as follows:

  • If the CDE is in NRDS:
    "NRDS"
  • If the CDE is in the NCI Standard CRFs CDE list:
    "NCI Standard CRFs"

On a separate tab, valid results are as follows:

  • The NCI CRF ID and version:
    {CRF ID/V}
  • Whether the CDE is in a Mandatory, Optional, or Conditional Module, such as the following:
    • "Optional Module {CRF ID/V}"
    • "Conditional Module: {CRF ID/V}"

Example: NRDS

Question Congruency StatusValidator

The system checks a table of special NCI CDEs. Valid results are as follows:

  • "ERROR"
  • "Match"
MessageValidator

Summary of all messages from the validation. For some examples:

  • Question Text does not match
  • Additional PVs in Valid Value list
  • No CDE PID
  • Newer Versions Exist
  • This CDE Version has been Retired
Rave Field LabelALS
  • ALS Template Name: Fields
  • ALS Template Column Position: Column O
  • ALS Template Column Name: PreText
  • Example: Method of Payment
Rave Field Label ResultValidator

The system compares Rave PreText to DocText. This comparison is case-sensitive.

  • If they match exactly, the system adds "MATCH" to the report.
  • If they do not match exactly, the system adds "ERROR" to the report.
CDE Permitted Question Text ChoicescaDSR database

The system lists, in one cell, all Reference Documents with type "Preferred Question Text" or "Alternate Question Text" for this CDE with a bar separator (|).

  • ALS Template Name: Data Element
  • ALS Template Column Position: ReferenceDocument[type = Preferred Question Text or "Alternate Question Text" 
  • ALS Template Column Name: DocText
  • Example: "Private Insurance|Medicare" 
Rave Control TypeALS
  • ALS Template Name: Fields
  • ALS Template Column Position: Column L
  • ALS Template Column Name: ControlType
  • Example: DropDownList
Control Type Checker ResultValidator The system compares Rave ControlType to caDSR Value Domain Type:
  • If caDSR VD is non-enumerated, and the Rave ControlType is "Text", it is valid.
  • If Value Domain is non-enumerated and ControlType is not "Text", then the system checks the Rave Datatype. If Rave Datatype matches caDSR Value Domain datatype, then result is "matches".
  • Otherwise, it is an error. (We will provide the team with a list of the mappings between the Rave Datatypes and caDSR datatypes. The names are not the same.) 
CDE Value Domain TypecaDSR database
  • ALS Template Name: Value Domain
  • ALS Template Column Position/Name: Enumerated/NonEnumerated
CDE Value Domain TypeALS

For each enumerated field, the coded values are in the rows on the DataDictionaryEntry tab where Column A matches the parsed name from DataDictionaryName. CodedData and UserDataString are pairs like caDSR PV and PVM. Rave CodedData is on the DataDictionaryEntries tab where DataDictionaryEntry.DataDictionaryName matches the Field OID Field.DataDictionaryName.

  • ALS Template Name: Fields
  • ALS Template Column Position: Column I
  • ALS Template Column Name: DataDictionaryName
  • Example: METHOD_OF_PAYMENT_C_PID2016946_V3_0
CDE Value Domain TypeALS

The DataDictionaryEntries template contains one row per question valid value.

ALS Template Name: DataDictionaryEntries

Rave Coded DataALS

The system compares to caDSR Value Domain PermissibleValue.value.

  • ALS Template Name: DataDictionaryEntries
  • ALS Template Column Position: Column B
  • ALS Template Column Name: CodedData
  • Example: 1
Coded Data ResultValidatorThe system compares each CodedData value to all the Value Domain's PermissibleValue.value. If it does not match one of the CDEs PV, the system adds "ERROR" to the report.
Allowable CDE ValuecaDSR database

The system lists, in one cell, all PVs for the CDE with a bar separator (|).

  • ALS Template Name: ValueDomain.PermissibleValue
  • ALS Template Column Position: value
  • Example: 1|2|3|4
Rave User StringALS

This comes from the same row as the value being checked for CodedData for this Field.OID.

  • ALS Template Name: DataDictionaryEntries{Column A matches Fields.DataDictionaryName}
  • ALS Template Column Position: Column D
  • ALS Template Column Name: UserDataString
  • Example: PRIVATE INSURANCE
PV ResultResult of comparing caDSR database compared to ALS content

The system compares to PV.ValueMeaning.longName and the matched PV.Value. The UserDataString must match one of the following values:

  • The PermissibleValues.ValueMeaning.LongName for the matched CodedData PV.
  • The matched PV Value (which means the UserDataString = CodedData).
  • The ValueMeaning Alternate Names.

If it does not match one of these values, the system adds "ERROR" to the report.

Allowable CDE Value Meaning Text Choices caDSR Value Meaning Alternate Names

For "ERROR" the system lists, in one cell, the PVM and all its Alternate Names with a bar separator (|).

Rave Field Data TypeALS

The Rave datatype is in column H. The system applies a mapping between caDSR datatype to Rave datatypes during the ObjectCart Import. We will provide a table for the Checker to use to compare Rave type with caDSR type to check validity.

  • ALS Template Name: Fields
  • ALS Template Column Position: Column H
  • ALS Template Column Name: DataFormat
  • Example: $200
Data Type Checker ResultValidatorIf types do not match, the system adds "ERROR" to the report.
CDE Data TypecaDSR database

The system compares to ALS.Fields.DataFormat.

  • DataFormat value starting with $ equates to caDSR ALPHANUMERIC, CHARACTER, javal.lang.String, java.lang.Character, xsd.string.
  • DataFormat value starting with a numeral (no $) equates to caDSR Integer, NUMBER, java.lang.Integer, xsd:integer.
  • DataFormat value starting with dd equates to caDSR DATE, xsd:date; and to caDSR FormatName.
  • DataFormat value starting with HH, hh, equates to caDSR TIME, xsd:time. 
  • ALS Template Name: ValueDomain
  • ALS Template Column Position: Datatype
Rave UOMALS

If there is a UOM, it is in either the Fields.FixedUnit column, or the UnitDictionary Sheet. The UnitDictionaryName is in the Fields.UnitDictionaryName column, and the system checks the appropriate UnitDictionaryEntries.CodedUnit column.

  • ALS Template Name: Fields or UnitDictionaryEntries
  • ALS Template Column Name: Fields.FixedUnit or Fields.UnitDictionaryName>UnitDictionaryEntriesSheet>UnitDictionaryName(that matches Fields.UnitDictionaryName).CodedUnit
UOM Checker ResultValidatorIf the Value Domain Unit of Measure is not null/blank, then the system checks whether there is a matching value in FixedUnit or CodedUnit as described in column D. If it does not match, then the system displays the Rave UOM and the Value Domain UOM and result "WARNING".
CDE UOMcaDSR database

The system displays the Value Domain UOM, if it does not match the Rave value.

  • ALS Template Name: Value Domain
  • ALS Template Column Position: UOM
Rave LengthALS

The system compares to Value Domain MaximumLengthNumber.

  • ALS Template Name: Fields 
  • ALS Template Column Position: Column P
  • ALS Template Column Name: FixedUnit
Length Checker ResultValidatorIf caDSR VD maxlengthNumber does not match FixedUnit number of characters, the system displays both Rave value and caDSR value and result "WARNING".
CDE Maximum LengthcaDSR database

The system compares to ALS.Fields.FixedUnit, and compares to Value Domain PermissibleValue.Value. If the caDSR VD MaximumLengthNumber is less than the longest PermissibleValue.Value, the system reports caDSR Max Length too short ("PVs MaxLength X, caDSR MaxLength X").

  • ALS Template Name: Value Domain
  • ALS Template Column Name: maximumLengthNumber
Rave Display FormatALS

If DataFormat does not equate to VD FormatName, report "WARNING"

  • ALS Template Name: Fields 
  • ALS Template Column Position: Column H
  • ALS Template Column Name: DataFormat
  • Example: dd MMM yyyy
Format Checker ResultValidatorThe system displays "Warning" if formats are not equivalent.
CDE Display FormatcaDSR database

The system compares to ALS.Fields.DataFormat.

  • ALS Template Name: Value Domain
  • ALS Template Column Position: Format Name

Return to top


  • No labels