8.1 Phenotype outcomes

8.1.1 DM

Outcome fields:

  • f.130706.0.0: the date of first occurrence of Type 1 diabetes
  • f.130708.0.0: the date of first occurrence of Type 2 diabetes
  • f.130714.0.0: the date of first occurrence of diabetes of unspecified type
dm_field_patterns <- "130706|130708|130714"

Get DM event table and first occurrence DM event table.

dm_ukb <- get_phenotype_tab(field_patterns = dm_field_patterns,event_tab = event_tab,firstoccur = F)
dm_firstoccur_ukb <- get_phenotype_tab(field_patterns = dm_field_patterns,event_tab = event_tab,firstoccur = T)

Categorize diabetes event to either Type1, Type2 or Uncertain in a new field dm_type.

dm_ukb <- dm_ukb %>% mutate(dm_type = ifelse(grepl("130706", key), "Type1", 
                                             ifelse(grepl("130708", key), "Type2","Uncertain")))
saveRDS(dm_ukb,"generated_data/dm_ukb.RDS")
saveRDS(dm_firstoccur_ukb,"generated_data/dm_firstoccur_ukb.RDS")

8.1.2 MI

Outcome fields:

  • f.131298.0.0: the date of first occurrence of MI
  • f.131300.0.0: the date of subsequent occurrence of MI
  • f.42000.0.0: the date of algorithmically defined MI outcome

ICD10 code prefixes:

  • I21
  • I22
  • I23

Define patterns to search.

mi_field_patterns <- "131298|131300|42000"
mi_icd10_patterns <- "^I21|^I22|^I23"

Get MI event table and first occurrence MI event table.

mi_ukb <- 
  get_phenotype_tab(field_patterns = mi_field_patterns, icd10_patterns_any = mi_icd10_patterns,event_tab = event_tab,firstoccur = F)
mi_firstoccur_ukb <- 
  get_phenotype_tab(field_patterns = mi_field_patterns, icd10_patterns_any = mi_icd10_patterns,event_tab = event_tab,firstoccur = T)
saveRDS(mi_ukb,"generated_data/mi_ukb.RDS")
saveRDS(mi_firstoccur_ukb,"generated_data/mi_firstoccur_ukb.RDS")

8.1.3 Unstable Angina

ICD10 code prefixes:

  • I200
unstable_angina_icd10_patterns <- "I200"

Get unstable angina table and first occurrence unstable angina event table.

unstable_angina_ukb <- get_phenotype_tab(icd10_patterns_any = unstable_angina_icd10_patterns, event_tab = event_tab,firstoccur = F)
unstable_angina_firstoccur_ukb <- get_phenotype_tab(icd10_patterns_any = unstable_angina_icd10_patterns, event_tab = event_tab,firstoccur = T)
saveRDS(unstable_angina_ukb,"generated_data/unstable_angina_ukb.RDS")
saveRDS(unstable_angina_firstoccur_ukb,"generated_data/unstable_angina_firstoccur_ukb.RDS")

8.1.4 Ischemic Stroke

Outcome fields: - 131366: Date I63 first reported (cerebral infarction) - 42008: algorithmically defined outcome for ischemic stroke

ICD10 code prefixes: - I63

Self-reported condition codes: - 1583

Define patterns to search.

stroke_infarct_field_patterns <- "131366|42008"
stroke_infarct_icd10_patterns <- "^I63"
stroke_infarct_selfrep_patterns <- "^1583$"

Get IS event table and first occurrence IS event table.

stroke_infacrt_ukb <- get_phenotype_tab(field_patterns = stroke_infarct_field_patterns,
                                        icd10_patterns_any = stroke_infarct_icd10_patterns,
                                        selfrep_patterns = stroke_infarct_selfrep_patterns,
                                        event_tab = event_tab,firstoccur = F)

stroke_infacrt_firstoccur_ukb <- get_phenotype_tab(field_patterns = stroke_infarct_field_patterns,
                                        icd10_patterns_any = stroke_infarct_icd10_patterns,
                                        selfrep_patterns = stroke_infarct_selfrep_patterns,
                                        event_tab = event_tab,firstoccur = T)
saveRDS(stroke_infacrt_ukb,"generated_data/stroke_infarct_ukb.RDS")
saveRDS(stroke_infacrt_firstoccur_ukb,"generated_data/stroke_infarct_firstoccur_ukb.RDS")

