library(dplyr)
library(tibble)
library(lubridate)
library(admiral)
# ensure that `date_source()` from admiralonco is used to avoid deprecation
# warning
unloadNamespace("admiralonco")
library(admiralonco)
# Create ADSL dataset
adsl <- tribble(
~USUBJID, ~TRTSDTC,
"1", "2020-01-01",
"2", "2019-12-12",
"3", "2019-11-11",
"4", "2019-12-30",
"5", "2020-01-01",
"6", "2020-02-02",
"7", "2020-02-02",
"8", "2020-04-01"
) %>%
mutate(
TRTSDT = ymd(TRTSDTC),
STUDYID = "XX1234"
)
# Create ADRS dataset
ovr_obs <- tribble(
~USUBJID, ~ADTC, ~AVALC, ~ANL01FL,
"1", "2020-01-01", "PR", "Y",
"1", "2020-02-01", "CR", "Y",
"1", "2020-02-16", "NE", "Y",
"1", "2020-03-01", "CR", "Y",
"1", "2020-04-01", "SD", "Y",
"2", "2020-01-01", "SD", "Y",
"2", "2020-02-01", "PR", "Y",
"2", "2020-03-01", "SD", "Y",
"2", "2020-03-13", "CR", "Y",
"3", "2019-11-12", "CR", "Y",
"3", "2019-12-02", "CR", "Y",
"3", "2020-01-01", "SD", "Y",
"4", "2020-01-01", "PR", "Y",
"4", "2020-03-01", "SD", "N",
"4", "2020-04-01", "SD", "Y",
"4", "2020-05-01", "PR", "Y",
"4", "2020-05-15", "NON-CR/NON-PD", "Y",
"5", "2020-01-01", "PR", "Y",
"5", "2020-01-10", "SD", "Y",
"5", "2020-01-20", "PR", "Y",
"5", "2020-05-15", "NON-CR/NON-PD", "Y",
"6", "2020-02-06", "PR", "Y",
"6", "2020-02-16", "CR", "Y",
"6", "2020-03-30", "PR", "Y",
"6", "2020-04-12", "PD", "Y",
"6", "2020-05-01", "CR", "Y",
"6", "2020-06-01", "CR", "Y",
"7", "2020-02-06", "PR", "Y",
"7", "2020-02-16", "CR", "Y",
"7", "2020-04-01", "NE", "N"
) %>%
mutate(PARAMCD = "OVR")
pd_obs <-
bind_rows(tribble(
~USUBJID, ~ADTC, ~AVALC,
"2", "2020-03-01", "Y",
"4", "2020-02-01", "Y"
) %>%
mutate(PARAMCD = "PD"))
adrs <- bind_rows(ovr_obs, pd_obs) %>%
mutate(
ADT = ymd(ADTC),
STUDYID = "XX1234"
) %>%
select(-ADTC) %>%
derive_vars_merged(
dataset_add = adsl,
by_vars = exprs(STUDYID, USUBJID),
new_vars = exprs(TRTSDT)
)
pd_date <- date_source(
dataset_name = "adrs",
date = ADT,
filter = PARAMCD == "PD"
)
aval_fun_pass <- function(arg) {
case_when(
arg == "CR" ~ 11,
arg == "PR" ~ 22,
arg == "SD" ~ 33,
arg == "NON-CR/NON-PD" ~ 44,
arg == "PD" ~ 55,
arg == "NE" ~ 66,
arg == "MISSING" ~ 77,
TRUE ~ NA_real_
)
}
# Derive best overall response parameter
derive_param_bor(
adrs,
dataset_adsl = adsl,
filter_source = PARAMCD == "OVR" & ANL01FL == "Y",
source_pd = pd_date,
source_datasets = list(adrs = adrs),
reference_date = TRTSDT,
ref_start_window = 28,
set_values_to = exprs(
PARAMCD = "BOR",
PARAM = "Best Overall Response",
AVAL = aval_fun_pass(AVALC)
)
) %>%
filter(PARAMCD == "BOR")
Run the code above in your browser using DataLab