arframe TFL Gallery
  1. Listings
  2. Laboratory Test Results Listing
  • Getting Started
    • Installation

  • Tables
    • Study Conduct
    • Enrollment by Country and Site

    • Study Population
    • Demographics Summary
    • Medical History
    • Prior Medication
    • Disposition Summary
    • Analysis Populations

    • Extent of Exposure
    • Concomitant Medications
    • Extent of Exposure

    • Safety
    • Adverse Events by System Organ Class and Preferred Term
    • AEs Related to Study Drug
    • Common Adverse Events
    • Adverse Events by Grade / Intensity
    • Overall Safety Summary
    • Adverse Events with Event Counts
    • Exposure-Adjusted Adverse Events
    • Adverse Events by Subgroup
    • Serious Adverse Events by SOC and PT
    • AEs Leading to Study Drug Discontinuation
    • Death Summary
    • Vital Signs
    • Laboratory Results - Chemistry
    • Laboratory Shift Table
    • Laboratory Worst Toxicity Grade
    • Laboratory Marked Abnormalities
    • Electrocardiogram Summary

    • Efficacy
    • Time to Event Summary
    • Best Overall Response

  • Listings
    • Adverse Event Listing
    • Demographic Characteristics Listing
    • Medical History Listing
    • Vital Signs Listing
    • Laboratory Test Results Listing
    • Concomitant Medications Listing

  • Figures
    • Kaplan-Meier Plot
    • Swimmer Plot
    • Waterfall Plot

On this page

  • Setup
  • arframe Pipeline
  • Rendered Listing
  1. Listings
  2. Laboratory Test Results Listing

Laboratory Test Results Listing

Subject-Level Laboratory Results

Setup

See Prerequisites for installation instructions.

library(arframe)
library(pharmaverseadam)
library(dplyr, warn.conflicts = FALSE)

arm_levels <- c("Placebo", "Xanomeline Low Dose", "Xanomeline High Dose")

chem_params <- c("ALT", "AST", "BILI", "CREAT")

lab_listing <- pharmaverseadam::adlb |>
  blank_to_na() |>
  filter(
    SAFFL == "Y",
    TRT01A %in% arm_levels,
    PARCAT1 == "CHEMISTRY",
    PARAMCD %in% chem_params
  ) |>
  mutate(
    TRT01A = factor(TRT01A, levels = arm_levels),
    AVAL_C = if_else(is.na(AVAL), NA_character_, sprintf("%.1f", AVAL)),
    BASE_C = if_else(is.na(BASE), NA_character_, sprintf("%.1f", BASE)),
    CHG_C  = if_else(is.na(CHG),  NA_character_, sprintf("%.1f", CHG))
  ) |>
  arrange(TRT01A, USUBJID, PARAMCD, AVISITN) |>
  slice_head(n = 200) |>
  select(
    TRT01A,
    USUBJID,
    PARAM,
    AVISIT,
    AVAL_C,
    BASE_C,
    CHG_C,
    ANRIND
  )

arframe Pipeline

lab_listing |>
  fr_table() |>
  fr_titles(
    "Listing 16.2.8",
    "Laboratory Test Results - Chemistry",
    "Safety Population"
  ) |>
  fr_cols(
    TRT01A  = fr_col(visible = FALSE),
    USUBJID = fr_col("Subject ID",         width = 1.2),
    PARAM   = fr_col("Parameter",          width = 2.4),
    AVISIT  = fr_col("Visit",              width = 1.5),
    AVAL_C  = fr_col("Result",             width = 1.0, align = "decimal"),
    BASE_C  = fr_col("Baseline",           width = 1.0, align = "decimal"),
    CHG_C   = fr_col("Change from\nBaseline", width = 1.1, align = "decimal"),
    ANRIND  = fr_col("Normal\nRange Flag", width = 1.0, align = "center")
  ) |>
  fr_header(bold = TRUE, align = "center") |>
  fr_rows(page_by = "TRT01A", sort_by = c("USUBJID", "PARAM", "AVISIT"), suppress = c("USUBJID", "PARAM")) |>
  fr_footnotes(
    "Safety Population: all randomised subjects who received at least one dose of study medication.",
    "Parameters: ALT = Alanine Aminotransferase, AST = Aspartate Aminotransferase, BILI = Bilirubin, CREAT = Creatinine.",
    "Result and Baseline are in original measurement units. Change from Baseline = Result minus Baseline.",
    "Normal Range Flag (ANRIND): HIGH = above upper limit of normal, LOW = below lower limit of normal, NORMAL = within range.",
    "First 200 records shown. Sorted by treatment arm, subject identifier, parameter, and visit."
  )

