This utility provides some very basic functions to map between ICD-10 terms used in hospital diagnoses for UK Biobank and PheCodes as outlined in Wu P. et al. https://www.biorxiv.org/content/10.1101/462077v5
Requires the phecode definitions file and the icd10-to-phecode mapping file - you can grab the latest version of both files from https://phewascatalog.org/phecodes
UK Biobank secondary care data are coded using ICD-10 but the dot has been stripped out i.e. "I21.0 Ischaemic heart disease" is recorded as 'I210' so you will need to add the dot separator prior to attempting to match.
Not all ICD-10 terms are mapped to PheCodes and not all PheCodes which are mapped to ICD-10 terms appear to have a valid definition in the PheCodes definition file. Mappings are usually one-to-one but can also be one-to-many:
Of all possible ICD-10 codes, 9,165 (76.20%) mapped to at least one PheCode, and 289 (2.40%) mapped to >1 PheCode. ICD-10 code B21.1 (HIV disease resulting in Burkitt’s lymphoma) maps to two PheCodes: 071.1 (HIV infection, symptomatic) and 202.2 (Non-Hodgkin's lymphoma).
from phemap import Phemap
source_file = 'data/phecode_definitions1.2.csv'
mapping_file = 'data/phecode_map_v1_2_icd10_beta.csv'
phemap = Phemap(source_file=source_file, mapping_file=mapping_file)
>>> phemap.get_icd_for_phecode('495')
['J45.8', 'J45', 'J45.1', 'J45.0', 'J45.9']
>>> phemap.get_phecode_for_icd10('J45.1')
'495'
>>> phemap.get_phecode_info('495')
{'phecode': '495',
'phenotype': 'Asthma',
'phecode_exclude_range': '490-498.99',
'sex': nan,
'rollup': '1',
'leaf': '0',
'category_number': '9',
'category': 'respiratory',
'phecode_num': 495.0}
>>> phemap.get_phecode_exclusions('495')
['495',
'495.1',
'495.11',
'495.2',
'496',
'496.1',
'496.2',
'496.21',
'496.3',
'497',
'498']
>>> all_phecodes = phemap.get_all_phecodes()
>>> all_phecodes[10]
{'phecode': '038.1',
'phenotype': 'Gram negative septicemia',
'phecode_exclude_range': '010-041.99',
'sex': 'Both',
'rollup': '1',
'leaf': '1',
'category_number': '1',
'category': 'infectious diseases',
'phecode_num': 38.1}
https://www.biorxiv.org/content/10.1101/462077v4
https://www.ncbi.nlm.nih.gov/pubmed/20335276
https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0175508