This example runs the Safety Histogram report through a
workr YAML workflow:
inst/workflow/3_reports/safety_histogram.yaml. The YAML
stores the widget settings, initializes the widget when a safetyCharts
init_* helper is available, and writes the rendered HTML
report with gsm.safety::RenderSafetyChartsWidget().
workflow_path <- system.file(
"workflow", "3_reports", "safety_histogram.yaml",
package = "gsm.safety"
)
if (!nzchar(workflow_path)) {
workflow_path <- file.path("inst", "workflow", "3_reports", "safety_histogram.yaml")
}
lWorkflow <- yaml::read_yaml(workflow_path)
lData <- gsm.safety::MakeExampleData()
The workflow YAML is the report contract:
meta:
Type: Report
ID: safety_histogram
Output: html
Name: Safety Histogram Report
Description: Safety Histogram report scaffold for SafetyCharts lab review
ParentIssue: 22
domains:
labs: Mapped_LB
widgetName: safetyHistogram
widgetSettings:
id_col: subjid
measure_col: measure
value_col: value
normal_col_low: normal_low
normal_col_high: normal_high
group_by: sex
groups:
- value_col: sex
label: Sex
spec:
Mapped_LB:
_all:
required: true
subjid:
type: character
visit:
type: character
visitn:
type: integer
studyday:
type: integer
measure:
type: character
value:
type: numeric
unit:
type: character
required: false
normal_low:
type: numeric
required: false
normal_high:
type: numeric
required: false
baseline_flag:
type: character
required: false
sex:
type: character
required: false
steps:
- output: InitializedWidget
name: list
params:
data: Mapped_LB
settings: widgetSettings
- output: strOutputDir
name: getwd
- output: Report
name: gsm.safety::RenderSafetyChartsWidget
params:
lInitialized: InitializedWidget
strWidgetName: widgetName
strOutputDir: strOutputDir
strOutputFile: ID
Run the workflow with the example mapped data:
lReport <- workr::RunWorkflow(
lWorkflow = lWorkflow,
lData = lData,
bReturnResult = TRUE
)
#> [INFO] Initializing `Report_safety_histogram` Workflow
#> [INFO] Checking data against spec
#> [INFO] Workflow Step 1 of 3: `list`
#> [INFO] Evaluating 2 parameter(s) for `list`
#> [INFO] data = Mapped_LB: Passing lData$Mapped_LB.
#> [INFO] settings = widgetSettings: Passing lMeta$widgetSettings.
#> [INFO] Calling `list`
#> [INFO] list of length 2 saved as `lData$InitializedWidget`.
#> [INFO] Workflow Step 2 of 3: `getwd`
#> [INFO] Evaluating 0 parameter(s) for `getwd`
#> [INFO] Calling `getwd`
#> [INFO] character of length 1 saved as `lData$strOutputDir`.
#> [INFO] Workflow Step 3 of 3: `gsm.safety::RenderSafetyChartsWidget`
#> [INFO] Evaluating 4 parameter(s) for `gsm.safety::RenderSafetyChartsWidget`
#> [INFO] lInitialized = InitializedWidget: Passing lData$InitializedWidget.
#> [INFO] strWidgetName = widgetName: Passing lMeta$widgetName.
#> [INFO] strOutputDir = strOutputDir: Passing lData$strOutputDir.
#> [INFO] strOutputFile = ID: Passing lMeta$ID.
#> [INFO] Calling `gsm.safety::RenderSafetyChartsWidget`
#> [INFO] list of length 3 saved as `lData$Report`.
#> [INFO] Returning results from final step: list of length 3`.
#> [INFO] Completed `Report_safety_histogram` Workflow
lReport$path
#> [1] "/home/runner/work/gsm.safety/gsm.safety/pkgdown/menus/examples/safety_histogram.html"