From 97d8d037bfdd427abbf6806dbe0162ddd41f8374 Mon Sep 17 00:00:00 2001 From: eljanssens Date: Thu, 14 May 2026 19:39:35 +0200 Subject: [PATCH 1/2] Created TIG0003 with test data and performed local testing --- Unpublished/NEW-RULE/negative/01/data/.env | 4 ++ .../NEW-RULE/negative/01/data/_datasets.csv | 2 + .../NEW-RULE/negative/01/data/_variables.csv | 11 ++++ Unpublished/NEW-RULE/negative/01/data/to.csv | 12 ++++ .../NEW-RULE/negative/01/results/results.csv | 1 + .../NEW-RULE/negative/01/results/results.json | 1 + Unpublished/NEW-RULE/positive/01/data/.env | 4 ++ .../NEW-RULE/positive/01/data/_datasets.csv | 2 + .../NEW-RULE/positive/01/data/_variables.csv | 11 ++++ Unpublished/NEW-RULE/positive/01/data/to.csv | 12 ++++ .../NEW-RULE/positive/01/results/results.csv | 1 + .../NEW-RULE/positive/01/results/results.json | 1 + Unpublished/NEW-RULE/rule.yml | 57 +++++++++++++++++++ 13 files changed, 119 insertions(+) create mode 100644 Unpublished/NEW-RULE/negative/01/data/.env create mode 100644 Unpublished/NEW-RULE/negative/01/data/_datasets.csv create mode 100644 Unpublished/NEW-RULE/negative/01/data/_variables.csv create mode 100644 Unpublished/NEW-RULE/negative/01/data/to.csv create mode 100644 Unpublished/NEW-RULE/negative/01/results/results.csv create mode 100644 Unpublished/NEW-RULE/negative/01/results/results.json create mode 100644 Unpublished/NEW-RULE/positive/01/data/.env create mode 100644 Unpublished/NEW-RULE/positive/01/data/_datasets.csv create mode 100644 Unpublished/NEW-RULE/positive/01/data/_variables.csv create mode 100644 Unpublished/NEW-RULE/positive/01/data/to.csv create mode 100644 Unpublished/NEW-RULE/positive/01/results/results.csv create mode 100644 Unpublished/NEW-RULE/positive/01/results/results.json create mode 100644 Unpublished/NEW-RULE/rule.yml diff --git a/Unpublished/NEW-RULE/negative/01/data/.env b/Unpublished/NEW-RULE/negative/01/data/.env new file mode 100644 index 000000000..0ce633d09 --- /dev/null +++ b/Unpublished/NEW-RULE/negative/01/data/.env @@ -0,0 +1,4 @@ +PRODUCT=TIG +VERSION=1-0 +SUBSTANDARD=SDTM +USE_CASE=PROD diff --git a/Unpublished/NEW-RULE/negative/01/data/_datasets.csv b/Unpublished/NEW-RULE/negative/01/data/_datasets.csv new file mode 100644 index 000000000..f3723214c --- /dev/null +++ b/Unpublished/NEW-RULE/negative/01/data/_datasets.csv @@ -0,0 +1,2 @@ +Filename,Label +to,Tobacco Product Identifiers and Descriptors \ No newline at end of file diff --git a/Unpublished/NEW-RULE/negative/01/data/_variables.csv b/Unpublished/NEW-RULE/negative/01/data/_variables.csv new file mode 100644 index 000000000..a342176a3 --- /dev/null +++ b/Unpublished/NEW-RULE/negative/01/data/_variables.csv @@ -0,0 +1,11 @@ +dataset,variable,label,type,length +to,STUDYID,Study Identifier,Char,200 +to,DOMAIN,Domain Abbreviation,Char,200 +to,SPTOBID,Applicant-Defined Tobacco Product ID,Char,40 +to,TOSEQ,Sequence Number,Num,10 +to,TOPARMCD,Tobacco Product ID Element Short Name,Char,40 +to,TOPARM,Tobacco Product ID Element Name,Char,8 +to,TOCAT,Category of Tobacco Product ID Element,Char,40 +to,TOSCAT,Subcategory of Tobacco Prod ID Element,Char,50 +to,TOVAL,Tobacco Product ID Element Value,Char,50 +to,TOVALU,Tobacco Product ID Element Value Unit,Char,50 \ No newline at end of file diff --git a/Unpublished/NEW-RULE/negative/01/data/to.csv b/Unpublished/NEW-RULE/negative/01/data/to.csv new file mode 100644 index 000000000..5342cc508 --- /dev/null +++ b/Unpublished/NEW-RULE/negative/01/data/to.csv @@ -0,0 +1,12 @@ +STUDYID,DOMAIN,SPTOBID,TOSEQ,TOPARMCD,TOPARM,TOCAT,TOSCAT,TOVAL,TOVALU +TOB07,TO,CIG01a,1,TBPRSCAT,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,Cigarettes, +TOB07,TO,CIG01a,2,TBPRSCAT,Tobacco Product Subcategory,NEW PRODUCT,PRODUCT IDENTIFIER,Filtered, +TOB07,TO,CIG01a,3,MANUF,Manufacturer,NEW PRODUCT,PRODUCT IDENTIFIER,Joes Cigs USA, +TOB07,TO,CIG01a,4,MANUF,Manufacturer,NEW PRODUCT,PRODUCT IDENTIFIER,Joes Cigs USA, +TOB07,TO,CIG01a,5,TRADENAM,Trade Name,NEW PRODUCT,PRODUCT IDENTIFIER,Treetop Menthol King Size, +TOB07,TO,VAPE-Z27,1,TBPRDCATS,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,Electronic Nicotine Delivery Systems (ENDS) (Vapes), +TOB07,TO,VAPE-Z27,2,MANUF,Tobacco Product Subcategory,NEW PRODUCT,PRODUCT IDENTIFIER,Closed E-Cigarette, +TOB07,TO,VAPE-Z27,3,MANUF,Manufacturer,NEW PRODUCT,PRODUCT IDENTIFIER,Joes Vapes USA, +TOB07,TO,VAPE-Z01,4,TRADENAM,Trade Name,NEW PRODUCT,PRODUCT IDENTIFIER,Everyday Rich Tobacco, +TOB07,TO,VAPE-Z01,5,TBPDCAT,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,ENDS (Vapes), +TOB07,TO,VAPE-Z01,6,PRDQUAN,Product Quantity,NEW PRODUCT,PRODUCT DESCRIPTOR,E-CIGARET, \ No newline at end of file diff --git a/Unpublished/NEW-RULE/negative/01/results/results.csv b/Unpublished/NEW-RULE/negative/01/results/results.csv new file mode 100644 index 000000000..a13018c5f --- /dev/null +++ b/Unpublished/NEW-RULE/negative/01/results/results.csv @@ -0,0 +1 @@ +Dataset,Record,Variable,Value diff --git a/Unpublished/NEW-RULE/negative/01/results/results.json b/Unpublished/NEW-RULE/negative/01/results/results.json new file mode 100644 index 000000000..9d1614f2c --- /dev/null +++ b/Unpublished/NEW-RULE/negative/01/results/results.json @@ -0,0 +1 @@ +{"Conformance_Details": {"Report_Generation": "2026-05-14T19:24:07", "Total_Runtime": "0.17 seconds", "CORE_Engine_Version": "0.16.0", "Issue_Limit_Per_Rule": "None", "Issue_Limit_Per_Dataset": "None", "Issue_Limit_Per_Sheet": null, "Standard": "TIG", "Sub_Standard": "sdtm", "Version": "V1.0", "TIG_Use_Case": "PROD", "CT_Version": "", "Define_XML_Version": null}, "Dataset_Details": [{"filename": "TO", "label": "Tobacco Product Identifiers and Descriptors", "path": "C:\\Users\\els_janssens\\CORE\\Rule_Authoring_CDISC_training\\cdisc-open-rules-training\\Unpublished\\NEW-RULE\\negative\\01\\data", "modification_date": "2026-05-14T19:16:37.555353", "size_kb": 1.143, "length": 11}], "Issue_Summary": [], "Issue_Details": [], "Rules_Report": []} \ No newline at end of file diff --git a/Unpublished/NEW-RULE/positive/01/data/.env b/Unpublished/NEW-RULE/positive/01/data/.env new file mode 100644 index 000000000..0ce633d09 --- /dev/null +++ b/Unpublished/NEW-RULE/positive/01/data/.env @@ -0,0 +1,4 @@ +PRODUCT=TIG +VERSION=1-0 +SUBSTANDARD=SDTM +USE_CASE=PROD diff --git a/Unpublished/NEW-RULE/positive/01/data/_datasets.csv b/Unpublished/NEW-RULE/positive/01/data/_datasets.csv new file mode 100644 index 000000000..3e3ab04f5 --- /dev/null +++ b/Unpublished/NEW-RULE/positive/01/data/_datasets.csv @@ -0,0 +1,2 @@ +Filename,Label +to,Tobacco Product Identifiers and Descriptors diff --git a/Unpublished/NEW-RULE/positive/01/data/_variables.csv b/Unpublished/NEW-RULE/positive/01/data/_variables.csv new file mode 100644 index 000000000..ee826edcf --- /dev/null +++ b/Unpublished/NEW-RULE/positive/01/data/_variables.csv @@ -0,0 +1,11 @@ +dataset,variable,label,type,length +to,STUDYID,Study Identifier,Char,200 +to,DOMAIN,Domain Abbreviation,Char,200 +to,SPTOBID,Applicant-Defined Tobacco Product ID,Char,40 +to,TOSEQ,Sequence Number,Num,10 +to,TOPARMCD,Tobacco Product ID Element Short Name,Char,40 +to,TOPARM,Tobacco Product ID Element Name,Char,8 +to,TOCAT,Category of Tobacco Product ID Element,Char,40 +to,TOSCAT,Subcategory of Tobacco Prod ID Element,Char,50 +to,TOVAL,Tobacco Product ID Element Value,Char,50 +to,TOVALU,Tobacco Product ID Element Value Unit,Char,50 diff --git a/Unpublished/NEW-RULE/positive/01/data/to.csv b/Unpublished/NEW-RULE/positive/01/data/to.csv new file mode 100644 index 000000000..a25d104e3 --- /dev/null +++ b/Unpublished/NEW-RULE/positive/01/data/to.csv @@ -0,0 +1,12 @@ +STUDYID,DOMAIN,SPTOBID,TOSEQ,TOPARMCD,TOPARM,TOCAT,TOSCAT,TOVAL,TOVALU +TOB07,TO,CIG01a,1,TBPRDCAT,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,Cigarettes, +TOB07,TO,CIG01a,2,TBPRSCAT,Tobacco Product Subcategory,NEW PRODUCT,PRODUCT IDENTIFIER,Filtered, +TOB07,TO,CIG01a,3,MANUF,Manufacturer,NEW PRODUCT,PRODUCT IDENTIFIER,Joes Cigs USA, +TOB07,TO,CIG01a,4,MANUF,Manufacturer,NEW PRODUCT,PRODUCT IDENTIFIER,Joes Cigs USA, +TOB07,TO,CIG01a,5,TRADENAM,Trade Name,NEW PRODUCT,PRODUCT IDENTIFIER,Treetop Menthol King Size, +TOB07,TO,VAPE-Z27,1,TBPRDCAT,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,Electronic Nicotine Delivery Systems (ENDS) (Vapes), +TOB07,TO,VAPE-Z27,2,TBPRDCAT,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,Closed E-Cigarette, +TOB07,TO,VAPE-Z27,3,MANUF,Manufacturer,NEW PRODUCT,PRODUCT IDENTIFIER,Joes Vapes USA, +TOB07,TO,VAPE-Z01,4,TRADENAM,Trade Name,NEW PRODUCT,PRODUCT IDENTIFIER,Everyday Rich Tobacco, +TOB07,TO,VAPE-Z01,5,TBPRDCAT,Tobacco Product Category,NEW PRODUCT,PRODUCT IDENTIFIER,ENDS (Vapes), +TOB07,TO,VAPE-Z01,6,PRDQUAN,Product Quantity,NEW PRODUCT,PRODUCT DESCRIPTOR,E-CIGARET, \ No newline at end of file diff --git a/Unpublished/NEW-RULE/positive/01/results/results.csv b/Unpublished/NEW-RULE/positive/01/results/results.csv new file mode 100644 index 000000000..a13018c5f --- /dev/null +++ b/Unpublished/NEW-RULE/positive/01/results/results.csv @@ -0,0 +1 @@ +Dataset,Record,Variable,Value diff --git a/Unpublished/NEW-RULE/positive/01/results/results.json b/Unpublished/NEW-RULE/positive/01/results/results.json new file mode 100644 index 000000000..82ee9cee6 --- /dev/null +++ b/Unpublished/NEW-RULE/positive/01/results/results.json @@ -0,0 +1 @@ +{"Conformance_Details": {"Report_Generation": "2026-05-14T19:23:59", "Total_Runtime": "0.19 seconds", "CORE_Engine_Version": "0.16.0", "Issue_Limit_Per_Rule": "None", "Issue_Limit_Per_Dataset": "None", "Issue_Limit_Per_Sheet": null, "Standard": "TIG", "Sub_Standard": "sdtm", "Version": "V1.0", "TIG_Use_Case": "PROD", "CT_Version": "", "Define_XML_Version": null}, "Dataset_Details": [{"filename": "TO", "label": "Tobacco Product Identifiers and Descriptors", "path": "C:\\Users\\els_janssens\\CORE\\Rule_Authoring_CDISC_training\\cdisc-open-rules-training\\Unpublished\\NEW-RULE\\positive\\01\\data", "modification_date": "2026-05-14T19:21:57.590889", "size_kb": 1.143, "length": 11}], "Issue_Summary": [], "Issue_Details": [], "Rules_Report": []} \ No newline at end of file diff --git a/Unpublished/NEW-RULE/rule.yml b/Unpublished/NEW-RULE/rule.yml new file mode 100644 index 000000000..6a1dc835e --- /dev/null +++ b/Unpublished/NEW-RULE/rule.yml @@ -0,0 +1,57 @@ +# Variable: TOPARMCD +# Rule: TOPARMCD=TBPRDCAT present in dataset +Authorities: + - Organization: 'CDISC' + Standards: + - Name: 'TIG' + References: + - Citations: + - Cited Guidance: A minimally meaningful TO dataset must include at least the + parameter for tobacco product category (TOPARMCD = TPRDCAT) + Document: 'TIG 1.0' + Item: 'assumption 2' + Section: '2.8.8.1' + Origin: TIG Conformance Rules + Rule Identifier: + Id: 'TIG0003' + Version: '1' + Version: '1.0' + Substandard: SDTM + Version: '1.0' +Check: + all: + - name: $tbprdcat_count + operator: equal_to + value: 0 +Core: + Status: Draft + Version: '1' + Id: '' +Description: Raise an error when there is no record present in TO per SPTOBID + where TOPARMCD equals TBPRDCAT. +Executability: Fully Executable +Operations: + - domain: TO + filter: + TOPARMCD: TBPRDCAT + group: + - SPTOBID + id: $tbprdcat_count + name: TOPARMCD + operator: record_count +Outcome: + Message: TO dataset does not include a record for each SPTOBID where TOPARMCD = + TBPRDCAT. + Output Variables: + - SPTOBID + - $tbprdcat_count +Rule Type: Record Data +Scope: + Classes: + Include: + - STUDY REFERENCE + Domains: + Include: + - TO + Use Case: PROD +Sensitivity: Record From b18719b07538bf799e96173fc4ad580e3efe493e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 14 May 2026 18:11:34 +0000 Subject: [PATCH 2/2] ci: remove results.json from NEW-RULE [skip ci] --- Unpublished/NEW-RULE/negative/01/results/results.json | 1 - Unpublished/NEW-RULE/positive/01/results/results.json | 1 - 2 files changed, 2 deletions(-) delete mode 100644 Unpublished/NEW-RULE/negative/01/results/results.json delete mode 100644 Unpublished/NEW-RULE/positive/01/results/results.json diff --git a/Unpublished/NEW-RULE/negative/01/results/results.json b/Unpublished/NEW-RULE/negative/01/results/results.json deleted file mode 100644 index 9d1614f2c..000000000 --- a/Unpublished/NEW-RULE/negative/01/results/results.json +++ /dev/null @@ -1 +0,0 @@ -{"Conformance_Details": {"Report_Generation": "2026-05-14T19:24:07", "Total_Runtime": "0.17 seconds", "CORE_Engine_Version": "0.16.0", "Issue_Limit_Per_Rule": "None", "Issue_Limit_Per_Dataset": "None", "Issue_Limit_Per_Sheet": null, "Standard": "TIG", "Sub_Standard": "sdtm", "Version": "V1.0", "TIG_Use_Case": "PROD", "CT_Version": "", "Define_XML_Version": null}, "Dataset_Details": [{"filename": "TO", "label": "Tobacco Product Identifiers and Descriptors", "path": "C:\\Users\\els_janssens\\CORE\\Rule_Authoring_CDISC_training\\cdisc-open-rules-training\\Unpublished\\NEW-RULE\\negative\\01\\data", "modification_date": "2026-05-14T19:16:37.555353", "size_kb": 1.143, "length": 11}], "Issue_Summary": [], "Issue_Details": [], "Rules_Report": []} \ No newline at end of file diff --git a/Unpublished/NEW-RULE/positive/01/results/results.json b/Unpublished/NEW-RULE/positive/01/results/results.json deleted file mode 100644 index 82ee9cee6..000000000 --- a/Unpublished/NEW-RULE/positive/01/results/results.json +++ /dev/null @@ -1 +0,0 @@ -{"Conformance_Details": {"Report_Generation": "2026-05-14T19:23:59", "Total_Runtime": "0.19 seconds", "CORE_Engine_Version": "0.16.0", "Issue_Limit_Per_Rule": "None", "Issue_Limit_Per_Dataset": "None", "Issue_Limit_Per_Sheet": null, "Standard": "TIG", "Sub_Standard": "sdtm", "Version": "V1.0", "TIG_Use_Case": "PROD", "CT_Version": "", "Define_XML_Version": null}, "Dataset_Details": [{"filename": "TO", "label": "Tobacco Product Identifiers and Descriptors", "path": "C:\\Users\\els_janssens\\CORE\\Rule_Authoring_CDISC_training\\cdisc-open-rules-training\\Unpublished\\NEW-RULE\\positive\\01\\data", "modification_date": "2026-05-14T19:21:57.590889", "size_kb": 1.143, "length": 11}], "Issue_Summary": [], "Issue_Details": [], "Rules_Report": []} \ No newline at end of file