Cardinal
  • Home
  • Template Catalog
  • About
  • Resources
  • Help
    • Getting Started
    • Report a Bug
    • FAQ

Subject Screening and Enrollment, Screening Population, Trials A and B

FDA Table 03

table
FDA
safety
disposition

FDA IG Shell

FDA IG example table shell

Programming Notes

Background and Instructions

The following enrollment populations are reflected in Table 3: Subject Screening and Enrollment below:

• Screened population (subjects screened): All subjects screened for entry into the trial.

• Screening failure population: All subjects who failed to meet inclusion/exclusion criteria.

• Enrolled population (subjects enrolled): All subjects who signed a consent form for participation in the trial.

• Randomized population (subjects randomized): All subjects randomized to a trial arm. Often referred to as the intent-to-treat population.

Customization

The review team may request a list of reasons for screen failure, such as “subject noncompliance,” “consent withdrawn,” “inclusion/exclusion criteria not met,” “other,” and/or a breakdown of “inclusion/exclusion criteria not met” and “other.” Understanding reasons for screen failure can be informative to assess the generalizability of the trial.

Output

  • Full Code
  • Table
  • ARD
Code
# FDA TABLE 03 ---------------------------------------------------------------
# Self-contained template. Run top-to-bottom to build the objects below.
# Used by tests via run_template() and published in the catalog.

library(dplyr)
library(cards)
library(gtsummary)

adsl <- pharmaverseadam::adsl

set.seed(1)
scrnfail_reas_lvls <- c(
  "Inclusion/exclusion criteria not met", "Subject noncompliance", "Consent withdrawn", "Other"
)
data <- adsl |>
  mutate(
    ENRLDT = RANDDT,
    ENRLFL = !is.na(ENRLDT),
    RANDFL = !is.na(RANDDT),
    SCRNFL = TRUE,
    SCRNFRS = NA_character_
  ) |>
  mutate( # set screen failure reasons for relevant observations.
    SCRNFRS = factor(
      replace(
        SCRNFRS,
        TRT01A == "Screen Failure",
        sample(scrnfail_reas_lvls, size = sum(TRT01A == "Screen Failure"), replace = TRUE)
      ),
      levels = scrnfail_reas_lvls
    )
  )

tbl_scrn <- tbl_summary(
  data = data,
  include = "SCRNFL",
  missing = "no",
  label = ~"Subjects screened"
)

tbl_scrnfrs <- tbl_hierarchical(
  data = data,
  denominator = adsl,
  id = USUBJID,
  variables = "SCRNFRS",
  label = list(..ard_hierarchical_overall.. = "Screening failures"),
  overall_row = TRUE
) |>
  modify_indent(columns = label, rows = row_type == "level", indent = 4L) |>
  modify_indent(columns = label, rows = variable == "SCRNFRS", indent = 8L)

tbl_enrl_rand <- tbl_summary(
  data = data,
  include = c("ENRLFL", "RANDFL"),
  missing = "no",
  label = list(ENRLFL = "Subjects enrolled", RANDFL = "Subjects randomized")
)

tbl <- list(tbl_scrn, tbl_scrnfrs, tbl_enrl_rand) |>
  tbl_stack() |>
  modify_header(label = "**Disposition**")


ard <- gtsummary::gather_ard(tbl)
Code
tbl
Disposition N = 3061
Subjects screened 306 (100%)
    Screening failures 52 (17%)
        Consent withdrawn 11 (3.6%)
        Inclusion/exclusion criteria not met 17 (5.6%)
        Other 7 (2.3%)
        Subject noncompliance 17 (5.6%)
