7.2 Prepare diabetic eye disease code dictionary
7.2.1 Define keywords
Define inclusion keywords.
<-
inclusion_keyword_patterns "macul|retin|ophthalmic manifestation|ophthalmic complication|cataract|glaucoma|eye disease|diabetic iritis"
Define inclusion keywords for case.
<- "diabetic|diabetes|diabet retinopathy" inclusion_keyword_patterns_case
Define exclusion keywords.
<-
exclusion_keyword_patterns " no maculopathy|^normal |translocation|cataract screen|retinol|incretin|diabetic retinopathy screening|retinal screening|steroid|drug induced|ratiation induced|branch of|vocational asses|electroretinography|buckling|tamponade|biopsy|retinopexy|cretin|glaucoma screen|pigment|fundoscopy|migraine|Commotio retinae|berlin|angiography|melanocytic macule|melanotic macule|acute retinal necrosis|radiation retinopathy|solar retinopathy|retinal dialysis|toxic maculopathy|eruption|retinacul|Acitretin|tretinoin|alopecia|branch of retinal artery$|rash"
<- c("O/E - retina", "Retinal photography", "Retinoscopy",
exclusion_keywords "Senile macular disorder screen", "Digital imaging of retina",
"[SO]Retina", "Retinal scan - laser", "Macula", "Retina",
"Retinitis", "Fundus flavimaculatus", "Macula observation",
"Superior temporal branch of retinal vein", "Senile macular disorder screening",
"Retinal vein", "Branch of Retinal vein","Retinal artery","Limiting membrane of retina",
"Nerve fibre layer of retina","Inferior temporal quadrant of retina","Central retinal vein",
"Secondary syphilitic chorioretinitis", "Maculopapular", "Parafoveal retina", "Retinal structure",
"Tomaculous neuropathy", "CMV retinitis", "Choroidal and retinal structures", "Retinal arteriole")
Define exclusion keywords for case.
<- "non-diab|non diab" exclusion_keyword_patterns_case
7.2.2 Define codes
Define inclusion codes.
<- "^F42"
inclusion_code_patterns <- c("F4407") inclusion_codes
Define exclusion codes.
<- c("^hg1|^hh51|^j24|^kaA|^m[5-7]") exclusion_code_patterns
7.2.3 Create diabetic eye disease code dictionary
Create eye disease code dictionary.
<- full_dict %>%
eye_disease_dict filter(grepl(inclusion_keyword_patterns, term_description, ignore.case = T) |
grepl(inclusion_code_patterns, code, ignore.case = T) |
%in% inclusion_codes) %>%
code filter(!grepl(global_exclusion_keyword_patterns, term_description, ignore.case = T) &
!grepl(exclusion_keyword_patterns, term_description, ignore.case = T) &
!grepl(exclusion_code_patterns, code, ignore.case = F) &
!(term_description %in% exclusion_keywords))
Get terms that actually occur in the PC data.
<- eye_disease_dict %>%
eye_disease_actual filter(code %in% terms_actual$code)
Create diabetic eye disease code dictionary.
<-
dm_eye_disease_dict %>%
eye_disease_actual filter(grepl(inclusion_keyword_patterns_case, term_description, ignore.case=T) &
!grepl(exclusion_keyword_patterns_case, term_description, ignore.case=T))
Review unique terms.
<- dm_eye_disease_dict %>%
dr_pc_review distinct(code, term_description) %>%
distinct(code, .keep_all = T)
See if there are any additional mapped terms. For diabetic retinopathy, there are none.
<- left_join(dm_eye_disease_dict, read_map) %>%
dr_terms_map filter(!is.na(mapped_code)) %>%
filter(!(mapped_code %in% dm_eye_disease_dict$code)) %>%
arrange(code) %>%
select(-terminology_note) %>%
left_join(full_dict %>%
::rename(mapped_code = code, mapped_description = term_description,
dplyrmapped_terminology=terminology)) %>%
group_by(mapped_code) %>%
slice(1) %>%
distinct()
dr_terms_map
Generate non-diabetic eye disease code dictionary.
<-
nondm_eye_disease_dict %>% filter(!(code %in% dm_eye_disease_dict$code)) eye_disease_actual
Review non-diabetic eye disease terms.
<- nondm_eye_disease_dict %>%
nondm_eye_review distinct(code, term_description) %>%
distinct(code, .keep_all = T)
See if there are any additional mapped terms.
<- left_join(nondm_eye_disease_dict, read_map) %>%
nondm_eye_disease_terms_map filter(!is.na(mapped_code)) %>%
filter(!(mapped_code %in% nondm_eye_disease_dict$code)) %>%
arrange(code) %>%
select(-terminology_note) %>%
left_join(full_dict %>%
::rename(mapped_code = code, mapped_description = term_description,
dplyrmapped_terminology=terminology)) %>%
group_by(mapped_code) %>%
slice(1) %>%
distinct() %>%
filter(!grepl("hypertensive", mapped_description))
nondm_eye_disease_terms_map
Combine the new terms with the original non-diabetic eye disease dictionary.
<- rbind(nondm_eye_disease_dict,
nondm_eye_disease_dict_final %>%
nondm_eye_disease_terms_map select(code = mapped_code, term_description = mapped_description,
terminology = mapped_terminology, terminology_note)
)
Save diabetic eye disease code dictionary and non-diabetic eye disease code dictionary.
saveRDS(dm_eye_disease_dict,"generated_data/dm_eye_disease_dict.RDS")
saveRDS(nondm_eye_disease_dict_final,"generated_data/nondm_eye_disease_dict.RDS")