library(qrcode)
knitr::opts_chunk$set(echo = FALSE,
                      warning = FALSE,
                      message = FALSE)
facility_id <- params$facility_id
facility_label <- params$facility_label
fu_fid <- params$fu_fid
fu_start <- params$fu_start
fu_end <- params$fu_end
fu_vstart <- params$fu_vstart
fu_vend <- params$fu_vend

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

  pii <- params$pii
  raw_fu_data <- params$raw_fu_data
  raw_withdrawal_data <- params$raw_withdrawal_data

} else {

  ################
  # 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")
  crf_facility_fid <- Sys.getenv("TIMCI_CRF_FACILITY_FID")

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

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

  # Load facility data
  print("Load facility data")
  raw_facility_data <- ruODK::odata_submission_get(fid = crf_facility_fid)
  facility_data <- timci::process_facility_data(raw_facility_data)

  pii <- timci::extract_enrolled_participants(facility_data)[[2]]

  # Load follow-up data
  print("Load follow-up data")
  raw_fu_data <- NULL
  if (fu_fid %in% rct_ls_form_list) {
    raw_fu_data <- ruODK::odata_submission_get(fid = fu_fid,
                                                   download = FALSE)
  }

  # Load widthdrawal data
  print("Load withdrawal data")
  raw_withdrawal_data <- NULL
  if (wd_fid %in% rct_ls_form_list) {
    raw_withdrawal_data <- ruODK::odata_submission_get(fid = wd_fid,
                                                       download = FALSE)
  }

}
fu <- timci::generate_fu_log(pii,
                             raw_fu_data,
                             fu_start,
                             fu_end,
                             fu_vstart,
                             fu_vend,
                             ext = FALSE,
                             deidentify = FALSE)
fu <- fu %>%
  dplyr::filter(fid == facility_id | fid == "F0000")
if (!is.null(fu)) {

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

  df <- fu %>%
    dplyr::mutate(
      code = paste0('![](', file.path(tempdir(), paste0(fu$name,".png")), ')', '{width=0.75in}')
      ) %>%
    dplyr::select('code', dplyr::everything()) %>%
    dplyr::rename('id' = 'name',
                  'child' = 'label',
                  'valid window [enrolment date ]' = 'enroldate')

  df$caregiver <- paste(df$caregiver,
                        paste0('(',df$relationship,')'))
  df$child <- paste(df$child,
                    paste0('(',df$sex,')'))
  drops <- c("mother", "relationship", "sex", "fid")
  df <- df[ , !(names(df) %in% drops)]

  df %>% knitr::kable()
}


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