TL Catalog
  1. Listings
  2. Electrocardiograms
  3. LSFECG02
  • Introduction

  • Index

  • Tables
    • Adverse Events
      • TSFAE01A
      • TSFAE01B
      • TSFAE02
      • TSFAE02A
      • TSFAE03
      • TSFAE03A
      • TSFAE04
      • TSFAE04A
      • TSFAE05
      • TSFAE05A
      • TSFAE06A
      • TSFAE06B
      • TSFAE07A
      • TSFAE07B
      • TSFAE08
      • TSFAE09
      • TSFAE10
      • TSFAE11
      • TSFAE12
      • TSFAE13
      • TSFAE14
      • TSFAE15
      • TSFAE16
      • TSFAE17A
      • TSFAE17B
      • TSFAE17C
      • TSFAE17D
      • TSFAE19A
      • TSFAE19B
      • TSFAE19C
      • TSFAE19D
      • TSFAE20A
      • TSFAE20B
      • TSFAE20C
      • TSFAE21A
      • TSFAE21B
      • TSFAE21C
      • TSFAE21D
      • TSFAE22A
      • TSFAE22B
      • TSFAE22C
      • TSFAE23A
      • TSFAE23B
      • TSFAE23C
      • TSFAE23D
      • TSFAE24A
      • TSFAE24B
      • TSFAE24C
      • TSFAE24D
      • TSFAE24F
      • TSFDTH01
    • Clinical Laboratory Evaluation
      • TSFLAB01
      • TSFLAB01A
      • TSFLAB02
      • TSFLAB02A
      • TSFLAB02B
      • TSFLAB03
      • TSFLAB03A
      • TSFLAB04A
      • TSFLAB04B
      • TSFLAB05
      • TSFLAB06
      • TSFLAB07
    • Demographic
      • TSIDEM01
      • TSIDEM02
      • TSIMH01
    • Disposition of Subjects
      • TSIDS01
      • TSIDS02
      • TSIDS02A
    • Electrocardiograms
      • TSFECG01
      • TSFECG01A
      • TSFECG02
      • TSFECG03
      • TSFECG04
      • TSFECG05
    • Exposure
      • TSIEX01
      • TSIEX02
      • TSIEX03
      • TSIEX04
      • TSIEX06
      • TSIEX07
      • TSIEX08
      • TSIEX09
      • TSIEX10
      • TSIEX11
    • Pharmacokinetics
      • TPK01A
      • TPK01B
      • TPK02
      • TPK03
    • Prior and Concomitant Therapies
      • TSICM01
      • TSICM02
      • TSICM03
      • TSICM04
      • TSICM05
      • TSICM06
      • TSICM07
      • TSICM08
    • Vital Signs and Physical Findings
      • TSFVIT01
      • TSFVIT01A
      • TSFVIT02
      • TSFVIT03
      • TSFVIT04
      • TSFVIT05
      • TSFVIT06
  • Listings
    • Adverse Events
      • LSFAE01
      • LSFAE02
      • LSFAE03
      • LSFAE04
      • LSFAE05
      • LSFAE06A
      • LSFAE06B
      • LSFDTH01
    • Clinical Laboratory Evaluation
      • LSFLAB01
    • Demographic
      • LSIDEM01
      • LSIDEM02
      • LSIMH01
    • Disposition of Subjects
      • LSIDS01
      • LSIDS02
      • LSIDS03
      • LSIDS04
      • LSIDS05
    • Electrocardiograms
      • LSFECG01
      • LSFECG02
    • Exposure
      • LSIEX01
      • LSIEX02
      • LSIEX03
    • Prior and Concomitant Therapies
      • LSICM01
    • Vital Signs and Physical Findings
      • LSFVIT01
      • LSFVIT02

  • Reproducibility

  • Changelog

On this page

  • Output
  • Edit this page
  • Report an issue
  1. Listings
  2. Electrocardiograms
  3. LSFECG02

LSFECG02

Listing of ECG Values


Output

  • Preview
Code
# Program Name:              lsfecg02.R

# Prep environment

library(envsetup)
library(tern)
library(dplyr)
library(rtables)
library(rlistings)
library(junco)
library(tidytlg)

# Define script level parameters

tblid <- "LSFECG02"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
key_cols <- c("COL0", "COL1", "COL2", "COL3")
disp_cols <- paste0("COL", 0:9)
concat_sep <- " / "
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map

