R/exclusions.R

Defines functions exclusions

#' @import dplyr

exclusions <- function(
  data,
  id_stays_cases,
  id_stays_excluded,
  n_of_stays_max,
  exclude_in_case_stay
){
  
  cases <- data %>%
    select(id_patient, id_stay, admission) %>%
    semi_join(id_stays_cases) %>%
    anti_join(., numerous_hospital_stays(data = ., max_stays = n_of_stays_max)) %>%
    group_by(id_patient) %>%
    arrange(id_patient, admission) %>%
    slice(1L) %>%
    rename(case_date = admission)

  excluded <- data %>%
    select(id_patient, id_stay, admission) %>%
    semi_join(id_stays_excluded) %>%
    select(- id_stay) %>%
    group_by(id_patient) %>%
    arrange(id_patient, admission) %>%
    rename(exclusion_date = admission)
  
  difference <- left_join(cases, excluded) %>%
    mutate(diff = exclusion_date - case_date) %>%
    mutate(diff = ifelse(is.na(diff),1,diff)) %>%
    select(-exclusion_date, -case_date)
  
  if(exclude_in_case_stay){
    
    id_excluded <- difference %>%
      filter(diff <= 0 & diff > -730 ) %>%
      select(id_patient)
    
  } else {
    
    id_excluded <- difference %>%
      filter(diff < 0 & diff > -730 ) %>%
      select(id_patient)
    
  }
  
  cases <- anti_join(cases, id_excluded)
  
  return(cases)
  
  
}
jomuller/ITCARES documentation built on May 19, 2019, 7:26 p.m.