Subjects enrolled 254 (83%)
Subjects randomized 254 (83%)
1 n (%)
Code
withr::local_options(width = 9999, tibble.print_max = Inf)
print(ard, columns = "all")
[[1]]
[[1]]$tbl_summary
# An ARD data frame: 11 × 10
   variable        variable_level context        stat_name stat_label     stat              fmt_fun warning error  gts_column
   <chr>           <list>         <chr>          <chr>     <chr>          <list>            <list>  <list>  <list> <chr>     
 1 SCRNFL          TRUE           tabulate_value n         n              306               <fn>    <NULL>  <NULL> stat_0    
 2 SCRNFL          TRUE           tabulate_value N         N              306               <fn>    <NULL>  <NULL> stat_0    
 3 SCRNFL          TRUE           tabulate_value p         %              1                 <fn>    <NULL>  <NULL> stat_0    
 4 SCRNFL          <NULL>         attributes     label     Variable Label Subjects screened <fn>    <NULL>  <NULL> <NA>      
 5 SCRNFL          <NULL>         attributes     class     Variable Class logical           <NULL>  <NULL>  <NULL> <NA>      
 6 SCRNFL          <NULL>         missing        N_obs     No. obs.       306               <fn>    <NULL>  <NULL> stat_0    
 7 SCRNFL          <NULL>         missing        N_miss    N Missing      0                 <fn>    <NULL>  <NULL> stat_0    
 8 SCRNFL          <NULL>         missing        N_nonmiss N Non-missing  306               <fn>    <NULL>  <NULL> stat_0    
 9 SCRNFL          <NULL>         missing        p_miss    % Missing      0                 <fn>    <NULL>  <NULL> stat_0    
10 SCRNFL          <NULL>         missing        p_nonmiss % Non-missing  1                 <fn>    <NULL>  <NULL> stat_0    
11 ..ard_total_n.. <NULL>         total_n        N         N              306               0       <NULL>  <NULL> <NA>      


[[2]]
[[2]]$tbl_hierarchical
# An ARD data frame: 16 × 11
   variable                     variable_level                       context      stat_name stat_label     stat stat_fmt fmt_fun warning error  gts_column
   <chr>                        <list>                               <chr>        <chr>     <chr>        <list> <list>   <list>  <list>  <list> <chr>     
 1 ..ard_hierarchical_overall.. TRUE                                 hierarchical n         n           52      52       <fn>    <NULL>  <NULL> stat_0    
 2 ..ard_hierarchical_overall.. TRUE                                 hierarchical N         N          306      306      <fn>    <NULL>  <NULL> stat_0    
 3 ..ard_hierarchical_overall.. TRUE                                 hierarchical p         %            0.170  17       <fn>    <NULL>  <NULL> stat_0    
 4 SCRNFRS                      Consent withdrawn                    hierarchical n         n           11      11       <fn>    <NULL>  <NULL> stat_0    
 5 SCRNFRS                      Consent withdrawn                    hierarchical N         N          306      306      <fn>    <NULL>  <NULL> stat_0    
 6 SCRNFRS                      Consent withdrawn                    hierarchical p         %            0.0359 3.6      <fn>    <NULL>  <NULL> stat_0    
 7 SCRNFRS                      Inclusion/exclusion criteria not met hierarchical n         n           17      17       <fn>    <NULL>  <NULL> stat_0    
 8 SCRNFRS                      Inclusion/exclusion criteria not met hierarchical N         N          306      306      <fn>    <NULL>  <NULL> stat_0    
 9 SCRNFRS                      Inclusion/exclusion criteria not met hierarchical p         %            0.0556 5.6      <fn>    <NULL>  <NULL> stat_0    
10 SCRNFRS                      Other                                hierarchical n         n            7      7        <fn>    <NULL>  <NULL> stat_0    
11 SCRNFRS                      Other                                hierarchical N         N          306      306      <fn>    <NULL>  <NULL> stat_0    
12 SCRNFRS                      Other                                hierarchical p         %            0.0229 2.3      <fn>    <NULL>  <NULL> stat_0    
13 SCRNFRS                      Subject noncompliance                hierarchical n         n           17      17       <fn>    <NULL>  <NULL> stat_0    
14 SCRNFRS                      Subject noncompliance                hierarchical N         N          306      306      <fn>    <NULL>  <NULL> stat_0    
15 SCRNFRS                      Subject noncompliance                hierarchical p         %            0.0556 5.6      <fn>    <NULL>  <NULL> stat_0    
16 ..ard_total_n..              <NULL>                               total_n      N         N          306      306      0       <NULL>  <NULL> <NA>      