# Process data

adeg <- pharmaverseadamjnj::adeg %>%
  filter(!!rlang::sym(popfl) == "Y" & PARAMCD != "EGALL")

adeg_dig <- tidytlg:::make_precision_data(
  df = adeg,
  decimal = 4,
  precisionby = "PARAMCD",
  precisionon = "AVAL"
) %>%
  rename(c(VALDIGMAX = "decimal"))

adeg_list <- adeg %>%
  inner_join(adeg_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- adeg_list %>%
  mutate(
    AGE = explicit_na(as.character(AGE), ""),
    SEX = explicit_na(SEX, ""),
    RACE_DECODE = explicit_na(RACE_DECODE, ""),
    ADT = ifelse(
      nchar(as.character(ADT)) == 10,
      toupper(format(ADT, "%d%b%Y")),
      "---------"
    ),
    ATM = ifelse(!is.na(ADTM), substr(as.character(ADTM), 12, 16), "--:--"),
    ADYN = ifelse(!is.na(ADY), ADY, NA),
    ADY = ifelse(!is.na(ADY), ADY, "--"),
    VAL_RES = case_when(
      is.na(VALDIGMAX) & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 4, as_char = TRUE, na_char = NULL),
      !is.na(AVALC) ~ AVALC
    ),
    VAL_HL = case_when(
      !is.na(ANRIND) ~ substr(ANRIND, 1, 1),
      .default = NA
    ),
    VAL_CS = case_when(
      EGCLSIG == "Y" ~ "CS",
      EGCLSIG == "N" ~ "NCS",
      .default = NA
    ),
    VAL = case_when(
      !is.na(VAL_RES) & !is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & !is.na(VAL_HL) & is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & is.na(VAL_CS) ~ VAL_RES,
      .default = NA
    ),
    CRIT = case_when(
      (is.na(CRIT1) | CRIT1FL == "N") & (is.na(CRIT2) | CRIT2FL == "N") ~ "",
      !is.na(CRIT1) & CRIT1FL == "Y" ~ CRIT1,
      !is.na(CRIT2) & CRIT2FL == "Y" ~ CRIT2,
    ),
    COL0 = explicit_na(.data[[trtvar]], ""),
    COL1 = explicit_na(USUBJID, ""),
    COL2 = paste(AGE, SEX, RACE_DECODE, sep = concat_sep),
    COL3 = explicit_na(PARAM, ""),
    # Optional Variable: ATM
    COL4 = paste(ADT, concat_sep, ATM, " (", ADY, ")", sep = ""),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = explicit_na(VAL, ""),
    # Optional Column: COL8/CHG
    COL8 = case_when(
      is.na(CHG) ~ "",
      is.na(VALDIGMAX) & !is.na(AVAL) & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 4, as_char = TRUE, na_char = NULL)
    ),
    # Optional Column: COL9/CRITy
    COL9 = explicit_na(CRIT, "")
  ) %>%
  arrange(COL0, COL1, COL2, COL3, !is.na(ADYN), ADYN, ADTM)

lsting <- var_relabel(
  lsting,
  COL0 = "Treatment Group",
  COL1 = "Subject ID",
  COL2 = paste("Age (years)", "Sex", "Race", sep = concat_sep),
  COL3 = "ECG Parameter (unit)",
  # Optional Variable: ATM
  COL4 = paste(
    "Assessment Date",
    "Time (Study Day~[super a])",
    sep = concat_sep
  ),
  COL5 = "Visit",
  # Optional Column: COL6/ATPT
  COL6 = "Time Point",
  COL7 = "Result",
  # Optional Column: COL8/CHG
  COL8 = "Change from Baseline",
  # Optional Column: COL9/CRITy
  COL9 = "Criteria"
)

# Build listing

result <- rlistings::as_listing(
  df = lsting,
  key_cols = key_cols,
  disp_cols = disp_cols
)

# Add titles and footnotes

result <- set_titles(result, tab_titles)

# Output listing

tt_to_tlgrtf(string_map = string_map, tt = head(result, 100),
  file = fileid,
  orientation = "landscape"
)

LSFECG02: Listing of ECG Values; Safety Analysis Set (Study jjcs - core)

Treatment Group

Subject ID

Age (years) / Sex / Race

ECG Parameter (unit)

