library(qrcode)
library(magrittr)
knitr::opts_chunk$set(echo = FALSE,
                      warning = FALSE,
                      message = FALSE)
crf_day7_fid <- Sys.getenv("TIMCI_CRF_DAY7_FID")

if (!is.null(params$pii)) {

  pii <- params$pii
  raw_day7fu_data <- params$raw_day7fu_data
  raw_withdrawal_data <- params$raw_withdrawal_data

} else {

  rctls_pid <- Sys.getenv("TIMCI_RCTLS_PID")
  rctls_pp <- Sys.getenv("TIMCI_RCTLS_PP")

  ################
  # Set up ruODK #
  ################

  ruODK::ru_setup(
    svc = Sys.getenv("ODKC_SVC"),
    un = Sys.getenv("ODKC_UN"),
    pw = Sys.getenv("ODKC_PW"),
    tz = Sys.getenv("TZ"),
    verbose = TRUE # Can be switched to TRUE for demo or debugging
  )

  # List of projects visible with the credentials `ODKC_UN` and `ODKC_PW`
  odkc_project_list <- ruODK::project_list()$id

  wd_fid <- Sys.getenv("TIMCI_WD_FID")

  # RCT / LS environment variables
  crf_facility_fid <- Sys.getenv("TIMCI_CRF_FACILITY_FID")
  crf_day7_fid <- Sys.getenv("TIMCI_CRF_DAY7_FID")

  #######################
  # Load TIMCI ODK data #
  #######################

  # List of forms visible in the RCT / LS project
  rct_ls_form_list <- ruODK::form_list(pid = rctls_pid)$fid

  # Load facility data
  print("Load facility data")

  raw_facility_zip <- ruODK::submission_export(local_dir = tempdir(),
                                               pid = rctls_pid,
                                               fid = crf_facility_fid,
                                               pp = rctls_pp)
  raw_facility_data <- timci::extract_data_from_odk_zip(raw_facility_zip, paste0(crf_facility_fid,".csv"))
  facility_data <- timci::process_facility_data(raw_facility_data)
  pii <- timci::extract_enrolled_participants(facility_data)[[2]]

  #To do copy audit trail in folder
  # local_dir = file.path(mdb_dir, "facility_crf_media")

  # Load day 7 follow-up data
  print("Load day 7 follow-up data")
  raw_day7fu_data <- NULL
  if (crf_day7_fid %in% rct_ls_form_list) {
    raw_day7fu_zip <- ruODK::submission_export(local_dir = tempdir(),
                                               pid = rctls_pid,
                                               fid = crf_day7_fid,
                                               pp = rctls_pp,
                                               media = FALSE)
    raw_day7fu_data <- timci::extract_data_from_odk_zip(raw_day7fu_zip, paste0(crf_day7_fid,".csv"))
  }

  # Load widthdrawal data
  print("Load withdrawal data")
  raw_withdrawal_data <- NULL
  if (wd_fid %in% rct_ls_form_list) {
    raw_withdrawal_zip <- ruODK::submission_export(local_dir = tempdir(),
                                                   pid = rctls_pid,
                                                   fid = wd_fid,
                                                   pp = rctls_pp,
                                                   media = FALSE)
    raw_withdrawal_data <- timci::extract_data_from_odk_zip(raw_withdrawal_zip, paste0(wd_fid,".csv"))
  }

}
# Create `odk_external_files` folder if it does not exist
dir.create(file.path(params$qual1_dir, "odk_external_files"), showWarnings = FALSE)

cg_selection <- NULL
if (!is.null(raw_day7fu_data)) {
  if (nrow(raw_day7fu_data) > 0) {
    res <- timci::format_day7_data(raw_day7fu_data)
    day7fu_data <- res[[1]]

    cg_selection <- timci::generate_cg_log(pii, day7fu_data)
    tmp <- timci::export_df2xlsx(cg_selection, params$qual1_dir, "cg_idi_contact")
    tmp <- timci::export_df2csv(cg_selection, file.path(params$qual1_dir, "odk_external_files"), "cg_idi_contact")
  }
}
if (!is.null(cg_selection)) {

  for (i in 1:nrow(cg_selection)) {
    pid <- toString(cg_selection[i,'child_id'])
    png_file <- file.path(tempdir(), paste0(pid,".png"))
    png(png_file)
    qrcode::qr_code(pid)
    dev.off()
  }

  df <- cg_selection %>%
    dplyr::mutate(
      code = paste0('![](', file.path(tempdir(), paste0(cg_selection$child_id,".png")), ')', '{width=0.75in}')
      ) %>%
    dplyr::select('code', dplyr::everything())

  # Order columns
  df$cg_name <- paste0(df$cg_fs_name, " ", df$cg_ls_name)
  tmp <- timci::export_df2csv(df, file.path(params$qual1_dir, "odk_external_files"), "test")
  col_order <- c('code',
                 'child_id',
                 'cg_name',
                 'main_cg',
                 'phone_nb')
  df <- df[, col_order]

  df %>% knitr::kable()
}


Thaliehln/timci documentation built on April 8, 2024, 3:38 p.m.