From 62435c7bedb630d95725d2cec22651b994747401 Mon Sep 17 00:00:00 2001 From: Gerry Campion Date: Tue, 24 Feb 2026 16:56:46 -0500 Subject: [PATCH 1/4] updated template and readme for rule run status --- README.md | 10 ++++++++-- .../services/reporting/sdtm_report_data.py | 6 +++--- .../services/reporting/usdm_report_data.py | 6 +++--- resources/templates/report-template.xlsx | Bin 20500 -> 20462 bytes resources/templates/usdm-report-template.xlsx | Bin 53983 -> 54587 bytes 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0c48aec8a..a087308af 100644 --- a/README.md +++ b/README.md @@ -330,8 +330,14 @@ The rules report tab displays the run status of each rule selected for validatio The possible rule run statuses are: -- `SUCCESS` - The rule ran and data was validated against the rule. May or may not produce results -- `SKIPPED` - The rule was unable to be run. Usually due to missing required data, but could also be cause by rule execution errors. +- `SUCCESS` - The rule ran, data was validated, and no issues were reported. +- `SKIPPED` - The rule was unable to be run for one of the following reasons: + - Column not found in data + - Domain not found + - Schema validation is off + - Outside scope +- `ISSUE REPORTED` - The rule ran, data was validated, and issues were reported +- `EXECUTION ERROR` - The validation failed for an unknown reason caused by rule evaluation or execution. Error details are found in the `Issue Details` tab. #### Setting DATASET_SIZE_THRESHOLD for Large Datasets diff --git a/cdisc_rules_engine/services/reporting/sdtm_report_data.py b/cdisc_rules_engine/services/reporting/sdtm_report_data.py index b895f9059..19f3e0389 100644 --- a/cdisc_rules_engine/services/reporting/sdtm_report_data.py +++ b/cdisc_rules_engine/services/reporting/sdtm_report_data.py @@ -365,9 +365,9 @@ def get_rules_report_data(self) -> list[dict]: "cdisc_rule_id": validation_result.cdisc_rule_id, "fda_rule_id": validation_result.fda_rule_id, "message": validation_result.message, - "status": ExecutionStatus( - validation_result.execution_status - ).value.upper(), + "status": ExecutionStatus(validation_result.execution_status) + .value.upper() + .replace("_", " "), } rules_report.append(rules_item) return sorted( diff --git a/cdisc_rules_engine/services/reporting/usdm_report_data.py b/cdisc_rules_engine/services/reporting/usdm_report_data.py index fce4ca59e..ad4d4fa8d 100644 --- a/cdisc_rules_engine/services/reporting/usdm_report_data.py +++ b/cdisc_rules_engine/services/reporting/usdm_report_data.py @@ -268,9 +268,9 @@ def get_rules_report_data(self) -> list[dict]: "version": "1", "cdisc_rule_id": validation_result.cdisc_rule_id, "message": validation_result.message, - "status": ExecutionStatus( - validation_result.execution_status - ).value.upper(), + "status": ExecutionStatus(validation_result.execution_status) + .value.upper() + .replace("_", " "), } rules_report.append(rules_item) diff --git a/resources/templates/report-template.xlsx b/resources/templates/report-template.xlsx index 227cdd1e74e22f6873af4f354a25e1534275a30e..b27e0fabdc3dc66a855afa9b2f0415b508240045 100644 GIT binary patch delta 11888 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 C%_Twr delta 37726 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 qs?qv?fWa^ejeMBsuVS>-5 From 7bb896423944e2e0049e083a0c34424a5868d7c7 Mon Sep 17 00:00:00 2001 From: Gerry Campion Date: Tue, 24 Feb 2026 17:05:16 -0500 Subject: [PATCH 2/4] fix unit tests --- tests/unit/test_services/test_reporting/test_sdtm_report.py | 4 +++- tests/unit/test_services/test_reporting/test_usdm_report.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_services/test_reporting/test_sdtm_report.py b/tests/unit/test_services/test_reporting/test_sdtm_report.py index f144076d4..e4623f72a 100644 --- a/tests/unit/test_services/test_reporting/test_sdtm_report.py +++ b/tests/unit/test_services/test_reporting/test_sdtm_report.py @@ -21,7 +21,9 @@ def test_get_rules_report_data(mock_validation_results): "cdisc_rule_id": result.cdisc_rule_id, "fda_rule_id": result.fda_rule_id, "message": result.message, - "status": ExecutionStatus.ISSUE_REPORTED.value.upper(), + "status": ExecutionStatus.ISSUE_REPORTED.value.upper().replace( + "_", " " + ), } ) expected_reports = sorted(expected_reports, key=lambda x: x["core_id"]) diff --git a/tests/unit/test_services/test_reporting/test_usdm_report.py b/tests/unit/test_services/test_reporting/test_usdm_report.py index c39da3e05..2706dd29e 100644 --- a/tests/unit/test_services/test_reporting/test_usdm_report.py +++ b/tests/unit/test_services/test_reporting/test_usdm_report.py @@ -20,7 +20,9 @@ def test_get_rules_report_data(mock_validation_results): "version": "1", "cdisc_rule_id": result.cdisc_rule_id, "message": result.message, - "status": ExecutionStatus.ISSUE_REPORTED.value.upper(), + "status": ExecutionStatus.ISSUE_REPORTED.value.upper().replace( + "_", " " + ), } ) expected_reports = sorted(expected_reports, key=lambda x: x["core_id"]) From b895d7af8f80e62f436312972799abb83988af6e Mon Sep 17 00:00:00 2001 From: Gerry Campion Date: Wed, 25 Feb 2026 10:25:37 -0500 Subject: [PATCH 3/4] change enum value instead of replacing underscore --- cdisc_rules_engine/enums/execution_status.py | 6 +++--- cdisc_rules_engine/services/reporting/sdtm_report_data.py | 6 +++--- cdisc_rules_engine/services/reporting/usdm_report_data.py | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cdisc_rules_engine/enums/execution_status.py b/cdisc_rules_engine/enums/execution_status.py index ab8c1740e..60f9d3a0d 100644 --- a/cdisc_rules_engine/enums/execution_status.py +++ b/cdisc_rules_engine/enums/execution_status.py @@ -4,9 +4,9 @@ class ExecutionStatus(BaseEnum): SUCCESS = "success" SKIPPED = "skipped" - EXECUTION_ERROR = "execution_error" - ISSUE_REPORTED = "issue_reported" - UNKNOWN_STATUS = "unknown_status" + EXECUTION_ERROR = "execution error" + ISSUE_REPORTED = "issue reported" + UNKNOWN_STATUS = "unknown status" class SkippedReason(BaseEnum): diff --git a/cdisc_rules_engine/services/reporting/sdtm_report_data.py b/cdisc_rules_engine/services/reporting/sdtm_report_data.py index 19f3e0389..b895f9059 100644 --- a/cdisc_rules_engine/services/reporting/sdtm_report_data.py +++ b/cdisc_rules_engine/services/reporting/sdtm_report_data.py @@ -365,9 +365,9 @@ def get_rules_report_data(self) -> list[dict]: "cdisc_rule_id": validation_result.cdisc_rule_id, "fda_rule_id": validation_result.fda_rule_id, "message": validation_result.message, - "status": ExecutionStatus(validation_result.execution_status) - .value.upper() - .replace("_", " "), + "status": ExecutionStatus( + validation_result.execution_status + ).value.upper(), } rules_report.append(rules_item) return sorted( diff --git a/cdisc_rules_engine/services/reporting/usdm_report_data.py b/cdisc_rules_engine/services/reporting/usdm_report_data.py index ad4d4fa8d..fce4ca59e 100644 --- a/cdisc_rules_engine/services/reporting/usdm_report_data.py +++ b/cdisc_rules_engine/services/reporting/usdm_report_data.py @@ -268,9 +268,9 @@ def get_rules_report_data(self) -> list[dict]: "version": "1", "cdisc_rule_id": validation_result.cdisc_rule_id, "message": validation_result.message, - "status": ExecutionStatus(validation_result.execution_status) - .value.upper() - .replace("_", " "), + "status": ExecutionStatus( + validation_result.execution_status + ).value.upper(), } rules_report.append(rules_item) From 41e337605ed569c52b6de325f520569f7c099fe8 Mon Sep 17 00:00:00 2001 From: Gerry Campion Date: Wed, 25 Feb 2026 10:28:00 -0500 Subject: [PATCH 4/4] remove from tests too --- tests/unit/test_services/test_reporting/test_sdtm_report.py | 4 +--- tests/unit/test_services/test_reporting/test_usdm_report.py | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/tests/unit/test_services/test_reporting/test_sdtm_report.py b/tests/unit/test_services/test_reporting/test_sdtm_report.py index e4623f72a..f144076d4 100644 --- a/tests/unit/test_services/test_reporting/test_sdtm_report.py +++ b/tests/unit/test_services/test_reporting/test_sdtm_report.py @@ -21,9 +21,7 @@ def test_get_rules_report_data(mock_validation_results): "cdisc_rule_id": result.cdisc_rule_id, "fda_rule_id": result.fda_rule_id, "message": result.message, - "status": ExecutionStatus.ISSUE_REPORTED.value.upper().replace( - "_", " " - ), + "status": ExecutionStatus.ISSUE_REPORTED.value.upper(), } ) expected_reports = sorted(expected_reports, key=lambda x: x["core_id"]) diff --git a/tests/unit/test_services/test_reporting/test_usdm_report.py b/tests/unit/test_services/test_reporting/test_usdm_report.py index 2706dd29e..c39da3e05 100644 --- a/tests/unit/test_services/test_reporting/test_usdm_report.py +++ b/tests/unit/test_services/test_reporting/test_usdm_report.py @@ -20,9 +20,7 @@ def test_get_rules_report_data(mock_validation_results): "version": "1", "cdisc_rule_id": result.cdisc_rule_id, "message": result.message, - "status": ExecutionStatus.ISSUE_REPORTED.value.upper().replace( - "_", " " - ), + "status": ExecutionStatus.ISSUE_REPORTED.value.upper(), } ) expected_reports = sorted(expected_reports, key=lambda x: x["core_id"])