[[3]]
[[3]]$tbl_summary
# An ARD data frame: 21 × 10
   variable        variable_level context        stat_name stat_label     stat                fmt_fun warning error  gts_column
   <chr>           <list>         <chr>          <chr>     <chr>          <list>              <list>  <list>  <list> <chr>     
 1 ENRLFL          TRUE           tabulate_value n         n              254                 <fn>    <NULL>  <NULL> stat_0    
 2 ENRLFL          TRUE           tabulate_value N         N              306                 <fn>    <NULL>  <NULL> stat_0    
 3 ENRLFL          TRUE           tabulate_value p         %              0.8300654           <fn>    <NULL>  <NULL> stat_0    
 4 RANDFL          TRUE           tabulate_value n         n              254                 <fn>    <NULL>  <NULL> stat_0    
 5 RANDFL          TRUE           tabulate_value N         N              306                 <fn>    <NULL>  <NULL> stat_0    
 6 RANDFL          TRUE           tabulate_value p         %              0.8300654           <fn>    <NULL>  <NULL> stat_0    
 7 ENRLFL          <NULL>         attributes     label     Variable Label Subjects enrolled   <fn>    <NULL>  <NULL> <NA>      
 8 ENRLFL          <NULL>         attributes     class     Variable Class logical             <NULL>  <NULL>  <NULL> <NA>      
 9 RANDFL          <NULL>         attributes     label     Variable Label Subjects randomized <fn>    <NULL>  <NULL> <NA>      
10 RANDFL          <NULL>         attributes     class     Variable Class logical             <NULL>  <NULL>  <NULL> <NA>      
11 ENRLFL          <NULL>         missing        N_obs     No. obs.       306                 <fn>    <NULL>  <NULL> stat_0    
12 ENRLFL          <NULL>         missing        N_miss    N Missing      0                   <fn>    <NULL>  <NULL> stat_0    
13 ENRLFL          <NULL>         missing        N_nonmiss N Non-missing  306                 <fn>    <NULL>  <NULL> stat_0    
14 ENRLFL          <NULL>         missing        p_miss    % Missing      0                   <fn>    <NULL>  <NULL> stat_0    
15 ENRLFL          <NULL>         missing        p_nonmiss % Non-missing  1                   <fn>    <NULL>  <NULL> stat_0    
16 RANDFL          <NULL>         missing        N_obs     No. obs.       306                 <fn>    <NULL>  <NULL> stat_0    
17 RANDFL          <NULL>         missing        N_miss    N Missing      0                   <fn>    <NULL>  <NULL> stat_0    
18 RANDFL          <NULL>         missing        N_nonmiss N Non-missing  306                 <fn>    <NULL>  <NULL> stat_0    
19 RANDFL          <NULL>         missing        p_miss    % Missing      0                   <fn>    <NULL>  <NULL> stat_0    
20 RANDFL          <NULL>         missing        p_nonmiss % Non-missing  1                   <fn>    <NULL>  <NULL> stat_0    
21 ..ard_total_n.. <NULL>         total_n        N         N              306                 0       <NULL>  <NULL> <NA>      
Source Code
---
title: Subject Screening and Enrollment, Screening Population, Trials A and B
subtitle: FDA Table 03
categories: [table, FDA, safety, disposition]
---

::::: columns

:::: {.column width="52%"}
### FDA IG Shell

![](ig_shell.png){fig-alt="FDA IG example table shell" .lightbox width=100%}

### Programming Notes

**Background and Instructions**

The following enrollment populations are reflected in Table 3: Subject Screening and Enrollment below:

•    Screened population (subjects screened): All subjects screened for entry into the trial.

•    Screening failure population: All subjects who failed to meet inclusion/exclusion criteria.

•    Enrolled population (subjects enrolled): All subjects who signed a consent form for participation in the trial.

•    Randomized population (subjects randomized): All subjects randomized to a trial arm. Often referred to as the intent-to-treat population.

**Customization**

The review team may request a list of reasons for screen failure, such as "subject noncompliance," "consent withdrawn," "inclusion/exclusion criteria not met," "other," and/or a breakdown of "inclusion/exclusion criteria not met" and "other." Understanding reasons for screen failure can be informative to assess the generalizability of the trial.

::::

:::: {.column width="4%"}
::::

:::: {.column width="44%"}
### Output

```{r out-result, echo=FALSE, fig.align='center', out.width='100%'}
knitr::include_graphics("result.png")
```

::::

:::::

::: panel-tabset
## Full Code

```{r fullcode, file="../../../inst/templates/fda-table_03.R", message=FALSE, warning=FALSE, results='hide'}
```

## Table

```{r tbl}
tbl
```

## ARD

```{r ard, message=FALSE, warning=FALSE}
withr::local_options(width = 9999, tibble.print_max = Inf)
print(ard, columns = "all")
```

:::
 
  • This website as well as code examples are licensed under the Apache License, Version 2.0.
Cookie Preferences