Rendered Listing

Pages are separated by treatment arm using page_by. Numeric columns use align = "decimal" for alignment on the decimal point. Values are pre-formatted to one decimal place in data preparation.

Listing 16.2.8
Laboratory Test Results - Chemistry
Safety Population
Placebo
Subject IDParameterVisitResultBaselineChange from
Baseline
Normal
Range Flag
01-701-1015Alanine Aminotransferase (U/L)Baseline 27.0 27.0NORMAL
POST-BASELINE LAST 23.0 27.0 -4.0NORMAL
POST-BASELINE MAXIMUM 41.0 27.0 14.0HIGH
POST-BASELINE MINIMUM 17.0 27.0-10.0NORMAL
Week 12 27.0 27.0 0.0NORMAL
Week 16 17.0 27.0-10.0NORMAL
Week 2 41.0 27.0 14.0HIGH
Week 20 21.0 27.0 -6.0NORMAL
Week 24 23.0 27.0 -4.0NORMAL
Week 26 23.0 27.0 -4.0NORMAL
Week 4 18.0 27.0 -9.0NORMAL
Week 6 26.0 27.0 -1.0NORMAL
Week 8 22.0 27.0 -5.0NORMAL
Aspartate Aminotransferase (U/L)Baseline 40.0 40.0HIGH
POST-BASELINE LAST 19.0 40.0-21.0NORMAL
POST-BASELINE MAXIMUM 33.0 40.0 -7.0NORMAL
POST-BASELINE MINIMUM 19.0 40.0-21.0NORMAL
Week 12 22.0 40.0-18.0NORMAL
Week 16 23.0 40.0-17.0NORMAL
Week 2 33.0 40.0 -7.0NORMAL
Week 20 19.0 40.0-21.0NORMAL
Week 24 23.0 40.0-17.0NORMAL
Week 26 19.0 40.0-21.0NORMAL
Week 4 21.0 40.0-19.0NORMAL
Week 6 26.0 40.0-14.0NORMAL
Week 8 21.0 40.0-19.0NORMAL
Bilirubin (umol/L)Baseline 10.3 10.3NORMAL
POST-BASELINE LAST 5.1 10.3 -5.1NORMAL
POST-BASELINE MAXIMUM 8.5 10.3 -1.7NORMAL
POST-BASELINE MINIMUM 5.1 10.3 -5.1NORMAL
Week 12 6.8 10.3 -3.4NORMAL
Week 16 6.8 10.3 -3.4NORMAL
Week 2 8.5 10.3 -1.7NORMAL
Week 20 6.8 10.3 -3.4NORMAL
Week 24 6.8 10.3 -3.4NORMAL
Week 26 5.1 10.3 -5.1NORMAL
Week 4 6.8 10.3 -3.4NORMAL
Week 6 5.1 10.3 -5.1NORMAL
Week 8 8.5 10.3 -1.7NORMAL
Creatinine (umol/L)Baseline 79.6 79.6NORMAL
POST-BASELINE LAST 88.4 79.6 8.8NORMAL
POST-BASELINE MAXIMUM 88.4 79.6 8.8NORMAL
POST-BASELINE MINIMUM 70.7 79.6 -8.8NORMAL
Week 12 79.6 79.6 0.0NORMAL
Week 16 88.4 79.6 8.8NORMAL
Week 2 88.4 79.6 8.8NORMAL
Week 20 79.6 79.6 0.0NORMAL
Week 24 79.6 79.6 0.0NORMAL
Week 26 88.4 79.6 8.8NORMAL
Week 4 70.7 79.6 -8.8NORMAL
Week 6 88.4 79.6 8.8NORMAL
Week 8 88.4 79.6 8.8NORMAL
01-701-1023Alanine Aminotransferase (U/L)Baseline 23.0 23.0NORMAL
POST-BASELINE LAST 30.0 23.0 7.0NORMAL
POST-BASELINE MAXIMUM 30.0 23.0 7.0NORMAL
POST-BASELINE MINIMUM 30.0 23.0 7.0NORMAL
Week 2 30.0 23.0 7.0NORMAL
Week 4 38.0 23.0 15.0NORMAL
Aspartate Aminotransferase (U/L)Baseline 21.0 21.0NORMAL
POST-BASELINE LAST 25.0 21.0 4.0NORMAL
POST-BASELINE MAXIMUM 25.0 21.0 4.0NORMAL
POST-BASELINE MINIMUM 25.0 21.0 4.0NORMAL
Week 2 25.0 21.0 4.0NORMAL
Week 4 30.0 21.0 9.0NORMAL
Bilirubin (umol/L)Baseline 12.0 12.0NORMAL
POST-BASELINE LAST 6.8 12.0 -5.1NORMAL
POST-BASELINE MAXIMUM 6.8 12.0 -5.1NORMAL
POST-BASELINE MINIMUM 6.8 12.0 -5.1NORMAL
Week 2 6.8 12.0 -5.1NORMAL
Week 4 8.5 12.0 -3.4NORMAL
Creatinine (umol/L)Baseline123.8123.8NORMAL
POST-BASELINE LAST132.6123.8 8.8NORMAL
POST-BASELINE MAXIMUM132.6123.8 8.8NORMAL
POST-BASELINE MINIMUM132.6123.8 8.8NORMAL
Week 2132.6123.8 8.8NORMAL
Week 4114.9123.8 -8.8NORMAL
01-701-1047Alanine Aminotransferase (U/L)Baseline 22.0 22.0NORMAL
POST-BASELINE LAST 16.0 22.0 -6.0NORMAL
POST-BASELINE MAXIMUM 16.0 22.0 -6.0NORMAL
POST-BASELINE MINIMUM 16.0 22.0 -6.0NORMAL
Unscheduled 6.1 17.0 22.0 -5.0NORMAL
Week 2 16.0 22.0 -6.0NORMAL
Week 4 20.0 22.0 -2.0NORMAL
Aspartate Aminotransferase (U/L)Baseline 25.0 25.0NORMAL
POST-BASELINE LAST 21.0 25.0 -4.0NORMAL
POST-BASELINE MAXIMUM 21.0 25.0 -4.0NORMAL
POST-BASELINE MINIMUM 21.0 25.0 -4.0NORMAL
Unscheduled 6.1 21.0 25.0 -4.0NORMAL
Week 2 21.0 25.0 -4.0NORMAL
Week 4 24.0 25.0 -1.0NORMAL
Bilirubin (umol/L)Baseline 6.8 6.8NORMAL
POST-BASELINE LAST 8.5 6.8 1.7NORMAL
POST-BASELINE MAXIMUM 8.5 6.8 1.7NORMAL
POST-BASELINE MINIMUM 8.5 6.8 1.7NORMAL
Unscheduled 6.1 6.8 6.8 0.0NORMAL
Week 2 8.5 6.8 1.7NORMAL
Week 4 6.8 6.8 0.0NORMAL
Creatinine (umol/L)Baseline 88.4 88.4NORMAL
POST-BASELINE LAST 88.4 88.4 0.0NORMAL
POST-BASELINE MAXIMUM 88.4 88.4 0.0NORMAL
POST-BASELINE MINIMUM 88.4 88.4 0.0NORMAL
Unscheduled 6.1 88.4 88.4 0.0NORMAL
Week 2 88.4 88.4 0.0NORMAL
Week 4 79.6 88.4 -8.8NORMAL
01-701-1118Alanine Aminotransferase (U/L)Baseline 15.0 15.0NORMAL
POST-BASELINE LAST 10.0 15.0 -5.0NORMAL
POST-BASELINE MAXIMUM 16.0 15.0 1.0NORMAL
POST-BASELINE MINIMUM 7.0 15.0 -8.0NORMAL
Week 12 16.0 15.0 1.0NORMAL
Week 16 15.0 15.0 0.0NORMAL
Week 2 7.0 15.0 -8.0NORMAL
Week 20 13.0 15.0 -2.0NORMAL
Week 24 13.0 15.0 -2.0NORMAL
Week 26 10.0 15.0 -5.0NORMAL
Week 4 15.0 15.0 0.0NORMAL
Week 6 11.0 15.0 -4.0NORMAL
Week 8 15.0 15.0 0.0NORMAL
Aspartate Aminotransferase (U/L)Baseline 15.0 15.0NORMAL
POST-BASELINE LAST 12.0 15.0 -3.0NORMAL
POST-BASELINE MAXIMUM 18.0 15.0 3.0NORMAL
POST-BASELINE MINIMUM 11.0 15.0 -4.0NORMAL
Week 12 13.0 15.0 -2.0NORMAL
Week 16 18.0 15.0 3.0NORMAL
Week 2 13.0 15.0 -2.0NORMAL
Week 20 14.0 15.0 -1.0NORMAL
Week 24 11.0 15.0 -4.0NORMAL
Week 26 12.0 15.0 -3.0NORMAL
Week 4 14.0 15.0 -1.0NORMAL
Week 6 15.0 15.0 0.0NORMAL
Week 8 18.0 15.0 3.0NORMAL
Bilirubin (umol/L)Baseline 12.0 12.0NORMAL
POST-BASELINE LAST 8.5 12.0 -3.4NORMAL
POST-BASELINE MAXIMUM 10.3 12.0 -1.7NORMAL
POST-BASELINE MINIMUM 8.5 12.0 -3.4NORMAL
Week 12 8.5 12.0 -3.4NORMAL
Week 16 10.3 12.0 -1.7NORMAL
Week 2 8.5 12.0 -3.4NORMAL
Week 20 10.3 12.0 -1.7NORMAL
Week 24 8.5 12.0 -3.4NORMAL
Week 26 8.5 12.0 -3.4NORMAL
Week 4 10.3 12.0 -1.7NORMAL
Week 6 8.5 12.0 -3.4NORMAL
Week 8 10.3 12.0 -1.7NORMAL
Creatinine (umol/L)Baseline 88.4 88.4NORMAL
POST-BASELINE LAST 97.2 88.4 8.8NORMAL
POST-BASELINE MAXIMUM106.1 88.4 17.7NORMAL
POST-BASELINE MINIMUM 88.4 88.4 0.0NORMAL
Week 12106.1 88.4 17.7NORMAL
Week 16 97.2 88.4 8.8NORMAL
Week 2 88.4 88.4 0.0NORMAL
Week 20106.1 88.4 17.7NORMAL
Week 24 97.2 88.4 8.8NORMAL
Week 26 97.2 88.4 8.8NORMAL
Week 4106.1 88.4 17.7NORMAL
Week 6 97.2 88.4 8.8NORMAL
Week 8 88.4 88.4 0.0NORMAL
01-701-1130Alanine Aminotransferase (U/L)Baseline 15.0 15.0NORMAL
POST-BASELINE LAST 10.0 15.0 -5.0NORMAL
POST-BASELINE MAXIMUM 18.0 15.0 3.0NORMAL
POST-BASELINE MINIMUM 10.0 15.0 -5.0NORMAL
Week 12 13.0 15.0 -2.0NORMAL
Week 16 12.0 15.0 -3.0NORMAL
Week 2 14.0 15.0 -1.0NORMAL
Week 20 11.0 15.0 -4.0NORMAL
Week 24 13.0 15.0 -2.0NORMAL
Week 26 10.0 15.0 -5.0NORMAL
Week 4 18.0 15.0 3.0NORMAL
Week 6 13.0 15.0 -2.0NORMAL
Week 8 10.0 15.0 -5.0NORMAL
Aspartate Aminotransferase (U/L)Baseline 24.0 24.0NORMAL
POST-BASELINE LAST 19.0 24.0 -5.0NORMAL
POST-BASELINE MAXIMUM 26.0 24.0 2.0NORMAL
POST-BASELINE MINIMUM 18.0 24.0 -6.0NORMAL
Week 12 21.0 24.0 -3.0NORMAL
Week 16 19.0 24.0 -5.0NORMAL
Week 2 26.0 24.0 2.0NORMAL
Week 20 19.0 24.0 -5.0NORMAL
Week 24 22.0 24.0 -2.0NORMAL
Week 26 19.0 24.0 -5.0NORMAL
Week 4 25.0 24.0 1.0NORMAL
Week 6 19.0 24.0 -5.0NORMAL
Week 8 18.0 24.0 -6.0NORMAL
Bilirubin (umol/L)Baseline 8.5 8.5NORMAL
POST-BASELINE LAST 10.3 8.5 1.7NORMAL
POST-BASELINE MAXIMUM 12.0 8.5 3.4NORMAL
POST-BASELINE MINIMUM 5.1 8.5 -3.4NORMAL
Week 12 8.5 8.5 0.0NORMAL
Week 16 10.3 8.5 1.7NORMAL
Week 2 10.3 8.5 1.7NORMAL
Week 20 6.8 8.5 -1.7NORMAL
Week 24 12.0 8.5 3.4NORMAL
Week 26 10.3 8.5 1.7NORMAL
Week 4 5.1 8.5 -3.4NORMAL
Week 6 6.8 8.5 -1.7NORMAL
Week 8 10.3 8.5 1.7NORMAL
Creatinine (umol/L)Baseline123.8123.8NORMAL
Week 2123.8123.8 0.0NORMAL
Week 4176.8123.8 53.0HIGH
Week 6123.8123.8 0.0NORMAL
Week 8114.9123.8 -8.8NORMAL
Safety Population: all randomised subjects who received at least one dose of study medication.
Parameters: ALT = Alanine Aminotransferase, AST = Aspartate Aminotransferase, BILI = Bilirubin, CREAT = Creatinine.
Result and Baseline are in original measurement units. Change from Baseline = Result minus Baseline.
Normal Range Flag (ANRIND): HIGH = above upper limit of normal, LOW = below lower limit of normal, NORMAL = within range.
First 200 records shown. Sorted by treatment arm, subject identifier, parameter, and visit.
/opt/quarto/share/rmd/rmd.R 01APR2026 09:50:59
Source Code
---
title: "Laboratory Test Results Listing"
subtitle: "Subject-Level Laboratory Results"
execute:
  echo: true
  eval: true
