The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Generate an Interactive AE Listing Table with reactable

library(metalite.ae)

Overview

This vignette demonstrates how to generate an interactive adverse event (AE) listing focused on drug-related AEs using metalite.ae.

The listing presents participant-level details for drug-related AEs. Three functions support the workflow:

In the interactive table, each column has its own filter box so users can quickly search for participants or events of interest.

Step 1: Define metadata

The example uses ADSL and ADAE data from the forestly package.

adsl <- forestly::forestly_adsl
adae <- forestly::forestly_adae

adsl$TRT01A <- factor(
  adsl$TRT01A,
  levels = c("Xanomeline Low Dose", "Placebo"),
  labels = c("Low Dose", "Placebo")
)
adae$TRTA <- factor(
  adae$TRTA,
  levels = c("Xanomeline Low Dose", "Placebo"),
  labels = c("Low Dose", "Placebo")
)

analysis_plan <- metalite::plan(
  analysis = "ae_listing",
  population = "apat",
  observation = "wk12",
  parameter = "rel"
)

meta <- metalite::meta_adam(observation = adae, population = adsl) |>
  metalite::define_plan(analysis_plan) |>
  metalite::define_population(
    name = "apat",
    var = c(
      "USUBJID", "SAFFL", "TRT01A", "TRTDUR",
      "SITEID", "SEX", "RACE", "AGE"
    ),
    group = "TRT01A",
    subset = SAFFL == "Y",
    label = "All Participants as Treated"
  ) |>
  metalite::define_observation(
    name = "wk12",
    var = c(
      "USUBJID", "SAFFL", "TRTA", "AEDECOD", "AEBODSYS", "AEREL",
      "AESER", "AEOUT", "AEACN", "AESDTH", "ASTDT", "AENDT"
    ),
    group = "TRTA",
    subset = SAFFL == "Y",
    label = "Weeks 0 to 12"
  ) |>
  metalite::define_parameter(
    name = "rel",
    term1 = "Related",
    term2 = "",
    subset = AREL == "RELATED",
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "Related AEs"
  ) |>
  metalite::define_analysis(
    name = "ae_listing",
    var_name = c(
      "USUBJID", "ASTDY", "AEDECOD", "ADURN",
      "AESEV", "AESER", "AEREL", "AEOUT"
    ),
    group_by = c("USUBJID", "ASTDY"),
    page_by = "TRTA"
  ) |>
  metalite::meta_build()

Step 2: Generate an interactive AE listing table

prepare_ae_listing() uses the population, observation, parameter, and analysis definitions in meta to prepare the listing dataset. format_ae_listing() organizes the table, and react_ae_listing() creates an interactive view.

prepare_ae_listing(
  meta,
  analysis = "ae_listing",
  population = "apat",
  observation = "wk12",
  parameter = "rel"
) |>
  format_ae_listing() |>
  react_ae_listing(
    default_page_size = 15,
    patient_folding = FALSE
  )

Use patient_folding = TRUE when reviewers should only see records for a specific participant after entering the exact full ID in the first-column search box. This mode is useful for privacy-conscious review workflows, focused medical review, or meetings where you want to avoid showing all participants by default. In this setting, the table starts empty and displays records only when a full, valid patient ID is provided.

prepare_ae_listing(
  meta,
  analysis = "ae_listing",
  population = "apat",
  observation = "wk12",
  parameter = "rel"
) |>
  format_ae_listing() |>
  react_ae_listing(
    default_page_size = 15,
    patient_folding = TRUE
  )

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.