
Generate a Static AE Listing Table in RTF format
Source:vignettes/ae-listing-rtf.Rmd
ae-listing-rtf.RmdOverview
This vignette demonstrates how to generate a static adverse event (AE) listing focused on serious AEs in RTF format.
The listing presents participant-level details for adverse events of interest. Three functions support the workflow:
-
prepare_ae_listing()prepares the listing dataset. -
format_ae_listing()formats the listing dataset. -
tlf_ae_listing()creates the RTF table.
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 = "ser"
)
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 = "ser",
term1 = "Serious",
term2 = "",
subset = AESER == "Y",
var = "AEDECOD",
soc = "AEBODSYS",
label = "Serious 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 the 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 prepared
output, and tlf_ae_listing() creates the RTF table.
footnote <- c(
"Related: Investigator-assessed relationship of the adverse event to study medication. Y = RELATED, N = NOT RELATED",
"Action Taken: Discontinued = DRUG WITHDRAWN, Interrupted = DRUG INTERRUPTED, Reduced = DOSE REDUCED, Increased = DOSE INCREASED, None = DOSE NOT CHANGED, N/A = NOT APPLICABLE.",
"Outcome: Resolved = RECOVERED/RESOLVED, Resolving = RECOVERING/RESOLVING, Sequelae = RECOVERED/RESOLVED WITH SEQUELAE, Not resolved = NOT RECOVERED/NOT RESOLVED.",
"Adverse event terms are from MedDRA Version 25.0."
)
rtf_dir <- if (dir.exists("vignettes/rtf")) "vignettes/rtf" else "rtf"
rtf_file <- file.path(rtf_dir, "ae0listing1.rtf")
prepare_ae_listing(
meta,
analysis = "ae_listing",
population = "apat",
observation = "wk12",
parameter = "ser"
) |>
format_ae_listing() |>
tlf_ae_listing(
footnotes = footnote,
orientation = "portrait",
source = "Source: [CDISCpilot: adam-adsl; adae]",
analysis = "ae_listing", # Provide analysis type defined in meta$analysis
path_outtable = rtf_file
)
#> The output is saved in/home/runner/work/metalite.ae/metalite.ae/vignettes/rtf/ae0listing1.rtfGenerated RTF file: ae0listing1.rtf