---


```{r}
#| label: prereqs
#| include: false
library(arframe)
fr_theme(hlines = "header", font_family = "Courier New")

blank_to_na <- function(df) {
  df[] <- lapply(df, function(x) {
    if (is.character(x)) x[x == ""] <- NA_character_
    x
  })
  df
}
```

## Setup

See [Prerequisites](../install.qmd) for installation instructions.

```{r}
#| label: setup
library(arframe)
library(pharmaverseadam)
library(dplyr, warn.conflicts = FALSE)

arm_levels <- c("Placebo", "Xanomeline Low Dose", "Xanomeline High Dose")

chem_params <- c("ALT", "AST", "BILI", "CREAT")

lab_listing <- pharmaverseadam::adlb |>
  blank_to_na() |>
  filter(
    SAFFL == "Y",
    TRT01A %in% arm_levels,
    PARCAT1 == "CHEMISTRY",
    PARAMCD %in% chem_params
  ) |>
  mutate(
    TRT01A = factor(TRT01A, levels = arm_levels),
    AVAL_C = if_else(is.na(AVAL), NA_character_, sprintf("%.1f", AVAL)),
    BASE_C = if_else(is.na(BASE), NA_character_, sprintf("%.1f", BASE)),
    CHG_C  = if_else(is.na(CHG),  NA_character_, sprintf("%.1f", CHG))
  ) |>
  arrange(TRT01A, USUBJID, PARAMCD, AVISITN) |>
  slice_head(n = 200) |>
  select(
    TRT01A,
    USUBJID,
    PARAM,
    AVISIT,
    AVAL_C,
    BASE_C,
    CHG_C,
    ANRIND
  )
```