Assessment Date / Time (Study Daya)

Visit

Time Point

Result

Change from Baseline

Criteria

Xanomeline High Dose

01-701-1028

71 / M / Asian

ECG Mean Heart Rate (beats/min)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

38 N NCS

<50

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

195 N CS

157

>100

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

285 N CS

247

>100

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

499 N CS

461

>100

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

343 N CS

305

>100

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

309 N CS

271

>100

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

458 N CS

420

>100

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

19 N NCS

-19

<50

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

194 N CS

156

>100

Interpretation

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

ABNORMAL CS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

NORMAL

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

NORMAL

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

NORMAL

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

NORMAL

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

ABNORMAL CS

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

NORMAL

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

ABNORMAL CS

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

NORMAL

PR Interval, Aggregate (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

370 H CS

>200

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

363 H CS

-7

>200

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

98 H NCS

-272

<120

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

196 N NCS

-174

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

333 H CS

-37

>200

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

149 H NCS

-221

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

201 H CS

-169

>200

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

530 H CS

160

>200

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

596 H CS

226

>200

QRS Duration, Aggregate (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

241 N NCS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

179 N NCS

-62

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

520 N NCS

279

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

419 N NCS

178

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

493 N NCS

252

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

141 N NCS

-100

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

266 N NCS

25

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

184 N NCS

-57

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

592 N NCS

351

QT Interval, Corrected (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

230 H NCS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

278 H NCS

48

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

241 N NCS

11

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

215 L NCS

-15

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

337 H NCS

107

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

508 H CS

278

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

402 H NCS

172

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

332 H NCS

102

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

440 H NCS

210

QTcB Interval, Aggregate (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

319 H NCS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

367 H NCS

48

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

473 H NCS

154

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

423 H NCS

104

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

336 H NCS

17

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

393 H NCS

74

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

287 H NCS

-32

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

374 H NCS

55

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

348 H NCS

29

QTcF Interval, Aggregate (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

379 H NCS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

356 H NCS

-23

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

452 H NCS

73

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

300 N NCS

-79

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

303 H NCS

-76

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

269 H NCS

-110

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

352 H NCS

-27

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

261 H NCS

-118

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

348 H NCS

-31

RR Interval, Aggregate (msec)

19JUL2013 / 06:00 (1)

Baseline

BEFORE TREATMENT

53 L NCS

01AUG2013 / 06:00 (14)

Month 1

BEFORE TREATMENT

476 L NCS

423

14AUG2013 / 06:00 (27)

Month 3

BEFORE TREATMENT

498 L NCS

445

29AUG2013 / 06:00 (42)

Month 6

BEFORE TREATMENT

212 L NCS

159

10SEP2013 / 06:00 (54)

Month 9

BEFORE TREATMENT

469 L NCS

416

09OCT2013 / 06:00 (83)

Month 12

BEFORE TREATMENT

419 L NCS

366

06NOV2013 / 06:00 (111)

Month 15

BEFORE TREATMENT

54 L NCS

1

04DEC2013 / 06:00 (139)

Month 18

BEFORE TREATMENT

479 L NCS

426

06JAN2014 / 06:00 (172)

Month 24

BEFORE TREATMENT

137 L NCS

84

01-701-1034

77 / F / White

ECG Mean Heart Rate (beats/min)

01JUL2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

257 N CS

>100

15JUL2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

176 N CS

-81

>100

29JUL2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

385 N CS

128

>100

11AUG2014 / 06:00 (42)

Month 6

BEFORE TREATMENT

140 N CS

-117

>100

26AUG2014 / 06:00 (57)

Month 9

BEFORE TREATMENT

23 N NCS

-234

<50

25SEP2014 / 06:00 (87)

Month 12

BEFORE TREATMENT

465 N CS

208

>100

21OCT2014 / 06:00 (113)

Month 15

BEFORE TREATMENT

129 N CS

-128

>100

18NOV2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

164 N CS

-93

>100

17DEC2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

587 N CS

330

>100

Interpretation

01JUL2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

ABNORMAL CS

15JUL2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

NORMAL

29JUL2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

ABNORMAL NCS

11AUG2014 / 06:00 (42)

Month 6

BEFORE TREATMENT

ABNORMAL NCS

26AUG2014 / 06:00 (57)

Month 9

BEFORE TREATMENT

NORMAL

25SEP2014 / 06:00 (87)

Month 12

BEFORE TREATMENT

NORMAL

21OCT2014 / 06:00 (113)

Month 15

BEFORE TREATMENT

NORMAL

18NOV2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

NORMAL

17DEC2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

ABNORMAL NCS

PR Interval, Aggregate (msec)

01JUL2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

472 H CS

>200

15JUL2014 / 06:00 (15)

Month 1

BEFORE TREATMENT

68 H NCS

-404

<120

29JUL2014 / 06:00 (29)

Month 3

BEFORE TREATMENT

168 H NCS

-304

11AUG2014 / 06:00 (42)

Month 6

BEFORE TREATMENT

254 H CS

-218

>200

26AUG2014 / 06:00 (57)

Month 9

BEFORE TREATMENT

513 H CS

41

>200

25SEP2014 / 06:00 (87)

Month 12

BEFORE TREATMENT

273 H CS

-199

>200

21OCT2014 / 06:00 (113)

Month 15

BEFORE TREATMENT

137 H NCS

-335

18NOV2014 / 06:00 (141)

Month 18

BEFORE TREATMENT

512 H CS

40

>200

17DEC2014 / 06:00 (170)

Month 24

BEFORE TREATMENT

579 H CS

107

>200

QRS Duration, Aggregate (msec)

01JUL2014 / 06:00 (1)

Baseline

BEFORE TREATMENT

406 N NCS

a Study day is relative to [the start of [study treatment]].

[lsfecg02.docx][/usr/lib/rstudio-server/bin/quarto/share/rmd/rmd.R] 12JAN2026, 16:08

Download RTF file

LSFECG01
LSIEX01
Source Code
---
title: LSFECG02
subtitle: Listing of ECG Values
---

------------------------------------------------------------------------

{{< include ../../_utils/envir_hook.qmd >}}

```{r setup, echo = FALSE, warning = FALSE, message = FALSE}
options(docx.add_datetime = FALSE, tidytlg.add_datetime = FALSE)
envsetup_config_name <- "default"

# Path to the combined config file
envsetup_file_path <- file.path("../..", "envsetup.yml")

Sys.setenv(ENVSETUP_ENVIRON = '')
library(envsetup)
loaded_config <- config::get(config = envsetup_config_name, file = envsetup_file_path)
envsetup::rprofile(loaded_config)


dpscomp <- compound
dpspdr <- paste(protocol,dbrelease,rpteff,sep="__")

aptcomp <- compound
aptpdr <- paste(protocol,dbrelease,rpteff,sep="__")

###### Study specific updates (formerly in envre)

dpscomp <- "standards"
dpspdr <- "jjcs__NULL__jjcs - core"

apt <- FALSE
library(junco)
default_str_map <- rbind(default_str_map, c("&ctcae", "5.0"))

```

## Output

:::: panel-tabset
## {{< fa regular file-lines sm fw >}} Preview

```{r variant1, results='hide', warning = FALSE, message = FALSE}

# Program Name:              lsfecg02.R

# Prep environment

library(envsetup)
library(tern)
library(dplyr)
library(rtables)
library(rlistings)
library(junco)
library(tidytlg)

# Define script level parameters

tblid <- "LSFECG02"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
key_cols <- c("COL0", "COL1", "COL2", "COL3")
disp_cols <- paste0("COL", 0:9)
concat_sep <- " / "
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map

# Process data

adeg <- pharmaverseadamjnj::adeg %>%
  filter(!!rlang::sym(popfl) == "Y" & PARAMCD != "EGALL")

adeg_dig <- tidytlg:::make_precision_data(
  df = adeg,
  decimal = 4,
  precisionby = "PARAMCD",
  precisionon = "AVAL"
) %>%
  rename(c(VALDIGMAX = "decimal"))

adeg_list <- adeg %>%
  inner_join(adeg_dig, by = c("PARAMCD" = "PARAMCD"))

lsting <- adeg_list %>%
  mutate(
    AGE = explicit_na(as.character(AGE), ""),
    SEX = explicit_na(SEX, ""),
    RACE_DECODE = explicit_na(RACE_DECODE, ""),
    ADT = ifelse(
      nchar(as.character(ADT)) == 10,
      toupper(format(ADT, "%d%b%Y")),
      "---------"
    ),
    ATM = ifelse(!is.na(ADTM), substr(as.character(ADTM), 12, 16), "--:--"),
    ADYN = ifelse(!is.na(ADY), ADY, NA),
    ADY = ifelse(!is.na(ADY), ADY, "--"),
    VAL_RES = case_when(
      is.na(VALDIGMAX) & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(AVAL) ~
        tidytlg::roundSAS(AVAL, digits = 4, as_char = TRUE, na_char = NULL),
      !is.na(AVALC) ~ AVALC
    ),
    VAL_HL = case_when(
      !is.na(ANRIND) ~ substr(ANRIND, 1, 1),
      .default = NA
    ),
    VAL_CS = case_when(
      EGCLSIG == "Y" ~ "CS",
      EGCLSIG == "N" ~ "NCS",
      .default = NA
    ),
    VAL = case_when(
      !is.na(VAL_RES) & !is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & !is.na(VAL_HL) & is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_HL,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & !is.na(VAL_CS) ~ paste(
        VAL_RES,
        VAL_CS,
        sep = " "
      ),
      !is.na(VAL_RES) & is.na(VAL_HL) & is.na(VAL_CS) ~ VAL_RES,
      .default = NA
    ),
    CRIT = case_when(
      (is.na(CRIT1) | CRIT1FL == "N") & (is.na(CRIT2) | CRIT2FL == "N") ~ "",
      !is.na(CRIT1) & CRIT1FL == "Y" ~ CRIT1,
      !is.na(CRIT2) & CRIT2FL == "Y" ~ CRIT2,
    ),
    COL0 = explicit_na(.data[[trtvar]], ""),
    COL1 = explicit_na(USUBJID, ""),
    COL2 = paste(AGE, SEX, RACE_DECODE, sep = concat_sep),
    COL3 = explicit_na(PARAM, ""),
    # Optional Variable: ATM
    COL4 = paste(ADT, concat_sep, ATM, " (", ADY, ")", sep = ""),
    COL5 = explicit_na(AVISIT, ""),
    # Optional Column: COL6/ATPT
    COL6 = explicit_na(ATPT, ""),
    COL7 = explicit_na(VAL, ""),
    # Optional Column: COL8/CHG
    COL8 = case_when(
      is.na(CHG) ~ "",
      is.na(VALDIGMAX) & !is.na(AVAL) & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 0 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 0, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 1 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 1, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 2 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 2, as_char = TRUE, na_char = NULL),
      VALDIGMAX == 3 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 3, as_char = TRUE, na_char = NULL),
      VALDIGMAX >= 4 & !is.na(CHG) ~
        tidytlg::roundSAS(CHG, digits = 4, as_char = TRUE, na_char = NULL)
    ),
    # Optional Column: COL9/CRITy
    COL9 = explicit_na(CRIT, "")
  ) %>%
  arrange(COL0, COL1, COL2, COL3, !is.na(ADYN), ADYN, ADTM)

lsting <- var_relabel(
  lsting,
  COL0 = "Treatment Group",
  COL1 = "Subject ID",
  COL2 = paste("Age (years)", "Sex", "Race", sep = concat_sep),
  COL3 = "ECG Parameter (unit)",
  # Optional Variable: ATM
  COL4 = paste(
    "Assessment Date",
    "Time (Study Day~[super a])",
    sep = concat_sep
  ),
  COL5 = "Visit",
  # Optional Column: COL6/ATPT
  COL6 = "Time Point",
  COL7 = "Result",
  # Optional Column: COL8/CHG
  COL8 = "Change from Baseline",
  # Optional Column: COL9/CRITy
  COL9 = "Criteria"
)

# Build listing

result <- rlistings::as_listing(
  df = lsting,
  key_cols = key_cols,
  disp_cols = disp_cols
)

# Add titles and footnotes

result <- set_titles(result, tab_titles)

# Output listing

tt_to_tlgrtf(string_map = string_map, tt = head(result, 100),
  file = fileid,
  orientation = "landscape"
)
```
```{r result1, echo=FALSE, message=FALSE, warning=FALSE, test = list(result_v1 = "result")}
tt_to_flextable_j(head(result,100), tblid, string_map = string_map)
```

[Download RTF file](`r paste0(tolower(tblid), '.rtf')`)
::::

Made with ❤️ by the J&J Team

  • Edit this page
  • Report an issue
Cookie Preferences