---
title: PDT01
subtitle: Major Protocol Deviations
---
------------------------------------------------------------------------
{{< include ../../_utils/envir_hook.qmd >}}
```{r setup, echo = FALSE, warning = FALSE, message = FALSE}
library(dplyr)
library(tern)
adsl <- random.cdisc.data::cadsl
addv <- random.cdisc.data::caddv
# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels.
adsl <- df_explicit_na(adsl)
addv <- df_explicit_na(addv)
addv <- addv %>%
var_relabel(
DVDECOD = "Category",
DVTERM = "Description"
)
```
```{r include = FALSE}
webr_code_labels <- c("setup")
```
{{< include ../../_utils/webr_no_include.qmd >}}
## Output
:::: panel-tabset
## Standard Table
::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview
```{r variant1, test = list(result_v1 = "result")}
split_fun <- drop_split_levels
lyt <- basic_table(show_colcounts = TRUE) %>%
split_cols_by("ACTARM") %>%
analyze_num_patients(
vars = "USUBJID",
.stats = c("unique", "nonunique"),
.labels = c(
unique = "Total number of patients with at least one major protocol deviation",
nonunique = "Total number of major protocol deviations"
)
) %>%
split_rows_by(
"DVDECOD",
split_fun = split_fun,
label_pos = "topleft",
split_label = obj_label(addv$DVDECOD)
) %>%
count_occurrences(vars = "DVTERM") %>%
append_varlabels(addv, "DVTERM", indent = 1L)
result <- build_table(lyt = lyt, df = addv, alt_counts_df = adsl) %>%
prune_table() %>%
sort_at_path(path = c("DVDECOD", "*", "DVTERM"), scorefun = score_occurrences)
result
```
```{r include = FALSE}
webr_code_labels <- c("variant1")
```
{{< include ../../_utils/webr.qmd >}}
:::
## Data Setup
```{r setup}
#| code-fold: show
```
::::
{{< include ../../_utils/save_results.qmd >}}
## `teal` App
::: {.panel-tabset .nav-justified}
## {{< fa regular file-lines fa-sm fa-fw >}} Preview
```{r teal, opts.label = c("skip_if_testing", "app")}
library(teal.modules.clinical)
## Data reproducible code
data <- teal_data()
data <- within(data, {
ADSL <- random.cdisc.data::cadsl
ADDV <- random.cdisc.data::caddv
# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels.
ADSL <- df_explicit_na(ADSL)
ADDV <- df_explicit_na(ADDV)
})
datanames <- c("ADSL", "ADDV")
names(data) <- datanames
join_keys(data) <- default_cdisc_join_keys[datanames]
## Reusable Configuration For Modules
ADDV <- data[["ADDV"]]
## Setup App
app <- init(
data = data,
modules = modules(
tm_t_events(
label = "Major Protocol Deviations Table",
dataname = "ADDV",
arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
llt = choices_selected(
choices = variable_choices(ADDV, c("DVTERM")),
selected = c("DVTERM")
),
hlt = choices_selected(
choices = variable_choices(ADDV, c("DVDECOD")),
selected = "DVDECOD"
),
add_total = TRUE,
event_type = "major protocol deviation"
)
)
)
shinyApp(app$ui, app$server)
```
{{< include ../../_utils/shinylive.qmd >}}
:::
{{< include ../../repro.qmd >}}