`%!in%` <- Negate(`%in%`)
if (is_tanzania) {
  uq_facilities <- params$research_facilities[, c("facility_id",
                                                  "facility_name",
                                                  "intervention")] %>%
  distinct()
} else {
  uq_facilities <- params$research_facilities[, c("facility_id",
                                                  "facility_name")] %>%
  distinct()
}
if (!is.null(raw_day7fu_data)) {
  if (nrow(raw_day7fu_data) > 0) {
    raw_day7fu_data <- merge(x = raw_day7fu_data,
                             y = uq_facilities,
                             by.x = 'a1-fid',
                             by.y = 'facility_id',
                             all = FALSE)
  }
}
cat(nrow(raw_hospit_data))
if (nrow(raw_hospit_data) > 0) {
  cols <- colnames(raw_hospit_data)
  if ('a1-fid' %!in% cols) {
    raw_hospit_data <- raw_hospit_data %>%
      dplyr::mutate('a1-fid' = substr(raw_hospit_data$'a1-id', 3, 7))
  }
  raw_hospit_data <- merge(x = raw_hospit_data,
                           y = uq_facilities,
                           by.x = 'a1-fid',
                           by.y = 'facility_id',
                           all = FALSE)
}
cat(nrow(raw_hospit_data))
if (!is.null(raw_day28fu_data)) {
  if (nrow(raw_day28fu_data) > 0) {
    raw_day28fu_data <- merge(x = raw_day28fu_data,
                              y = uq_facilities,
                              by.x = 'a1-fid',
                              by.y = 'facility_id',
                              all = FALSE)
  }
}
n_total <- 0

# Screening data
n_screened <- nrow(facility_data)
screening_data <- timci::extract_screening_data(facility_data, is_pilot)
visit_names <- c(screening_str)
submissions <- c(n_screened)
n_total <- n_total + n_screened

study_data <- timci::extract_all_visits(facility_data)
res <- timci::extract_enrolled_participants(facility_data)
noneligible <- timci::extract_noneligible(facility_data)

# Baseline data
baseline_data <- timci::extract_baseline_visits(study_data)
baseline_data <- timci::allocate_screening_facility(baseline_data,
                                                    params$research_facilities)

demog_data <- res[[1]]
n_enrolled <- nrow(demog_data)
n_enrolled7 <- nrow(dplyr::filter(demog_data, date_visit >= as.Date(end_date - 6)))
n_enrolled28 <- nrow(dplyr::filter(demog_data, date_visit >= as.Date(end_date - 27)))
visit_names <- c(visit_names, paste0(baseline_str, kableExtra::footnote_marker_number(1)))
submissions <- c(submissions, n_enrolled)

# Count facility submissions corresponding to repeat visits
repeat_data <- timci::extract_repeat_visits(study_data)
n_repeat <- nrow(repeat_data)
visit_names <- c(visit_names, paste0(repeat_str, kableExtra::footnote_marker_number(2)))
submissions <- c(submissions, n_repeat)
# Count Day 7 phone call submissions
n_day7fu <- nrow(raw_day7fu_data)
visit_names <- c(visit_names, day7_phone_call_str)
submissions <- c(submissions, n_day7fu)
n_total <- n_total + n_day7fu
if (!is.null(raw_day28fu_data)) {
  n_day28fu <- nrow(raw_day28fu_data)
  visit_names <- c(visit_names, "Day 28 phone call")
  submissions <- c(submissions, n_day28fu)
  n_total <- n_total + n_day28fu
}
# Count hospital visit submissions
n_hospit <- nrow(raw_hospit_data)
visit_names <- c(visit_names, hospital_submission_str)
submissions <- c(submissions, n_hospit)
n_total <- n_total + n_hospit
# Count withdrawal submissions
n_withdrawal <- nrow(raw_withdrawal_data)
visit_names <- c(visit_names, withdrawal_str)
submissions <- c(submissions, n_withdrawal)
n_total <- n_total + n_withdrawal
day7fu_data <- NULL
succ_day7fu_data <- NULL
if (!is.null(raw_day7fu_data)) {
  if (nrow(raw_day7fu_data) > 0) {

    # Extract and clean all Day 7 follow-up data
    day7fu_data <- timci::format_day7_data(raw_day7fu_data)[[3]]
    day7fu_data <- day7fu_data[day7fu_data$child_id %in% baseline_data$child_id, ]

    # Extract and clean successful Day 7 follow-up data
    succ_day7fu_data <- timci::format_day7_data(raw_day7fu_data)[[1]]
    succ_day7fu_data <- clean_followup_for_rate_estimation(baseline_data, succ_day7fu_data)

    # Extract and clean all Day 7 follow-up attempts
    attempts_day7fu_data <- day7fu_data[day7fu_data$child_id %in% baseline_data$child_id, ] %>%
      dplyr::mutate(attempted_day7 = 1)  %>%
      dplyr::distinct_at(dplyr::vars(child_id),
                         .keep_all = TRUE)

    n_completed_day7fu <- sum((as.Date(succ_day7fu_data$date_day0, "%Y-%m-%d") + day7_wmin) <= Sys.Date(), na.rm = TRUE) 
    n_valid_day7fu <- sum(((as.Date(succ_day7fu_data$date_day0, "%Y-%m-%d") + day7_wmin) <= Sys.Date()) & (succ_day7fu_data$days >= day7_wmin) & (succ_day7fu_data$days <= day7_wmax), na.rm = TRUE) 
  } else {
    n_completed_day7fu <- 0
    n_valid_day7fu <- 0
  }
} else {
  n_completed_day7fu <- 0
  n_valid_day7fu <- 0
}
n_due_day7fu <- sum((as.Date(demog_data$date_visit, "%Y-%m-%d") + day7_wmin) <= Sys.Date(),
                    na.rm = TRUE)
selected_variables <- c("child_id",
                        "facility_name",
                        "date_visit",
                        "district",
                        "referral_cg",
                        "referral_hf")
if (is_tanzania) {
  selected_variables <- c(selected_variables)#, "location")
}
all <- baseline_data[, selected_variables]
if (!is.null(day7fu_data)) {
  if (nrow(day7fu_data) > 0) {
    all <- all %>%
      merge(y = succ_day7fu_data[, c("child_id", "proceed_day7", "hf_visit_type", "status_day7", "admission", "date_call")],
            by = 'child_id',
            all.x = TRUE) %>%
      merge(y = attempts_day7fu_data[, c("child_id", "attempted_day7")],
            by = 'child_id',
            all.x = TRUE)
  }
}
n_due_hospitfu <- 0
if (!is.null(all)) {
  n_due_hospitfu <- sum((all$status_day7 == 2) | (all$admission == 1),
                        na.rm = TRUE)
}


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