8.1 Phenotype outcomes
8.1.1 DM
Outcome fields:
f.130706.0.0
: the date of first occurrence of Type 1 diabetesf.130708.0.0
: the date of first occurrence of Type 2 diabetesf.130714.0.0
: the date of first occurrence of diabetes of unspecified type
<- "130706|130708|130714" dm_field_patterns
Get DM event table and first occurrence DM event table.
<- get_phenotype_tab(field_patterns = dm_field_patterns,event_tab = event_tab,firstoccur = F)
dm_ukb <- get_phenotype_tab(field_patterns = dm_field_patterns,event_tab = event_tab,firstoccur = T) dm_firstoccur_ukb
Categorize diabetes event to either Type1, Type2 or Uncertain in a new field dm_type
.
<- dm_ukb %>% mutate(dm_type = ifelse(grepl("130706", key), "Type1",
dm_ukb 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.
<- "131298|131300|42000"
mi_field_patterns <- "^I21|^I22|^I23" mi_icd10_patterns
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
<- "I200" unstable_angina_icd10_patterns
Get unstable angina table and first occurrence unstable angina event table.
<- get_phenotype_tab(icd10_patterns_any = unstable_angina_icd10_patterns, event_tab = event_tab,firstoccur = F)
unstable_angina_ukb <- get_phenotype_tab(icd10_patterns_any = unstable_angina_icd10_patterns, event_tab = event_tab,firstoccur = T) unstable_angina_firstoccur_ukb
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.
<- "131366|42008"
stroke_infarct_field_patterns <- "^I63"
stroke_infarct_icd10_patterns <- "^1583$" stroke_infarct_selfrep_patterns
Get IS event table and first occurrence IS event table.
<- get_phenotype_tab(field_patterns = stroke_infarct_field_patterns,
stroke_infacrt_ukb icd10_patterns_any = stroke_infarct_icd10_patterns,
selfrep_patterns = stroke_infarct_selfrep_patterns,
event_tab = event_tab,firstoccur = F)
<- get_phenotype_tab(field_patterns = stroke_infarct_field_patterns,
stroke_infacrt_firstoccur_ukb 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.
<- "131360|131362|131364|42010|42012"
stroke_hem_field_patterns <- "^I60|^I61|^I62"
stroke_hem_icd10_patterns <- "^1086$" stroke_hem_selfrep_patterns
Get HS event table and first occurrence HS table.
<- get_phenotype_tab(field_patterns = stroke_hem_field_patterns,
stroke_hem_ukb icd10_patterns_any = stroke_hem_icd10_patterns,
selfrep_patterns = stroke_hem_selfrep_patterns,
event_tab = event_tab,firstoccur = F)
<- get_phenotype_tab(field_patterns = stroke_hem_field_patterns,
stroke_hem_firstoccur_ukb 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.
<- "42006|131368"
stroke_unspec_field_patterns <- "^I64"
stroke_unspec_icd10_patterns <- "^1081$" stroke_other_selfrep_patterns
Get stroke event table
<-
stroke_infarct_hem_ukb full_join(stroke_infacrt_ukb,stroke_hem_ukb) %>% arrange(f.eid,event_dt)
<- get_phenotype_tab(field_patterns = stroke_unspec_field_patterns,
stroke_unspec_ukb icd10_patterns_any = stroke_unspec_icd10_patterns,
event_tab = event_tab,firstoccur = F)
<- get_phenotype_tab(selfrep_patterns = stroke_other_selfrep_patterns,
stroke_other_ukb 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_ukb %>% group_by(f.eid) %>% arrange(event_dt) %>% slice(1) stroke_firstoccur_ukb
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 '^'
<- "K40|K41|K42|K43|K44|K45|K46|K483|K49|K501|K75|K76"
pci_opcs_patterns <- "^1070$|^1095$" pci_selfrep_op_patterns
Get PCI event table and first occurrence PCI event table.
<- get_phenotype_tab(opcs_patterns = pci_opcs_patterns,
pci_ukb selfrep_op_patterns = pci_selfrep_op_patterns,
event_tab = event_tab,firstoccur = F)
<- get_phenotype_tab(opcs_patterns = pci_opcs_patterns,
pci_firstoccur_ukb 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.
<- "^I" cvd_death_icd10_death_primary_patterns
Get CVD death event table
<- get_phenotype_tab(icd10_patterns_pd = cvd_death_icd10_death_primary_patterns,
cvd_death_ukb 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_ukb %>% group_by(f.eid) %>% arrange(event_dt) %>% slice(1) cvd_firstoccur_ukb
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 fieldsf.5901.0.0
,f.5901.1.0
,f.5901.2.0
andf.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.
<- "E103|E113|E133|E143|H360|H280"
dr_icd10 <- "^2504|^3620"
dr_icd9 <- "1276"
dr_self <- "dr_self" dr_custom
Get first occurrence DR event table.
<- get_phenotype_tab(icd10_patterns_any = dr_icd10,
dr_firstoccur_ukb 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.
<- "42026"
dkd_field_patterns <- "E102|E112|E132|E142|N180|N183|N184|N185|N083"
dkd_icd10 <- "^2503|^5859"
dkd_icd9 <- "1607" dkd_self
Get DKD event table and first occurrence DKD event table.
<- get_phenotype_tab(field_patterns = dkd_field_patterns,
dkd_ukb icd10_patterns_any = dkd_icd10,
icd9_patterns_any = dkd_icd9,
selfrep_patterns = dkd_self,
event_tab = event_tab,firstoccur = F)
<- get_phenotype_tab(field_patterns = dkd_field_patterns,
dkd_firstoccur_ukb 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")