← Previous: Paneled Outlier Explorer Workflow Next: Safety Histogram Workflow →

This example runs the Safety Delta Delta report through a workr YAML workflow: inst/workflow/3_reports/safety_delta_delta.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_delta_delta.yaml",
  package = "gsm.safety"
)
if (!nzchar(workflow_path)) {
  workflow_path <- file.path("inst", "workflow", "3_reports", "safety_delta_delta.yaml")
}

lWorkflow <- yaml::read_yaml(workflow_path)
lData <- gsm.safety::MakeExampleData()

The workflow YAML is the report contract:

Workflow YAML
meta:
  Type: Report
  ID: safety_delta_delta
  Output: html
  Name: Safety Delta Delta Report
  Description: Safety Delta Delta report scaffold for SafetyCharts lab review
  ParentIssue: 21
  domains:
    labs: Mapped_LB
  widgetName: safetyDeltaDelta
  widgetSettings:
    id_col: subjid
    visit_col: visit
    visitn_col: visitn
    measure_col: measure
    value_col: value
    group_by: sex
    group_cols:
      - value_col: sex
        label: Sex
spec:
  Mapped_LB:
    _all:
      required: true
    subjid:
      type: character
    visit:
      type: character
    visitn:
      type: integer
    measure:
      type: character
    value:
      type: numeric
    unit:
      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_delta_delta` 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_delta_delta` Workflow

lReport$path
#> [1] "/home/runner/work/gsm.safety/gsm.safety/pkgdown/menus/examples/safety_delta_delta.html"