8.1.5 Hemorrhagic Stroke

Outcome fields:

  • 131360: Subarachnoid Hemorrhage
  • 131362: Intracerebral Hemorrhage
  • 131364: Other non-traumatic Hemorrhage,
  • 42010: Intracerebral Hemorrhage
  • 42012: Subarachnoid Hemorrhage

ICD10 code prefixes: - I60 - I61 - I62

Self-reported condition codes: - 1086

Define patterns to search.

stroke_hem_field_patterns <- "131360|131362|131364|42010|42012"
stroke_hem_icd10_patterns <- "^I60|^I61|^I62"
stroke_hem_selfrep_patterns <- "^1086$"

Get HS event table and first occurrence HS table.

stroke_hem_ukb <- get_phenotype_tab(field_patterns = stroke_hem_field_patterns,
                                            icd10_patterns_any = stroke_hem_icd10_patterns,
                                            selfrep_patterns = stroke_hem_selfrep_patterns,
                                            event_tab = event_tab,firstoccur = F)

stroke_hem_firstoccur_ukb <- get_phenotype_tab(field_patterns = stroke_hem_field_patterns,
                                            icd10_patterns_any = stroke_hem_icd10_patterns,
                                            selfrep_patterns = stroke_hem_selfrep_patterns,
                                            event_tab = event_tab,firstoccur = T)
saveRDS(stroke_hem_ukb,"generated_data/stroke_hem_ukb.RDS")
saveRDS(stroke_hem_firstoccur_ukb,"generated_data/stroke_hem_firstoccur_ukb.RDS")

8.1.6 Stroke

Outcome fields: - 42006: unspecified stroke - 131368: unspecified stroke

ICD10 code prefix - I64

Self-reported condition codes: - 1081

Outcome tables: - recurrent ischemic stroke event table - recurrent hemorrhagic stroke event table

Define patterns to search.

stroke_unspec_field_patterns <- "42006|131368"
stroke_unspec_icd10_patterns <- "^I64"
stroke_other_selfrep_patterns <- "^1081$"

Get stroke event table

stroke_infarct_hem_ukb <- 
  full_join(stroke_infacrt_ukb,stroke_hem_ukb) %>% arrange(f.eid,event_dt)

stroke_unspec_ukb <- get_phenotype_tab(field_patterns = stroke_unspec_field_patterns,
                                   icd10_patterns_any = stroke_unspec_icd10_patterns,
                                   event_tab = event_tab,firstoccur = F)

stroke_other_ukb <- get_phenotype_tab(selfrep_patterns = stroke_other_selfrep_patterns,
                                   event_tab = event_tab,firstoccur = F)

stroke_ukb <- 
  stroke_infarct_hem_ukb %>% 
  full_join(stroke_unspec_ukb, by = c("f.eid","event_dt")) %>%
  full_join(stroke_other_ukb, by = c("f.eid","event_dt")) %>% 
  arrange(f.eid,event_dt)

Get first occurrence stroke event table

stroke_firstoccur_ukb <- stroke_ukb %>% group_by(f.eid) %>% arrange(event_dt) %>% slice(1)
saveRDS(stroke_ukb,"generated_data/stroke_ukb.RDS")
saveRDS(stroke_firstoccur_ukb,"generated_data/stroke_firstoccur_ukb.RDS")

8.1.7 PCI

OPCS4 codes: - K40, K41, K42, K43, K44, K45, K46, K483, K49, K501, K75, K76

Self-reported operation codes: - 1070 (Coronary Angioplasty) - 1095 (Coronary bypass grafts)

Define patterns to search.

# OPCS patterns start with 'K' so do not have to start the pattern with '^'
pci_opcs_patterns <- "K40|K41|K42|K43|K44|K45|K46|K483|K49|K501|K75|K76"
pci_selfrep_op_patterns <- "^1070$|^1095$"

Get PCI event table and first occurrence PCI event table.

pci_ukb <- get_phenotype_tab(opcs_patterns = pci_opcs_patterns,
                                     selfrep_op_patterns = pci_selfrep_op_patterns,
                                     event_tab = event_tab,firstoccur = F)

pci_firstoccur_ukb <- get_phenotype_tab(opcs_patterns = pci_opcs_patterns,
                                     selfrep_op_patterns = pci_selfrep_op_patterns,
                                     event_tab = event_tab,firstoccur = T)
