## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----echo=FALSE, out.width="100%", fig.align="center"-------------------------
if (file.exists("images/synadam_overview.png")) {
  knitr::include_graphics("images/synadam_overview.png")
}

## ----setup--------------------------------------------------------------------
library(synadam)

## ----prepare-sas-files, include=FALSE-----------------------------------------
# Convert sample CSVs to SAS format in a temp directory for the demo
temp_adam_dir <- file.path(tempdir(), "adam_data")
dir.create(temp_adam_dir, showWarnings = FALSE)
temp_output_dir <- file.path(tempdir(), "syn_output")

adsl <- read.csv(
  system.file("extdata", "adsl.csv", package = "synadam"),
  stringsAsFactors = FALSE
)
adlb <- read.csv(
  system.file("extdata", "adlb.csv", package = "synadam"),
  stringsAsFactors = FALSE
)
adae <- read.csv(
  system.file("extdata", "adae.csv", package = "synadam"),
  stringsAsFactors = FALSE
)

# Convert date columns
adsl$TRTSDT <- as.Date(adsl$TRTSDT)
adlb$ADT <- as.Date(adlb$ADT)
adae$ASTDT <- as.Date(adae$ASTDT)
adae$AENDT <- as.Date(adae$AENDT)

haven::write_sas(adsl, file.path(temp_adam_dir, "adsl.sas7bdat"))
haven::write_sas(adlb, file.path(temp_adam_dir, "adlb.sas7bdat"))
haven::write_sas(adae, file.path(temp_adam_dir, "adae.sas7bdat"))

## ----generate-config----------------------------------------------------------
yaml_path <- synadam::generate_study_config(
  adam_dir = temp_adam_dir,
  output_dir = temp_output_dir,
  seed = 42
)

## ----show-config--------------------------------------------------------------
cat(readLines(yaml_path), sep = "\n")

## ----simulate-study-----------------------------------------------------------
synadam::simulate_study(config_path = yaml_path)

## ----read-results-------------------------------------------------------------
list.files(temp_output_dir, pattern = "\\.rds$")

syn_adsl <- readRDS(file.path(temp_output_dir, "syn_adsl.rds"))
head(syn_adsl)

# Each dataset carries a version attribute for traceability
attr(syn_adsl, "synadam_version")

## ----individual-adsl----------------------------------------------------------
adsl_data <- synadam::read_sas7bdat(file.path(temp_adam_dir, "adsl.sas7bdat"))

# Glimpse: extract structural summary
adsl_summary <- synadam::glimpse_adsl(
  adsl = adsl_data,
  id_cols = c("USUBJID", "SUBJID"),
  treatment_cols = c("TRT01A", "TRT01AN"),
  flag_cols = c("SAFFL", "ITTFL", "EFFFL"),
  ordered_col_sets = list(c("REGION1", "REGION1N")),
  seed = 42
)

# Simulate: generate synthetic data
syn_adsl <- synadam::simulate_adsl(adsl_summary, seed = 42)
head(syn_adsl)

## ----split-glimpse-simulate---------------------------------------------------
study_summary_path <- file.path(temp_output_dir, "study_summary.rds")

# Phase 1: glimpse only. Requires the real SAS files.
synadam::glimpse_study(
  config_path        = yaml_path,
  study_summary_path = study_summary_path
)

# The study summary is one .rds with all summaries plus seed and version.
str(readRDS(study_summary_path), max.level = 2)

# Phase 2: simulate from the study summary. Does not need the SAS files.
split_output_dir <- file.path(tempdir(), "syn_output_split")
synadam::simulate_study_from_summary(
  study_summary_path = study_summary_path,
  output_dir         = split_output_dir
)

list.files(split_output_dir, pattern = "\\.rds$")