## arframe Pipeline

```{r}
#| label: pipeline
#| eval: false
lab_listing |>
  fr_table() |>
  fr_titles(
    "Listing 16.2.8",
    "Laboratory Test Results - Chemistry",
    "Safety Population"
  ) |>
  fr_cols(
    TRT01A  = fr_col(visible = FALSE),
    USUBJID = fr_col("Subject ID",         width = 1.2),
    PARAM   = fr_col("Parameter",          width = 2.4),
    AVISIT  = fr_col("Visit",              width = 1.5),
    AVAL_C  = fr_col("Result",             width = 1.0, align = "decimal"),
    BASE_C  = fr_col("Baseline",           width = 1.0, align = "decimal"),
    CHG_C   = fr_col("Change from\nBaseline", width = 1.1, align = "decimal"),
    ANRIND  = fr_col("Normal\nRange Flag", width = 1.0, align = "center")
  ) |>
  fr_header(bold = TRUE, align = "center") |>
  fr_rows(page_by = "TRT01A", sort_by = c("USUBJID", "PARAM", "AVISIT"), suppress = c("USUBJID", "PARAM")) |>
  fr_footnotes(
    "Safety Population: all randomised subjects who received at least one dose of study medication.",
    "Parameters: ALT = Alanine Aminotransferase, AST = Aspartate Aminotransferase, BILI = Bilirubin, CREAT = Creatinine.",
    "Result and Baseline are in original measurement units. Change from Baseline = Result minus Baseline.",
    "Normal Range Flag (ANRIND): HIGH = above upper limit of normal, LOW = below lower limit of normal, NORMAL = within range.",
    "First 200 records shown. Sorted by treatment arm, subject identifier, parameter, and visit."
  )
```


## Rendered Listing

Pages are separated by treatment arm using `page_by`. Numeric columns use `align = "decimal"` for alignment on the decimal point. Values are pre-formatted to one decimal place in data preparation.

```{r}
#| label: lab-listing
#| echo: false
#| ref.label: pipeline
```

Open-source TFL reference collection

 

CDISC Pilot Study (CDISCPILOT01) • pharmaverseadam datasets