13 Phenotype outcomes using combination of tables
In this chapter, we combine event tables generated in the previous chapters to generate
- diabetes event table and diabetes first occurrence event table
- diabetic eye disease first occurrence event table
- diabetic first occurrence event table
Load packages.
library(tidyverse)
library(data.table)
source("functions.R")DM
Load the following datasets:
- diabetes event table generated using UKB assessment center data (chapter 8)
- diabetes event table generated using PCP data (chapter 9)
dm_pc <- readRDS("generated_data/dm_pc.RDS")
dm_ukb <- readRDS("generated_data/dm_ukb.RDS")Create diabetes event table and diabetes first occurrence event table. The categorize_dm_types() function categorizes events into different diabetes types. The function also resolves any conflict in types of diabetes for each subject with more than one recorded diabetes types.
dm <- full_join(dm_ukb %>% select(f.eid, event_dt, dm_type), dm_pc %>% select(f.eid, event_dt, dm_type)) %>% 
  distinct() %>% 
  group_by(f.eid) %>%
  mutate(dm_type = categorize_dm_types(dm_type)) %>%
  ungroup()
dm_firstoccur <- dm %>% group_by(f.eid) %>% arrange(event_dt) %>% slice(1) %>% ungroup()Import ID’s of subjects represented in the primary care data.
gp_subject_ids <- readRDS("generated_data/gp_subject_ids.RDS")Show a contingency table of diabetes types and availability of the primary care data for the diabetes cohort.
dm_firstoccur %>% mutate(in_gp = f.eid %in% gp_subject_ids) %>% 
  select(dm_type, in_gp) %>% 
  table() %>%
  addmargins()saveRDS(dm,"generated_data/dm.RDS")
saveRDS(dm_firstoccur,"generated_data/dm_firstoccur.RDS")DR
Load the following datasets:
- diabetic eye disease first occurrence event table generated using UKB assessment center data (chapter 8)
- diabetic eye disease event table generated using PCP data (chapter 9)
dr_pc <- readRDS("generated_data/dr_pc.RDS")
dr_firstoccur_ukb <- readRDS("generated_data/dr_firstoccur_ukb.RDS")Create diabetic eye disease first occurrence event table.
dr_firstoccur <- 
  dr_pc %>% full_join(dr_firstoccur_ukb) %>% 
  group_by(f.eid) %>% arrange(event_dt) %>% slice(1) %>% ungroup() saveRDS(dr_firstoccur,"generated_data/dr_firstoccur.RDS")DKD
Load the following datasets:
- diabetic kidney disease event table generated using UKB assessment center data (chapter 8)
- diabetic kidney disease event table generated using PCP data (chapter 9)
- macroabuminuria first occurrence event table generated using the biomarker trajectory data (chapter 12)
- prolonged low eGFR first occurrence event table generated using the biomarker trajector data (chapter 12)
kidney_disease_case_pc <- readRDS("generated_data/kidney_disease_case_pc.RDS")
dkd_ukb <- readRDS("generated_data/dkd_ukb.RDS")
macroabu_firstoccur <- readRDS("generated_data/macroabu_firstoccur.RDS")
prolonged_low_egfr_firstoccur <- readRDS("generated_data/prolonged_low_egfr_firstoccur.RDS")Next, we create the following event tables using low_egfr_firstoccur and macroabu_firstoccur to capture additional DKD cases.
prolonged_low_egfr_firstoccur <- prolonged_low_egfr_firstoccur %>% filter(!is.na(event_dt))
macroabu_firstoccur <- macroabu_firstoccur %>% filter(!is.na(event_dt)) %>% select(f.eid,event_dt)Finally, we merge the following event tables to generate first occurrence diabetic kidney disease event table:
- kidney disease case multiple event table from PCP data
- diabetic kidney disease multiple event table from UKB assessment center data
- macroabuminuria first occurrence event table
- prolonged low eGFR first occurrence event table
dkd_firstoccur <- 
  kidney_disease_case_pc %>% 
  full_join(dkd_ukb) %>%
  full_join(prolonged_low_egfr_firstoccur) %>%
  full_join(macroabu_firstoccur) %>%
  filter(!is.na(event_dt)) %>% 
    group_by(f.eid) %>% arrange(event_dt) %>% slice(1) %>% ungroup()saveRDS(dkd_firstoccur,"generated_data/dkd_firstoccur.RDS")