Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----message=FALSE, warning=FALSE---------------------------------------------
library(metalite)
library(r2rtf)
library(dplyr)
## -----------------------------------------------------------------------------
adae <- r2rtf::r2rtf_adae
adsl <- r2rtf::r2rtf_adsl |> rename(TRTA = TRT01A)
meta <- meta_adam(
observation = adae,
population = adsl
)
## -----------------------------------------------------------------------------
plan <- plan(
analysis = "ae_summary", population = "apat",
observation = "wk12", parameter = "any;rel;ser"
) |>
add_plan(
analysis = "ae_specific", population = "apat",
observation = "wk12",
parameter = c("any", "rel", "ser")
)
plan
## -----------------------------------------------------------------------------
meta <- meta |> define_plan(plan)
## -----------------------------------------------------------------------------
meta <- meta |>
define_population(
name = "apat",
group = "TRTA",
group_order = c(
"High Dose" = "Xanomeline High Dose",
"Placebo" = "Placebo"
),
subset = SAFFL == "Y"
)
## -----------------------------------------------------------------------------
meta <- meta |>
define_observation(
name = "wk12",
group = "TRTA",
ae_var = "AEDECOD",
var = c("AEREL", "AESER"),
subset = SAFFL == "Y",
label = "Weeks 0 to 12"
)
## -----------------------------------------------------------------------------
meta <- meta |>
define_parameter(
name = "any",
end_notes = c()
) |>
define_parameter(
name = "rel",
subset = AEREL %in% c("POSSIBLE", "PROBABLE"),
label = "drug-realted adverse events"
) |>
define_parameter(
name = "ser",
subset = AESER == "Y",
label = "serious adverse events",
end_notes = c("Serious adverse events up to 90 days of last dose are included.")
)
## -----------------------------------------------------------------------------
meta <- meta |>
define_analysis(
name = "ae_summary",
title = "Summary of Adverse Events"
)
## -----------------------------------------------------------------------------
meta <- meta |> meta_build()
## -----------------------------------------------------------------------------
meta$plan
## -----------------------------------------------------------------------------
meta
## -----------------------------------------------------------------------------
meta$plan <- meta$plan |>
mutate(
mockup = TRUE,
output_report = paste0("./tlf/mock-", analysis, ".rtf")
)
meta$plan
## -----------------------------------------------------------------------------
spec_call_program(meta,
data_source = "[adam-adsl; adae]"
)
## -----------------------------------------------------------------------------
ae_summary <- function(meta,
population,
observation,
parameter,
mockup,
output_report,
data_source,
...) {
# Identify parameter keywords
para_list <- unlist(strsplit(parameter, ";"))
# Row label
ae_label <- vapply(para_list,
FUN = function(x) {
collect_adam_mapping(meta, x)$label
},
FUN.VALUE = character(1)
)
# Get treatment grouping order
trt_order <- eval(collect_adam_mapping(meta, population)$group_order)
# Get the title/endnotes of TLF
title_text <- collect_title(
meta = meta,
population = population,
observation = observation,
parameter = parameter, analysis = "ae_summary"
)
title_text[2] <- "{Week}"
# Logic to create mockup table
if (mockup) {
# Generate RTF
x <- tibble::tibble(
ae_label = ae_label,
n_1 = rep("x", length(ae_label)),
n_2 = rep("x", length(ae_label)), # no display_total/CI
pct_1 = rep("x.xx", length(ae_label)),
pct_2 = rep("x.xx", length(ae_label))
) |>
dplyr::select(ae_label, n_1, pct_1, n_2, pct_2, everything()) |>
# r2rtf::rtf_title(rtf_mock_color(title_text)) |>
r2rtf::rtf_title(title_text) |>
r2rtf::rtf_colheader(paste0(" | ", paste(names(trt_order), collapse = " | "), " "),
col_rel_width = c(3, rep(2, length(trt_order)))
) |>
r2rtf::rtf_colheader(" | n | (%) | n | (%) ",
border_top = c("", rep("single", 2 * length(trt_order))),
border_bottom = "single",
border_left = c("single", rep(c("single", ""), length(trt_order))),
col_rel_width = c(3, rep(1, 2 * length(trt_order)))
) |>
r2rtf::rtf_body(
col_rel_width = c(3, rep(1, 2 * length(trt_order))),
border_left = c("single", rep(c("single", ""), length(trt_order))),
text_justification = c("l", rep("c", 2 * length(trt_order)))
) |>
r2rtf::rtf_source(data_source)
# Require r2rtf to use color
attr(x, "page")$use_color <- TRUE
# Save RTF to a path
if (!is.null(output_report)) {
x |>
r2rtf::rtf_encode() |>
r2rtf::write_rtf(output_report)
}
}
if (!mockup) {
# Logic to perform actual AE summary table.
# Omit here
}
output_report
}
## -----------------------------------------------------------------------------
meta_run(meta,
i = 1,
data_source = "[adam-adsl; adae]"
)
## ----eval = FALSE, echo=FALSE-------------------------------------------------
# # Convert RTF to PDF
# r2rtf:::rtf_convert_format(
# input = "tlf/mock-ae_summary.rtf",
# output_dir = "tlf/",
# format = "pdf"
# )
## ----out.width = "100%", out.height = "400px", echo = FALSE, fig.align = "center"----
knitr::include_graphics("tlf/mock-ae_summary.pdf")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.