saveRDS(pci_ukb,"generated_data/pci_ukb.RDS")
saveRDS(pci_firstoccur_ukb,"generated_data/pci_firstoccur_ukb.RDS")

8.1.8 CVD death

ICD10 code prefixes (primary death):

-I*

Define patterns to search.

cvd_death_icd10_death_primary_patterns <- "^I"

Get CVD death event table

cvd_death_ukb <- get_phenotype_tab(icd10_patterns_pd = cvd_death_icd10_death_primary_patterns,
                                     event_tab = event_tab,firstoccur = F)
saveRDS(cvd_death_ukb,"generated_data/cvd_death_ukb.RDS")

8.1.9 Composite CVD

Composite CVD was defined to be any of the following events:

  • MI
  • IS
  • UA
  • PCI
  • CVD death

Get compositie CVD event table and first occurrence composite CVD event table.

cvd_ukb <- 
  mi_ukb %>%
  full_join(stroke_infacrt_ukb) %>%
  full_join(unstable_angina_ukb) %>%
  full_join(pci_ukb) %>% 
  full_join(cvd_death_ukb) %>% distinct() %>% arrange(f.eid,event_dt)

cvd_firstoccur_ukb <- cvd_ukb %>% group_by(f.eid) %>% arrange(event_dt) %>% slice(1)
saveRDS(cvd_ukb,"generated_data/cvd_ukb.RDS")
saveRDS(cvd_firstoccur_ukb,"generated_data/cvd_firstoccur_ukb.RDS")

8.1.10 DR

ICD10 codes:

  • E1*.3: Diabetes Mellitus with Ophthalmic Complications
  • H36.0: Diabetic Retinopathy
  • H28.0: Diabetic Cataract

ICD9 codes:

  • 2504: Diabetes with Ophthalmic manifestations
  • 3620: Diabetic retinopathy

Self-reported condition codes:

  • 1276

Custom defined fields:

  • dr_self: the date of DR diagnosis. As a reminder dr_self was produced by combining information from the fields f.5901.0.0, f.5901.1.0, f.5901.2.0 and f.5901.3.0 which record age of subjects at which DR was diagnosed at four different time points. Please see chapter 3 for details.

Define patterns.

dr_icd10 <- "E103|E113|E133|E143|H360|H280"
dr_icd9 <- "^2504|^3620"
dr_self <- "1276"
dr_custom <- "dr_self"

Get first occurrence DR event table.

dr_firstoccur_ukb <- get_phenotype_tab(icd10_patterns_any = dr_icd10,
                                       icd9_patterns_any = dr_icd9,
                                       selfrep_patterns = dr_self,
                                       custom_field_patterns = dr_custom,
                                    event_tab = event_tab,firstoccur = T)
saveRDS(dr_firstoccur_ukb,"generated_data/dr_firstoccur_ukb.RDS")

8.1.11 DKD

Outcome fields:

  • 42026: algorithmically defined End-Stage Renal Disease (ESRD)

ICD10 codes:

  • E1.2: Diabetes Mellitus with renal complication
  • N18[0345]: CKD Stage 3-5, end stage
  • N083: Glomerular disorders in Diabetes Mellitus

ICD9 codes: - 2503: Diabetes with renal manifestations - 5859: Renal failure

Self-reported condition codes:

  • 1607

Define patterns.

dkd_field_patterns <- "42026"
dkd_icd10 <- "E102|E112|E132|E142|N180|N183|N184|N185|N083"
dkd_icd9 <- "^2503|^5859"
dkd_self <- "1607"

Get DKD event table and first occurrence DKD event table.

dkd_ukb <- get_phenotype_tab(field_patterns = dkd_field_patterns,
                             icd10_patterns_any = dkd_icd10,
                             icd9_patterns_any = dkd_icd9,
                             selfrep_patterns = dkd_self,
                  event_tab = event_tab,firstoccur = F)

dkd_firstoccur_ukb <- get_phenotype_tab(field_patterns = dkd_field_patterns,
                                        icd10_patterns_any = dkd_icd10,
                                        icd9_patterns_any = dkd_icd9,
                                        selfrep_patterns = dkd_self,
                  event_tab = event_tab,firstoccur = T)
saveRDS(dkd_ukb,"generated_data/dkd_ukb.RDS")
saveRDS(dkd_firstoccur_ukb,"generated_data/dkd_firstoccur_ukb.RDS")