From 58f981360f7814d2ecf6b828e78c58f2df7eebb5 Mon Sep 17 00:00:00 2001 From: Maxim Moinat Date: Fri, 6 Feb 2026 12:26:20 +0100 Subject: [PATCH 1/3] add severity to shiny app --- inst/shinyApps/app.R | 19 ++++++++++++++++++- .../www/htmlwidgets/lib/dqCheckRenderer.js | 2 ++ inst/shinyApps/www/js/loadResults.js | 11 ++++++----- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/inst/shinyApps/app.R b/inst/shinyApps/app.R index c493b5fa..7796e031 100755 --- a/inst/shinyApps/app.R +++ b/inst/shinyApps/app.R @@ -3,7 +3,24 @@ server <- function(input, output, session) { observe({ jsonPath <- Sys.getenv("jsonPath") results <- DataQualityDashboard::convertJsonResultsFileCase(jsonPath, writeToFile = FALSE, targetCase = "camel") - results <- jsonlite::parse_json(jsonlite::toJSON(results)) + + # Read checkDescription to get Severity status + cdmVersion <- results$Metadata$cdmVersion + checkDescriptionsDf <- readr::read_csv( + file = system.file( + "csv", + sprintf("OMOP_CDMv%s_Check_Descriptions.csv", cdmVersion), + package = "DataQualityDashboard" + ), + show_col_types = FALSE + ) + + results$CheckResults <- results$CheckResults |> + dplyr::left_join( + dplyr::select(checkDescriptionsDf, checkName, severity), + dplyr::join_by('checkName') + ) + session$sendCustomMessage("results", results) }) } diff --git a/inst/shinyApps/www/htmlwidgets/lib/dqCheckRenderer.js b/inst/shinyApps/www/htmlwidgets/lib/dqCheckRenderer.js index 63105fd1..5f49e4fe 100755 --- a/inst/shinyApps/www/htmlwidgets/lib/dqCheckRenderer.js +++ b/inst/shinyApps/www/htmlwidgets/lib/dqCheckRenderer.js @@ -4,6 +4,8 @@ class DqCheckRenderer extends HTMLElement { {{#each checks}}
Check Details
{{this.checkName}} - {{this.checkLevel}} - {{this.CDM_TABLE}} - {{this.CDM_FIELD}}
+
Check Severity
+
{{this.severity}}
Check Description
{{this.checkDescription}}
Violated Rows
diff --git a/inst/shinyApps/www/js/loadResults.js b/inst/shinyApps/www/js/loadResults.js index 68abbd01..81c75c7a 100755 --- a/inst/shinyApps/www/js/loadResults.js +++ b/inst/shinyApps/www/js/loadResults.js @@ -152,12 +152,13 @@ function loadResults(results) { { data: function (d) { if (d.isError == 1) { return "ERROR" } else if (d.notApplicable == 1) { return "NOT APPLICABLE" } else if (d.failed == 1) { return "FAIL" } else {return "PASS"} }, title: "STATUS", className: 'dt-body-right' }, /*{ data: function (d) { return d.context ? d.context : "None"; }, title: "CONTEXT" },*/ { data: "cdmTableName", title: "TABLE"}, - { data: function (d) { return d.cdmFieldName ? d.cdmFieldName : "None"; }, title: "FIELD", visible: false }, - { data: "checkName", title: "CHECK", visible: false}, + { data: function (d) { return d.cdmFieldName ? d.cdmFieldName : "None"; }, title: "FIELD", visible: true }, + { data: "checkName", title: "CHECK", visible: true}, { data: "category", title: "CATEGORY" }, - { data: function (d) { return d.subcategory ? d.subcategory : "None" }, title: "SUBCATEGORY" }, - { data: "checkLevel", title: "LEVEL" }, - { data: function (d) { if (d.notesValue == null) { return "None"; } else { return "Exists"; } }, title: "NOTES" }, + { data: function (d) { return d.subcategory ? d.subcategory : "None" }, title: "SUBCATEGORY", visible: false }, + { data: "checkLevel", title: "LEVEL", visible: false }, + { data: "severity", title: "SEVERITY", visible: true }, + { data: function (d) { if (d.notesValue == null) { return "None"; } else { return "Exists"; } }, title: "NOTES", visible: false }, { data: function (d) { From 517d564ac270ea722324b8e99d97054f3fb3fe06 Mon Sep 17 00:00:00 2001 From: Maxim Moinat Date: Fri, 6 Feb 2026 14:17:26 +0100 Subject: [PATCH 2/3] add version in shiny app --- DESCRIPTION | 2 +- inst/shinyApps/app.R | 7 ++++++- inst/shinyApps/www/index.html | 2 ++ inst/shinyApps/www/js/loadResults.js | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index dc21af8c..8e9a5334 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: DataQualityDashboard Type: Package Title: Execute and View Data Quality Checks on OMOP CDM Database -Version: 2.8.6 +Version: 2.8.6.900 Date: 2026-01-22 Authors@R: c( person("Katy", "Sadowski", email = "sadowski@ohdsi.org", role = c("aut", "cre")), diff --git a/inst/shinyApps/app.R b/inst/shinyApps/app.R index 7796e031..7f8f566a 100755 --- a/inst/shinyApps/app.R +++ b/inst/shinyApps/app.R @@ -9,7 +9,7 @@ server <- function(input, output, session) { checkDescriptionsDf <- readr::read_csv( file = system.file( "csv", - sprintf("OMOP_CDMv%s_Check_Descriptions.csv", cdmVersion), + sprintf("OMOP_CDMv%s_Check_Descriptions.csv", substr(cdmVersion, 1, 3)), package = "DataQualityDashboard" ), show_col_types = FALSE @@ -21,6 +21,11 @@ server <- function(input, output, session) { dplyr::join_by('checkName') ) + results$appVersion <- as.character(packageVersion('DataQualityDashboard')) + + # Fix json formatting + results <- jsonlite::parse_json(jsonlite::toJSON(results)) + session$sendCustomMessage("results", results) }) } diff --git a/inst/shinyApps/www/index.html b/inst/shinyApps/www/index.html index 4dcf46b3..436d73b7 100755 --- a/inst/shinyApps/www/index.html +++ b/inst/shinyApps/www/index.html @@ -113,6 +113,8 @@

References


Apache 2.0 Open Source Software - Brought to you by OHDSI +
+ App Version: diff --git a/inst/shinyApps/www/js/loadResults.js b/inst/shinyApps/www/js/loadResults.js index 81c75c7a..96720377 100755 --- a/inst/shinyApps/www/js/loadResults.js +++ b/inst/shinyApps/www/js/loadResults.js @@ -5,6 +5,7 @@ function loadResults(results) { var metadata = results.Metadata[0]; $('cdm-source-name').text(metadata.cdmSourceName); $('dq-metadata').attr('data-results', JSON.stringify(metadata)); + $('#appVersion').text(results.appVersion); function format(d) { errorMessage = ''; From 312047d7816d8578d5f12487b809a16d1a226074 Mon Sep 17 00:00:00 2001 From: Maxim Moinat Date: Fri, 6 Feb 2026 14:25:39 +0100 Subject: [PATCH 3/3] trycatch lookup of severity --- inst/shinyApps/app.R | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/inst/shinyApps/app.R b/inst/shinyApps/app.R index 7f8f566a..10eee15b 100755 --- a/inst/shinyApps/app.R +++ b/inst/shinyApps/app.R @@ -4,22 +4,26 @@ server <- function(input, output, session) { jsonPath <- Sys.getenv("jsonPath") results <- DataQualityDashboard::convertJsonResultsFileCase(jsonPath, writeToFile = FALSE, targetCase = "camel") - # Read checkDescription to get Severity status - cdmVersion <- results$Metadata$cdmVersion - checkDescriptionsDf <- readr::read_csv( - file = system.file( - "csv", - sprintf("OMOP_CDMv%s_Check_Descriptions.csv", substr(cdmVersion, 1, 3)), - package = "DataQualityDashboard" - ), - show_col_types = FALSE - ) - - results$CheckResults <- results$CheckResults |> - dplyr::left_join( - dplyr::select(checkDescriptionsDf, checkName, severity), - dplyr::join_by('checkName') + tryCatch({ + # Read checkDescription to get severity status for each check + cdmVersion <- results$Metadata$cdmVersion + checkDescriptionsDf <- readr::read_csv( + file = system.file( + "csv", + sprintf("OMOP_CDMv%s_Check_Descriptions.csv", substr(sub('$v', '', cdmVersion), 1, 3)), + package = "DataQualityDashboard" + ), + show_col_types = FALSE ) + + results$CheckResults <- results$CheckResults |> + dplyr::left_join( + dplyr::select(checkDescriptionsDf, checkName, severity), + dplyr::join_by('checkName') + ) + }, error = function(e) { + results$CheckResults$severity <- NA + }) results$appVersion <- as.character(packageVersion('DataQualityDashboard')) @@ -27,7 +31,7 @@ server <- function(input, output, session) { results <- jsonlite::parse_json(jsonlite::toJSON(results)) session$sendCustomMessage("results", results) - }) + }) } ui <- fluidPage(