diff --git a/resources/schema/rule-merged/Operations.json b/resources/schema/rule-merged/Operations.json index 7953e9047..562d87898 100644 --- a/resources/schema/rule-merged/Operations.json +++ b/resources/schema/rule-merged/Operations.json @@ -63,6 +63,16 @@ "required": ["id", "operator"], "type": "object" }, + { + "properties": { + "operator": { + "const": "related_domain_is_custom", + "markdownDescription": "\nChecks whether the related domain (for example, the parent domain of a SUPP or RELREC dataset) is not present in the set of standard domains for the provided standard and version. This is useful for determining whether relationships point to non-standard or custom domains.\n\nInput\n\nTarget Domain: SUPPEX\n\nProduct: sdtmig\n\nVersion: 3-4\n\n```yaml\nOperations:\n - operator: related_domain_is_custom\n id: $related_domain_is_custom\n```\n\nOutput\n\n```\ntrue\n```\n" + } + }, + "required": ["id", "operator"], + "type": "object" + }, { "properties": { "operator": { diff --git a/resources/schema/rule-merged/Operator.json b/resources/schema/rule-merged/Operator.json index 9b83dc0ac..34dcf20a3 100644 --- a/resources/schema/rule-merged/Operator.json +++ b/resources/schema/rule-merged/Operator.json @@ -21,26 +21,6 @@ "required": ["operator"], "type": "object" }, - { - "properties": { - "operator": { - "const": "conformant_value_data_type", - "markdownDescription": "\nValue Level Metadata Check against Define XML\n\nTrue if the types in the row match the VLM types specified in the define.xml\n" - } - }, - "required": ["operator"], - "type": "object" - }, - { - "properties": { - "operator": { - "const": "conformant_value_length", - "markdownDescription": "\nValue Level Metadata Check against Define XML\n\nTrue if the lengths in the row match the VLM lengths specified in the define.xml\n" - } - }, - "required": ["operator"], - "type": "object" - }, { "properties": { "operator": { @@ -171,16 +151,6 @@ "required": ["operator", "ordering", "value", "within"], "type": "object" }, - { - "properties": { - "operator": { - "const": "does_not_reference_correct_codelist", - "markdownDescription": "\nComplement of `references_correct_codelist`\n" - } - }, - "required": ["operator", "value"], - "type": "object" - }, { "properties": { "operator": { @@ -492,7 +462,7 @@ "properties": { "operator": { "const": "is_inconsistent_across_dataset", - "markdownDescription": "\nChecks if a variable maintains consistent values within groups defined by one or more grouping variables. Groups records by specified value(s) and validates that the target variable maintains the same value within each unique combination of grouping variables.\n\nSingle grouping variable - true if the values of BGSTRESU differ within USUBJID:\n\n```yaml\n- name: \"BGSTRESU\"\n operator: is_inconsistent_across_dataset\n value: \"USUBJID\"\n```\n\nMultiple grouping variables - true if the values of --STRESU differ within each combination of --TESTCD, --CAT, --SCAT, --SPEC, and --METHOD:\n\n```yaml\n- name: \"--STRESU\"\n operator: is_inconsistent_across_dataset\n value:\n - \"--TESTCD\"\n - \"--CAT\"\n - \"--SCAT\"\n - \"--SPEC\"\n - \"--METHOD\"\n```\n" + "markdownDescription": "\nChecks if a variable maintains consistent values within groups defined by one or more grouping variables. Groups records by specified value(s) and validates that the target variable maintains the same value within each unique combination of grouping variables. When inconsistency is detected within a group, the operator attempts to identify a majority value. If one value appears more frequently than all others, only the minority records (those not matching the majority value) are flagged. If no single majority exists \u2014 i.e., two or more values are tied for the highest frequency \u2014 all records in that group are flagged.\n\nSingle grouping variable - true if the values of BGSTRESU differ within USUBJID:\n\n```yaml\n- name: \"BGSTRESU\"\n operator: is_inconsistent_across_dataset\n value: \"USUBJID\"\n```\n\nMultiple grouping variables - true if the values of --STRESU differ within each combination of --TESTCD, --CAT, --SCAT, --SPEC, and --METHOD:\n\n```yaml\n- name: \"--STRESU\"\n operator: is_inconsistent_across_dataset\n value:\n - \"--TESTCD\"\n - \"--CAT\"\n - \"--SCAT\"\n - \"--SPEC\"\n - \"--METHOD\"\n```\n" } }, "required": ["operator", "value"], @@ -558,26 +528,6 @@ "required": ["operator", "value"], "type": "object" }, - { - "properties": { - "operator": { - "const": "non_conformant_value_data_type", - "markdownDescription": "\nComplement of `conformant_value_data_type`\n" - } - }, - "required": ["operator"], - "type": "object" - }, - { - "properties": { - "operator": { - "const": "non_conformant_value_length", - "markdownDescription": "\nComplement of `conformant_value_length`\n" - } - }, - "required": ["operator"], - "type": "object" - }, { "properties": { "operator": { @@ -756,16 +706,6 @@ "required": ["operator", "within"], "type": "object" }, - { - "properties": { - "operator": { - "const": "references_correct_codelist", - "markdownDescription": "\nTrue if the codelist named within `value` is a valid codelist for the variable named within `name` in the define.xml.\n" - } - }, - "required": ["operator", "value"], - "type": "object" - }, { "properties": { "operator": { diff --git a/resources/schema/rule-merged/Rule_Type.json b/resources/schema/rule-merged/Rule_Type.json index 5004b3796..ee910a5cb 100644 --- a/resources/schema/rule-merged/Rule_Type.json +++ b/resources/schema/rule-merged/Rule_Type.json @@ -2,55 +2,40 @@ "$id": "Rule_Type.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "anyOf": [ - { - "const": "Dataset Contents Check against Define XML and Library Metadata", - "title": "Content data at record level, define xml metadata at variable level, and library metadata at variable level", - "markdownDescription": "\n#### Columns\n\nColumns are the columns within the original dataset\n\n#### Rule Macro\n\nAttach define xml metadata at variable level and library metadata at variable level\n" - }, { "const": "Dataset Contents Check against Define XML", "title": "Content data at record level, dataset metadata at dataset level, and define xml metadata at dataset level", - "markdownDescription": "\n#### Columns\n\nColumns are the columns within the original dataset along with the following columns:\n\n- `dataset_label`\n- `dataset_location`\n- `dataset_name`\n- `dataset_size`\n- `dataset_domain`\n- `define_dataset_class`\n- `define_dataset_domain`\n- `define_dataset_has_no_data`\n- `define_dataset_is_non_standard`\n- `define_dataset_key_sequence`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_name`\n- `define_dataset_structure`\n- `define_dataset_variables`\n- `define_dataset_variable_order`\n" + "markdownDescription": "\n#### Columns\n\nColumns are the columns within the original dataset along with the following columns:\n\n- `dataset_label`\n- `dataset_location`\n- `dataset_name`\n- `dataset_size`\n- `dataset_domain`\n- `define_dataset_class`\n- `define_dataset_domain`\n- `define_dataset_has_no_data`\n- `define_dataset_is_non_standard`\n- `define_dataset_key_sequence`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_name`\n- `define_dataset_structure`\n- `define_dataset_variables`\n" }, { "const": "Dataset Metadata Check", "title": "Content metadata at dataset level", - "markdownDescription": "\n#### Columns\n\n- `dataset_label`\n- `dataset_location`\n- `dataset_name`\n- `dataset_size`\n\n#### Example\n\n```yaml\n- name: dataset_name\n operator: longer_than\n value: 6\n```\n" + "markdownDescription": "\n#### Columns\n\n- `dataset_label`\n- `dataset_location`\n- `dataset_name`\n- `dataset_size`\n\n#### Rule Macro\n\nPairs dataset metadata sourced from the submission contents.\n\n#### Example\n\n```yaml\n- name: dataset_name\n operator: longer_than\n value: 6\n```\n" }, { "const": "Dataset Metadata Check against Define XML", "title": "Content metadata at dataset level and define xml metadata at dataset level", - "markdownDescription": "\nReturns a dataset where each dataset is a row in the new dataset. The define xml dataset metadata is attached to each row.\n\n#### Columns\n\n- `dataset_size`\n- `dataset_location`\n- `dataset_name`\n- `dataset_label`\n- `dataset_domain`\n- `dataset_columns`\n- `define_dataset_class`\n- `define_dataset_domain`\n- `define_dataset_has_no_data`\n- `define_dataset_is_non_standard`\n- `define_dataset_key_sequence`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_name`\n- `define_dataset_structure`\n- `define_dataset_variables`\n- `define_dataset_variable_order`\n\n#### Rule Macro\n\nAllows comparing content metadata to define xml metadata of the same name.\n\n#### Example\n\n```yaml\nall:\n - name: dataset_name\n operator: not_equal_to\n value: define_dataset_name\n```\n\nOr\n\n```yaml\nany:\n - name: dataset_name\n operator: empty\n - name: define_dataset_name\n operator: empty\n```\n" - }, - { - "const": "Define Item Group Metadata Check", - "title": "Define xml metadata at dataset level", - "markdownDescription": "\n#### Columns\n\n- `define_dataset_class`\n- `define_dataset_domain`\n- `define_dataset_has_no_data`\n- `define_dataset_is_non_standard`\n- `define_dataset_key_sequence`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_name`\n- `define_dataset_structure`\n- `define_dataset_variables`\n- `define_dataset_variable_order`\n" - }, - { - "const": "Define Item Metadata Check", - "title": "Define xml metadata at variable level", - "markdownDescription": "\n#### Columns\n\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_role`\n- `define_variable_size`\n- `define_variable_ccode`\n- `define_variable_format`\n- `define_variable_allowed_terms`\n- `define_variable_origin_type`\n- `define_variable_is_collected`\n- `define_variable_has_no_data`\n- `define_variable_order_number`\n- `define_variable_has_codelist`\n- `define_variable_codelist_coded_values`\n- `define_variable_codelist_coded_values`\n- `define_variable_has_comment`\n\n#### Rule Macro\n\nAttach variable codelist and codelist terms\n" + "markdownDescription": "\nReturns a dataset where each dataset is a row in the new dataset. The define xml dataset metadata is attached to each row.\n\n#### Columns\n\n- `dataset_size`\n- `dataset_location`\n- `dataset_name`\n- `dataset_label`\n- `dataset_domain`\n- `dataset_columns`\n- `define_dataset_class`\n- `define_dataset_domain`\n- `define_dataset_has_no_data`\n- `define_dataset_is_non_standard`\n- `define_dataset_key_sequence`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_name`\n- `define_dataset_structure`\n- `define_dataset_variables`\n- `define_dataset_variable_order`\n\n#### Rule Macro\n\nAllows comparing dataset metadata against define xml dataset metadata.\n\n#### Example\n\n```yaml\nall:\n - name: dataset_name\n operator: not_equal_to\n value: define_dataset_name\n```\n\nOr\n\n```yaml\nany:\n - name: dataset_name\n operator: empty\n - name: define_dataset_name\n operator: empty\n```\n" }, { "const": "Define Item Metadata Check against Library Metadata", "title": "Define xml metadata at variable level and corresponding library variable metadata", - "markdownDescription": "\n#### Columns\n\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_role`\n- `define_variable_size`\n- `define_variable_ccode`\n- `define_variable_format`\n- `define_variable_allowed_terms`\n- `define_variable_origin_type`\n- `define_variable_is_collected`\n- `define_variable_has_no_data`\n- `define_variable_order_number`\n- `define_variable_has_codelist`\n- `define_variable_codelist_coded_values`\n- `define_variable_codelist_coded_codes`\n- `define_variable_mandatory`\n- `define_variable_has_comment`\n- `library_variable_name`\n- `library_variable_order_number`\n- `library_variable_label`\n- `library_variable_data_type`\n- `library_variable_role`\n- `library_variable_core`\n- `library_variable_ccode`\n\n#### Rule Macro\n\nAttach variable codelist and codelist terms\n" + "markdownDescription": "\n#### Columns\n\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_role`\n- `define_variable_size`\n- `define_variable_ccode`\n- `define_variable_format`\n- `define_variable_allowed_terms`\n- `define_variable_origin_type`\n- `define_variable_is_collected`\n- `define_variable_has_no_data`\n- `define_variable_order_number`\n- `define_variable_has_codelist`\n- `define_variable_codelist_coded_values`\n- `define_variable_codelist_coded_codes`\n- `define_variable_mandatory`\n- `define_variable_has_comment`\n- `library_variable_name`\n- `library_variable_order_number`\n- `library_variable_label`\n- `library_variable_data_type`\n- `library_variable_role`\n- `library_variable_core`\n- `library_variable_ccode`\n\n#### Rule Macro\n\nChecks variable-level metadata, codelists, and codelist terms from Define-XML against the corresponding standard variable definitions from the CDISC Library.\n" }, { "const": "Domain Presence Check", "title": "Content domain presence at study level", - "markdownDescription": "\n#### Columns\n\nSingle row contains a column for each domain and the value of that column is the domain's file name\n\n| AE | EC |\n| ------ | ------ |\n| ae.xpt | ec.xpt |\n\n#### Example\n\n```yaml\nall:\n - name: PP\n operator: exists\n - name: PC\n operator: not_exists\n```\n" + "markdownDescription": "\n#### Columns\n\nSingle row contains a column for each domain and the value of that column is the domain's file name\n\n| AE | EC |\n| ------ | ------ |\n| ae.xpt | ec.xpt |\n\n#### Rule Macro\n\nChecks which dataset files are physically present in the submission contents. Each column represents one domain that exists in the submission, holding the filename as its value.\n\n#### Example\n\n```yaml\nall:\n - name: PP\n operator: exists\n - name: PC\n operator: not_exists\n```\n" }, { "const": "Domain Presence Check against Define XML", "title": "Content domain presence at study level with define xml metadata at dataset level", - "markdownDescription": "\n#### Columns\n\nOne row per dataset defined in Define-XML:\n\n- `domain` - The domain if the dataset exists, null otherwise\n- `filename` - The file name if dataset exists, null otherwise\n- `define_dataset_name`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_domain`\n- `define_dataset_class`\n- `define_dataset_structure`\n- `define_dataset_is_non_standard`\n- `define_dataset_has_no_data`\n- `define_dataset_key_sequence`\n- `define_dataset_variables`\n\n#### Example\n\nCheck if SE domain is defined in Define-XML without HasNoData=\"Yes\" but the dataset file doesn't exist:\n\n```yaml\nall:\n - name: define_dataset_name\n operator: equal_to\n value: \"SE\"\n - name: define_dataset_has_no_data\n operator: equal_to\n value: False\n - name: filename\n operator: not_exists\n```\n" + "markdownDescription": "\n#### Columns\n\nOne row per dataset defined in Define-XML:\n\n- `domain` - The domain if the dataset exists, null otherwise\n- `filename` - The file name if dataset exists, null otherwise\n- `define_dataset_name`\n- `define_dataset_label`\n- `define_dataset_location`\n- `define_dataset_domain`\n- `define_dataset_class`\n- `define_dataset_structure`\n- `define_dataset_is_non_standard`\n- `define_dataset_has_no_data`\n- `define_dataset_key_sequence`\n- `define_dataset_variables`\n\n#### Rule Macro\n\nReconciles dataset file presence in the submission against Define-XML dataset declarations. Each row represents one dataset defined in Define-XML, with the corresponding submission filename joined if the file exists.\n\n#### Example\n\nCheck if SE domain is defined in Define-XML without HasNoData=\"Yes\" but the dataset file doesn't exist:\n\n```yaml\nall:\n - name: define_dataset_name\n operator: equal_to\n value: \"SE\"\n - name: define_dataset_has_no_data\n operator: equal_to\n value: False\n - name: filename\n operator: not_exists\n```\n" }, { "const": "JSON Schema Check", "title": "Apply JSON schema validation to a JSON file", - "markdownDescription": "\n#### Columns:\n\n- `json_path`\n- `error_attribute`\n- `error_value`\n- `validator`\n- `validator_value`\n- `message`\n- `dataset`\n- `id`\n- `_path`\n" + "markdownDescription": "\n#### Columns\n\n- `json_path`\n- `error_attribute`\n- `error_value`\n- `validator`\n- `validator_value`\n- `message`\n- `dataset`\n- `id`\n- `_path`\n" }, { "const": "JSONata", @@ -60,37 +45,32 @@ { "const": "Record Data", "title": "Content data at record level. Most common Rule Type", - "markdownDescription": "\n#### Columns\n\nColumns are the columns within the original dataset\n\n#### Example\n\n```yaml\nall:\n - name: --SCAT\n operator: non_empty\n - name: --SCAT\n operator: equal_to\n value: --CAT\n```\n" + "markdownDescription": "\n#### Columns\n\nColumns are the columns within the original dataset\n\n#### Rule Macro\n\nChecks record-level data values sourced directly from submission dataset contents.\n\n#### Example\n\n```yaml\nall:\n - name: --SCAT\n operator: non_empty\n - name: --SCAT\n operator: equal_to\n value: --CAT\n```\n" }, { "const": "Value Check against Define XML Variable", "title": "Content data at value level and define xml metadata at variable level", - "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_`...\n\n#### Example\n\n```yaml\nall:\n - name: define_variable_ccode\n operator: empty\n - name: variable_value\n operator: non_empty\n - name: define_variable_has_codelist\n operator: equal_to\n value: true\n - name: variable_value\n operator: is_not_contained_by\n value: define_variable_codelist_coded_values`\n```\n" + "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_`...\n\n#### Rule Macro\n\nChecks individual cell values from submission dataset contents pivoted to a long format, with the matching Define-XML variable-level metadata joined to each row.\n\n#### Example\n\n```yaml\nall:\n - name: define_variable_ccode\n operator: empty\n - name: variable_value\n operator: non_empty\n - name: define_variable_has_codelist\n operator: equal_to\n value: true\n - name: variable_value\n operator: is_not_contained_by\n value: define_variable_codelist_coded_values\n```\n" }, { "const": "Value Check against Define XML VLM", "title": "Content data at value level and define xml metadata at value level", - "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `define_vlm_name`\n- `define_vlm_label`\n- `define_vlm_data_type`\n- `define_vlm_is_collected`\n- `define_vlm_role`\n- `define_vlm_size`\n- `define_vlm_ccode`\n- `define_vlm_format`\n- `define_vlm_allowed_terms`\n- `define_vlm_origin_type`\n- `define_vlm_has_no_data`\n- `define_vlm_order_number`\n- `define_vlm_length`\n- `define_vlm_has_codelist`\n- `define_vlm_codelist_coded_values`\n- `define_vlm_mandatory`\n- `define_variable_name`\n- `type_check`\n- `length_check`\n- `variable_value_length`\n\n#### Example\n\n```yaml\nall:\n - name: define_vlm_ccode\n operator: empty\n - name: variable_value\n operator: non_empty\n - name: define_vlm_has_codelist\n operator: equal_to\n value: true\n - name: variable_value\n operator: is_not_contained_by\n value: define_vlm_codelist_coded_values\n```\n\n```yaml\nall:\n - name: variable_value\n operator: empty\n - name: define_vlm_mandatory\n operator: equal_to\n value: Yes\n```\n" - }, - { - "const": "Value Level Metadata Check against Define XML", - "title": "Content data at record level and define xml metadata at value level", - "markdownDescription": "\n#### Columns\n\nColumns are the columns within the original dataset\n\n#### Rule Macro\n\nAttach define xml metadata at value level\n" + "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `define_vlm_name`\n- `define_vlm_label`\n- `define_vlm_data_type`\n- `define_vlm_is_collected`\n- `define_vlm_role`\n- `define_vlm_size`\n- `define_vlm_ccode`\n- `define_vlm_format`\n- `define_vlm_allowed_terms`\n- `define_vlm_origin_type`\n- `define_vlm_has_no_data`\n- `define_vlm_order_number`\n- `define_vlm_length`\n- `define_vlm_has_codelist`\n- `define_vlm_codelist_coded_values`\n- `define_vlm_mandatory`\n- `define_variable_name`\n- `type_check`\n- `length_check`\n- `variable_value_length`\n\n#### Rule Macro\n\nChecks individual cell values from submission dataset contents pivoted to a long format, with the matching Define-XML Value Level Metadata (VLM) joined to each row. Only rows where VLM exists for that variable are produced \u2014 records without matching VLM are excluded.\n\n#### Example\n\n```yaml\nall:\n - name: define_vlm_ccode\n operator: empty\n - name: variable_value\n operator: non_empty\n - name: define_vlm_has_codelist\n operator: equal_to\n value: true\n - name: variable_value\n operator: is_not_contained_by\n value: define_vlm_codelist_coded_values\n```\n\n```yaml\nall:\n - name: variable_value\n operator: empty\n - name: define_vlm_mandatory\n operator: equal_to\n value: Yes\n```\n" }, { "const": "Variable Metadata Check", "title": "Content metadata at variable level", - "markdownDescription": "\n#### Columns\n\n- `variable_name`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `variable_format`\n\n#### Example\n\n```yaml\n- name: variable_label\n operator: longer_than\n value: 40\n```\n" + "markdownDescription": "\n#### Columns\n\n- `variable_name`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `variable_format`\n\n#### Rule Macro\n\nChecks variable-level metadata sourced from the submission dataset contents.\n\n#### Example\n\n```yaml\n- name: variable_label\n operator: longer_than\n value: 40\n```\n" }, { "const": "Variable Metadata Check against Define XML", "title": "Content metadata at variable level and define xml metadata at variable level", - "markdownDescription": "\n#### Columns\n\n- `variable_name`\n- `variable_order_number`\n- `variable_label`\n- `variable_`...\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_is_collected`\n- `define_variable_role`\n- `define_variable_size`\n- `define_variable_ccode`\n- `define_variable_format`\n- `define_variable_allowed_terms`\n- `define_variable_origin_type`\n- `define_variable_has_no_data`\n- `define_variable_order_number`\n- `define_variable_length`\n- `define_variable_has_codelist`\n- `define_variable_codelist_coded_values`\n- `define_variable_codelist_coded_codes`\n- `define_variable_mandatory`\n- `define_variable_has_comment`\n\n#### Rule Macro\n\nAttach define xml metadata at variable level\n\n#### Example\n\n```yaml\n- name: variable_name\n operator: not_equal_to\n value: define_variable_name\n```\n" + "markdownDescription": "\n#### Columns\n\n- `variable_name`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `define_variable_name`\n- `define_variable_label`\n- `define_variable_data_type`\n- `define_variable_is_collected`\n- `define_variable_role`\n- `define_variable_size`\n- `define_variable_ccode`\n- `define_variable_format`\n- `define_variable_allowed_terms`\n- `define_variable_origin_type`\n- `define_variable_has_no_data`\n- `define_variable_order_number`\n- `define_variable_length`\n- `define_variable_has_codelist`\n- `define_variable_codelist_coded_values`\n- `define_variable_codelist_coded_codes`\n- `define_variable_mandatory`\n- `define_variable_has_comment`\n\n#### Rule Macro\n\nCombines variable-level metadata from submission dataset contents against the matching variable definitions in Define-XML.\n\n#### Example\n\n```yaml\n- name: variable_name\n operator: not_equal_to\n value: define_variable_name\n```\n" }, { "const": "Variable Metadata Check against Library Metadata", "title": "Content metadata at the variable level and the corresponding library metadata", - "markdownDescription": "\n#### Columns\n\n- `variable_name`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `variable_format`\n- `variable_has_empty_values`\n- `variable_is_empty`\n- `library_variable_name`\n- `library_variable_role`\n- `library_variable_label`\n- `library_variable_core`\n- `library_variable_order_number`\n- `library_variable_data_type`\n- `library_variable_ccode`\n" + "markdownDescription": "\n#### Columns\n\n- `variable_name`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `variable_format`\n- `variable_has_empty_values`\n- `library_variable_name`\n- `library_variable_role`\n- `library_variable_label`\n- `library_variable_core`\n- `library_variable_order_number`\n- `library_variable_data_type`\n- `library_variable_ccode`\n\n#### Rule Macro\n\nCombines variable-level metadata from submission dataset contents against the corresponding CDISC Library standard variable metadata.\n" }, { "const": "Variable Metadata Check against Define XML and Library Metadata", @@ -99,12 +79,12 @@ { "const": "Value Check with Dataset Metadata", "title": "Content data at value level and dataset metadata at dataset level", - "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `dataset_label`\n- `dataset_location`\n- `dataset_name`\n- `dataset_size`\n\n#### Example\n\n```yaml\nall:\n - name: variable_name\n operator: starts_with\n value: \"DM\"\n - name: dataset_name\n operator: not_equal_to\n value: \"DM\"\n```\n" + "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `dataset_label`\n- `dataset_location`\n- `dataset_name`\n- `dataset_size`\n\n#### Rule Macro\n\nChecks individual cell values from submission dataset contents pivoted to a long format, with dataset-level metadata attached to each row.\n\n#### Example\n\n```yaml\nall:\n - name: variable_name\n operator: starts_with\n value: \"DM\"\n - name: dataset_name\n operator: not_equal_to\n value: \"DM\"\n```\n" }, { "const": "Value Check with Variable Metadata", "title": "Content data at value level and variable metadata at variable level", - "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `variable_format`\n- `variable_value_length`\n\n#### Example\n\n```yaml\nall:\n - name: variable_data_type\n operator: equal_to\n value: char\n - name: variable_value\n operator: longer_than\n value: 200\n```\n" + "markdownDescription": "\n#### Columns\n\n- `row_number`\n- `variable_name`\n- `variable_value`\n- `variable_order_number`\n- `variable_label`\n- `variable_size`\n- `variable_data_type`\n- `variable_format`\n- `variable_value_length`\n\n#### Rule Macro\n\nChecks individual cell values from submission dataset contents pivoted to a long format, with variable-level metadata from the submission dataset attached to each row.\n\n#### Example\n\n```yaml\nall:\n - name: variable_data_type\n operator: equal_to\n value: char\n - name: variable_value\n operator: longer_than\n value: 200\n```\n" } ], "markdownDescription": "Determines how the primary dataset should be built before the rule is applied"