---
title: LSICM01
subtitle: Listing of Medications
---
------------------------------------------------------------------------
{{< 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: lsicm01.R
# Prep environment
library(envsetup)
library(tern)
library(dplyr)
library(tidyr)
library(rtables)
library(rlistings)
library(junco)
# Define script level parameters
tblid <- "LSICM01"
fileid <- tblid
popfl <- "SAFFL"
trtvar <- "TRT01A"
key_cols <- c("COL0", "COL1")
disp_cols <- paste0("COL", 0:11)
concat_sep <- " / "
tab_titles <- get_titles_from_file(input_path = '../../_data/', tblid)
string_map <- default_str_map
# Process data
adcm <- pharmaverseadamjnj::adcm %>%
filter(
!!rlang::sym(popfl) == "Y" &
((CMPRESP == "Y" & CMOCCUR == "Y") |
(is.na(CMPRESP)))
)
lsting <- adcm %>%
# Update CQzzNAM variabes based on study requirements
unite(
"CQNAM",
CQ01NAM,
CQ02NAM,
CQ03NAM,
CQ04NAM,
CQ05NAM,
CQ06NAM,
CQ07NAM,
sep = ", ",
na.rm = TRUE,
remove = FALSE
) %>%
mutate(across(
c(CMLVL1:CMLVL4, CMTRT, CMDECOD, CMDOSFRQ, CMROUTE, CMINDCSP),
~ ifelse(. == "", "-", as.character(.))
)) %>%
mutate(
CMSTDT = as.Date(CMSTDTC, format = "%Y-%m-%d"),
CMSTYR = ifelse(
stringr::str_length(sub("T.*", "", CMSTDTC)) >= 4 &
substr(sub("T.*", "", CMSTDTC), 1, 4) != "----",
substr(sub("T.*", "", CMSTDTC), 1, 4),
NA
),
CMSTMO = month.abb[as.numeric(ifelse(
stringr::str_length(sub("T.*", "", CMSTDTC)) >= 7 &
substr(
sub("T.*", "", CMSTDTC),
6,
7
) !=
"--",
substr(sub("T.*", "", CMSTDTC), 6, 7),
NA
))],
CMSTDAY = ifelse(
stringr::str_length(sub("T.*", "", CMSTDTC)) >= 10 &
substr(sub("T.*", "", CMSTDTC), 9, 10) != "--",
substr(sub("T.*", "", CMSTDTC), 9, 10),
NA
),
CMSTDY = ifelse(CMSTDT > TRTSDT, CMSTDT - TRTSDT + 1, CMSTDT - TRTSDT),
CMSTDYL = explicit_na(as.character(CMSTDY), ""),
CMENDT = as.Date(CMENDTC, format = "%Y-%m-%d"),
CMENYR = ifelse(
stringr::str_length(sub("T.*", "", CMENDTC)) >= 4 &
substr(sub("T.*", "", CMENDTC), 1, 4) != "----",
substr(sub("T.*", "", CMENDTC), 1, 4),
NA
),
CMENMO = month.abb[
as.numeric(ifelse(
stringr::str_length(sub("T.*", "", CMENDTC)) >= 7 &
substr(sub("T.*", "", CMENDTC), 6, 7) != "--",
substr(sub("T.*", "", CMENDTC), 6, 7),
NA
))
],
CMENDAY = ifelse(
stringr::str_length(sub("T.*", "", CMENDTC)) >= 10 &
substr(sub("T.*", "", CMENDTC), 9, 10) != "--",
substr(sub("T.*", "", CMENDTC), 9, 10),
NA
),
CMENDY = ifelse(CMENDT > TRTSDT, CMENDT - TRTSDT + 1, CMENDT - TRTSDT),
CMENDYL = explicit_na(as.character(CMENDY), ""),
PREFLL = ifelse(is.na(PREFL), NA, "P"),
ONTRTFLL = ifelse(is.na(ONTRTFL), NA, "C"),
FUPFLL = ifelse(is.na(FUPFL), NA, "F")
) %>%
unite(
"CMSTDTL",
CMSTDAY,
CMSTMO,
CMSTYR,
sep = "",
na.rm = TRUE,
remove = FALSE
) %>%
unite(
"CMENDTL",
CMENDAY,
CMENMO,
CMENYR,
sep = "",
na.rm = TRUE,
remove = FALSE
) %>%
unite(
"POF",
PREFLL,
ONTRTFLL,
FUPFLL,
sep = ";",
na.rm = TRUE,
remove = FALSE
) %>%
mutate(
STDATE = case_when(
CMSTDTL != "" & CMSTDYL != "" ~
paste0(toupper(CMSTDTL), " (", CMSTDYL, ")"),
CMSTDTL != "" & CMSTDYL == "" ~
paste0(toupper(CMSTDTL), ""),
TRUE ~ ""
),
ENDATE = case_when(
CMENDTL != "" & CMENDYL != "" ~
paste0(toupper(CMENDTL), " (", CMENDYL, ")"),
CMENDTL != "" & CMENDYL == "" ~
paste0(toupper(CMENDTL), ""),
CMENDTL == "" & CMENRF == "AFTER" ~ "Ongoing",
TRUE ~ ""
),
DOSEU = case_when(
(!is.na(CMDOSE)) ~ paste(CMDOSE, CMDOSU, " "),
is.na(CMDOSE) & !is.na(CMDOSTXT) ~ paste(CMDOSTXT, CMDOSU, " "),
is.na(CMDOSE) & is.na(CMDOSTXT) ~ ""
),
COL0 = explicit_na(.data[[trtvar]], ""),
COL1 = explicit_na(USUBJID, ""),
# Optional Variable: CMDECOD/CMBASPRF
COL2 = paste(
stringr::str_to_sentence(CMTRT),
stringr::str_to_sentence(CMDECOD),
sep = concat_sep
),
COL3 = explicit_na(POF, ""),
# Optional Column: COL4/CQzzNAM
COL4 = explicit_na(CQNAM, ""),
# Optional Variable: CMLVL1/CMLVL2/CMLVL3/CMLVL4
COL5 = paste(
stringr::str_to_sentence(CMLVL1),
stringr::str_to_sentence(CMLVL2),
sep = concat_sep
),
COL6 = explicit_na(STDATE, ""),
COL7 = explicit_na(ENDATE, ""),
COL8 = explicit_na(DOSEU, ""),
COL9 = explicit_na(CMDOSFRQ, ""),
# Optional Column: COL10/CMROUTE
COL10 = explicit_na(stringr::str_to_sentence(CMROUTE), ""),
COL11 = explicit_na(CMINDCSP, "")
) %>%
arrange(COL0, COL1, ASTDT)
lsting <- var_relabel(
lsting,
COL0 = "Treatment Group",
COL1 = "Subject ID",
# Optional Variable: CMDECOD/CMBASPRF
# COL2 = paste("Medication (Verbatim)",
# "Standardized Medication Name",
# sep = concat_sep),
COL2 = paste(
"Medication (Verbatim)",
"Base Preferred Term",
sep = concat_sep
),
COL3 = paste("Prior", "Concomitant", sep = concat_sep),
# Optional Column: COL4/CQzzNAM
COL4 = "Interest Category",
# Optional Variable: CMLVL1/CMLVL2/CMLVL3/CMLVL4
COL5 = paste("ATC Level 1", "ATC Level 2", sep = concat_sep),
COL6 = "Start Date of Medication (Study Day~[super a])",
COL7 = "End Date of Medication (Study Day~[super a])",
COL8 = "Dose (Unit)",
COL9 = "Frequency",
# Optional Column: COL10/CMROUTE
COL10 = "Route",
COL11 = "Indication:Specify"
)
# 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')`)
::::