Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
library(admiraldev)
## ----warning=FALSE, message=FALSE---------------------------------------------
library(dplyr)
library(admiral)
library(pharmaversesdtm)
library(admiraldev)
library(admiralophtha)
library(stringr)
## -----------------------------------------------------------------------------
data("oe_ophtha")
data("admiral_adsl")
# Add STUDYEYE to ADSL to simulate an ophtha dataset
adsl <- admiral_adsl %>%
as.data.frame() %>%
mutate(STUDYEYE = sample(c("LEFT", "RIGHT"), n(), replace = TRUE)) %>%
convert_blanks_to_na()
oe <- convert_blanks_to_na(oe_ophtha)
# Lookup table
# nolint start
param_lookup <- tibble::tribble(
~OETESTCD, ~OECAT, ~OESCAT, ~AFEYE, ~PARAMCD, ~PARAM, ~PARAMN,
"CSUBTH", "OPHTHALMIC ASSESSMENTS", "SD-OCT CST SINGLE FORM", "Study Eye", "SCSUBTH", "Study Eye Center Subfield Thickness (um)", 1,
"CSUBTH", "OPHTHALMIC ASSESSMENTS", "SD-OCT CST SINGLE FORM", "Fellow Eye", "FCSUBTH", "Fellow Eye Center Subfield Thickness (um)", 2,
"DRSSR", "OPHTHALMIC ASSESSMENTS", "SD-OCT CST SINGLE FORM", "Study Eye", "SDRSSR", "Study Eye Diabetic Retinopathy Severity", 3,
"DRSSR", "OPHTHALMIC ASSESSMENTS", "SD-OCT CST SINGLE FORM", "Fellow Eye", "FDRSSR", "Fellow Eye Diabetic Retinopathy Severity", 4,
"IOP", "INTRAOCULAR PRESSURE", NA_character_, "Study Eye", "SIOP", "Study Eye IOP (mmHg)", 5,
"IOP", "INTRAOCULAR PRESSURE", NA_character_, "Fellow Eye", "FIOP", "Fellow Eye IOP (mmHg)", 6
)
# nolint end
## -----------------------------------------------------------------------------
adsl_vars <- exprs(TRTSDT, TRTEDT, TRT01A, TRT01P, STUDYEYE)
adoe <- oe %>%
filter(
OETESTCD %in% c("CSUBTH", "DRSSR", "IOP")
) %>%
derive_vars_merged(
dataset_add = adsl,
new_vars = adsl_vars,
by_vars = get_admiral_option("subject_keys")
)
## -----------------------------------------------------------------------------
adoe <- adoe %>%
# Calculate AVAL, AVALC, AVALU and DTYPE
mutate(
AVAL = OESTRESN,
AVALC = OESTRESC,
AVALU = OESTRESU,
DTYPE = NA_character_
) %>%
# Derive AFEYE needed for PARAMCD derivation
derive_var_afeye(loc_var = OELOC, lat_var = OELAT, loc_vals = c("EYE", "RETINA"))
## -----------------------------------------------------------------------------
adoe <- adoe %>%
# Add PARAM, PARAMCD from lookup table
derive_vars_merged(
dataset_add = param_lookup,
new_vars = exprs(PARAM, PARAMCD),
by_vars = exprs(OETESTCD, AFEYE)
) %>%
# Derive visit, baseline flag info and BASETYPE
mutate(
ATPTN = OETPTNUM,
ATPT = OETPT,
AVISIT = case_when(
str_detect(VISIT, "SCREEN") ~ "Screening",
!is.na(VISIT) ~ str_to_title(VISIT),
TRUE ~ NA_character_
),
AVISITN = round(VISITNUM, 0),
ABLFL = if_else(AVISIT == "Baseline", "Y", NA_character_)
# In actual studies, ABLFL derivation will likely be more nuanced
# and leverage derive_var_extreme_flag()
)
## -----------------------------------------------------------------------------
adoe <- adoe %>%
# Add derived parameter for difference between pre and post dose IOP
call_derivation(
derivation = derive_param_computed,
by_vars = c(get_admiral_option("subject_keys"), !!adsl_vars, exprs(AVISIT, AVISITN)),
variable_params = list(
# Study eye
params(
parameters = exprs(
SIOPPRE = PARAMCD == "SIOP" & ATPT == "PRE-DOSE",
SIOPPOST = PARAMCD == "SIOP" & ATPT == "POST-DOSE"
),
set_values_to = exprs(
PARAMCD = "SIOPCHG",
PARAM = "Study Eye IOP Pre to Post Dose Diff (mmHg)",
PARAMN = 9,
AVAL = AVAL.SIOPPOST - AVAL.SIOPPRE,
AVALC = as.character(AVAL)
)
),
# Fellow eye
params(
parameters = exprs(
FIOPPRE = PARAMCD == "FIOP" & ATPT == "PRE-DOSE",
FIOPPOST = PARAMCD == "FIOP" & ATPT == "POST-DOSE"
),
set_values_to = exprs(
PARAMCD = "FIOPCHG",
PARAM = "Fellow Eye IOP Pre to Post Dose Diff (mmHg)",
PARAMN = 10,
AVAL = AVAL.FIOPPOST - AVAL.FIOPPRE,
AVALC = as.character(AVAL)
)
)
)
)
## ----eval=TRUE, echo=FALSE----------------------------------------------------
dataset_vignette(
adoe %>% arrange(USUBJID, AVISIT) %>% select(USUBJID, AVISIT, PARAMCD, AVAL),
display_vars = exprs(USUBJID, PARAMCD, AVISIT, AVAL),
filter = str_detect(PARAMCD, "IOP") & USUBJID == "01-701-1028" &
AVISIT %in% c("Baseline", "Week 4")
)
## -----------------------------------------------------------------------------
adoe <- adoe %>%
# Calculate BASE (do not derive for IOP change params)
restrict_derivation(
derivation = derive_var_base,
args = params(
by_vars = c(get_admiral_option("subject_keys"), exprs(PARAMCD, ATPT)),
source_var = AVAL,
new_var = BASE
),
filter = !PARAMCD %in% c("SIOPCHG", "FIOPCHG")
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.