diff --git a/neuralcvd/preprocessing/ukbb_tabular/0_decode_ukbb.ipynb b/neuralcvd/preprocessing/ukbb_tabular/0_decode_ukbb.ipynb
deleted file mode 100644
index 340b5c3..0000000
--- a/neuralcvd/preprocessing/ukbb_tabular/0_decode_ukbb.ipynb
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "library(ukbtools)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "my_ukb_data <- ukb_df(\"decoded\", path = \"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data\")\n",
- "df_field <- ukb_df_field(\"decoded\", path = \"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(my_ukb_data, \"/data/analysis/ag-reils/ag-reils-shared/cardioRS/data/1_decoded/ukb_data.feather\")\n",
- "arrow::write_feather(df_field, \"/data/analysis/ag-reils/ag-reils-shared/cardioRS/data/1_decoded/ukb_data_field.feather\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "R [conda env:python]",
- "language": "R",
- "name": "conda-env-python-r"
- },
- "language_info": {
- "codemirror_mode": "r",
- "file_extension": ".r",
- "mimetype": "text/x-r-source",
- "name": "R",
- "pygments_lexer": "r",
- "version": "4.0.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/neuralcvd/preprocessing/ukbb_tabular/1_dataportal_exploration.ipynb b/neuralcvd/preprocessing/ukbb_tabular/1_dataportal_exploration.ipynb
deleted file mode 100644
index b048dc7..0000000
--- a/neuralcvd/preprocessing/ukbb_tabular/1_dataportal_exploration.ipynb
+++ /dev/null
@@ -1,6492 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Preprocessing"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "-- \u001b[1mAttaching packages\u001b[22m --------------------------------------- tidyverse 1.3.0 --\n",
- "\n",
- "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.2 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n",
- "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.0.3 \u001b[32mv\u001b[39m \u001b[34mdplyr \u001b[39m 1.0.2\n",
- "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.2 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n",
- "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 1.3.1 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 0.5.0\n",
- "\n",
- "-- \u001b[1mConflicts\u001b[22m ------------------------------------------ tidyverse_conflicts() --\n",
- "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n",
- "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n",
- "\n",
- "\n",
- "Attaching package: 'glue'\n",
- "\n",
- "\n",
- "The following object is masked from 'package:dplyr':\n",
- "\n",
- " collapse\n",
- "\n",
- "\n"
- ]
- }
- ],
- "source": [
- "library(tidyverse)\n",
- "library(glue)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 108,
- "metadata": {},
- "outputs": [],
- "source": [
- "base_size = 25\n",
- "title_size = 35\n",
- "facet_size = 15\n",
- "geom_text_size=7\n",
- "library(ggplot2); \n",
- "theme_set(theme_classic(base_size = base_size) + \n",
- " theme(strip.background = element_blank(), plot.title=element_text(size=title_size, hjust=0.5), \n",
- " #axis.title.y = element_blank(), axis.text.y = element_blank(), axis.ticks.y = element_blank(), axis.line.y = element_blank(), \n",
- " strip.text.x = element_text(size = facet_size), axis.line = element_line(size = 0.2), axis.ticks=element_line(size=0.2))) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:31:49.436340Z",
- "start_time": "2020-11-04T12:31:48.732042Z"
- }
- },
- "outputs": [],
- "source": [
- "dataset_name = \"210212_cvd_gp\"\n",
- "path = \"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb\"\n",
- "data_path = \"/data/analysis/ag-reils/ag-reils-shared/cardioRS/data\"\n",
- "dataset_path = glue(\"{data_path}/2_datasets_pre/{dataset_name}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 133,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Joining, by = \"eid\"\n",
- "\n",
- "Joining, by = \"eid\"\n",
- "\n"
- ]
- }
- ],
- "source": [
- "basics = arrow::read_feather(glue(\"{dataset_path}/temp_basics.feather\"))\n",
- "measurements = arrow::read_feather(glue(\"{dataset_path}/temp_measurements.feather\"))\n",
- "labs = arrow::read_feather(glue(\"{dataset_path}/temp_labs.feather\"))\n",
- "data = basics %>% left_join(measurements, on=\"eid\") %>% left_join(labs, on=\"eid\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 151,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
- 'eid'
- 'age_at_recruitment_f21022_0_0'
- 'sex_f31_0_0'
- 'ethnic_background_f21000_0_0'
- 'townsend_deprivation_index_at_recruitment_f189_0_0'
- 'date_of_attending_assessment_centre_f53_0_0'
- 'uk_biobank_assessment_centre_f54_0_0'
- 'birth_date'
- 'body_mass_index_bmi_f21001_0_0'
- 'weight_f21002_0_0'
- 'pulse_wave_arterial_stiffness_index_f21021_0_0'
- 'pulse_wave_reflection_index_f4195_0_0'
- 'waist_circumference_f48_0_0'
- 'hip_circumference_f49_0_0'
- 'standing_height_f50_0_0'
- 'trunk_fat_percentage_f23127_0_0'
- 'body_fat_percentage_f23099_0_0'
- 'basal_metabolic_rate_f23105_0_0'
- 'forced_vital_capacity_fvc_best_measure_f20151_0_0'
- 'forced_expiratory_volume_in_1second_fev1_best_measure_f20150_0_0'
- 'fev1_fvc_ratio_zscore_f20258_0_0'
- 'peak_expiratory_flow_pef_f3064_0_2'
- 'peak_expiratory_flow_pef_f3064_0_1'
- 'peak_expiratory_flow_pef_f3064_0_0'
- 'systolic_blood_pressure_automated_reading_f4080'
- 'diastolic_blood_pressure_automated_reading_f4079'
- 'pulse_rate_automated_reading_f102'
- 'basophill_count_f30160_0_0'
- 'basophill_percentage_f30220_0_0'
- 'eosinophill_count_f30150_0_0'
- 'eosinophill_percentage_f30210_0_0'
- 'haematocrit_percentage_f30030_0_0'
- 'haemoglobin_concentration_f30020_0_0'
- 'high_light_scatter_reticulocyte_count_f30300_0_0'
- 'high_light_scatter_reticulocyte_percentage_f30290_0_0'
- 'immature_reticulocyte_fraction_f30280_0_0'
- 'lymphocyte_count_f30120_0_0'
- 'lymphocyte_percentage_f30180_0_0'
- 'mean_corpuscular_haemoglobin_f30050_0_0'
- 'mean_corpuscular_haemoglobin_concentration_f30060_0_0'
- 'mean_corpuscular_volume_f30040_0_0'
- 'mean_platelet_thrombocyte_volume_f30100_0_0'
- 'mean_reticulocyte_volume_f30260_0_0'
- 'mean_sphered_cell_volume_f30270_0_0'
- 'monocyte_count_f30130_0_0'
- 'monocyte_percentage_f30190_0_0'
- 'neutrophill_count_f30140_0_0'
- 'neutrophill_percentage_f30200_0_0'
- 'nucleated_red_blood_cell_count_f30170_0_0'
- 'nucleated_red_blood_cell_percentage_f30230_0_0'
- 'platelet_count_f30080_0_0'
- 'platelet_crit_f30090_0_0'
- 'platelet_distribution_width_f30110_0_0'
- 'red_blood_cell_erythrocyte_count_f30010_0_0'
- 'red_blood_cell_erythrocyte_distribution_width_f30070_0_0'
- 'reticulocyte_count_f30250_0_0'
- 'reticulocyte_percentage_f30240_0_0'
- 'white_blood_cell_leukocyte_count_f30000_0_0'
- 'alanine_aminotransferase_f30620_0_0'
- 'albumin_f30600_0_0'
- 'alkaline_phosphatase_f30610_0_0'
- 'apolipoprotein_a_f30630_0_0'
- 'apolipoprotein_b_f30640_0_0'
- 'aspartate_aminotransferase_f30650_0_0'
- 'creactive_protein_f30710_0_0'
- 'calcium_f30680_0_0'
- 'cholesterol_f30690_0_0'
- 'creatinine_f30700_0_0'
- 'cystatin_c_f30720_0_0'
- 'direct_bilirubin_f30660_0_0'
- 'gamma_glutamyltransferase_f30730_0_0'
- 'glucose_f30740_0_0'
- 'glycated_haemoglobin_hba1c_f30750_0_0'
- 'hdl_cholesterol_f30760_0_0'
- 'igf1_f30770_0_0'
- 'ldl_direct_f30780_0_0'
- 'lipoprotein_a_f30790_0_0'
- 'oestradiol_f30800_0_0'
- 'phosphate_f30810_0_0'
- 'rheumatoid_factor_f30820_0_0'
- 'shbg_f30830_0_0'
- 'testosterone_f30850_0_0'
- 'total_bilirubin_f30840_0_0'
- 'total_protein_f30860_0_0'
- 'triglycerides_f30870_0_0'
- 'urate_f30880_0_0'
- 'urea_f30670_0_0'
- 'vitamin_d_f30890_0_0'
\n"
- ],
- "text/latex": [
- "\\begin{enumerate*}\n",
- "\\item 'eid'\n",
- "\\item 'age\\_at\\_recruitment\\_f21022\\_0\\_0'\n",
- "\\item 'sex\\_f31\\_0\\_0'\n",
- "\\item 'ethnic\\_background\\_f21000\\_0\\_0'\n",
- "\\item 'townsend\\_deprivation\\_index\\_at\\_recruitment\\_f189\\_0\\_0'\n",
- "\\item 'date\\_of\\_attending\\_assessment\\_centre\\_f53\\_0\\_0'\n",
- "\\item 'uk\\_biobank\\_assessment\\_centre\\_f54\\_0\\_0'\n",
- "\\item 'birth\\_date'\n",
- "\\item 'body\\_mass\\_index\\_bmi\\_f21001\\_0\\_0'\n",
- "\\item 'weight\\_f21002\\_0\\_0'\n",
- "\\item 'pulse\\_wave\\_arterial\\_stiffness\\_index\\_f21021\\_0\\_0'\n",
- "\\item 'pulse\\_wave\\_reflection\\_index\\_f4195\\_0\\_0'\n",
- "\\item 'waist\\_circumference\\_f48\\_0\\_0'\n",
- "\\item 'hip\\_circumference\\_f49\\_0\\_0'\n",
- "\\item 'standing\\_height\\_f50\\_0\\_0'\n",
- "\\item 'trunk\\_fat\\_percentage\\_f23127\\_0\\_0'\n",
- "\\item 'body\\_fat\\_percentage\\_f23099\\_0\\_0'\n",
- "\\item 'basal\\_metabolic\\_rate\\_f23105\\_0\\_0'\n",
- "\\item 'forced\\_vital\\_capacity\\_fvc\\_best\\_measure\\_f20151\\_0\\_0'\n",
- "\\item 'forced\\_expiratory\\_volume\\_in\\_1second\\_fev1\\_best\\_measure\\_f20150\\_0\\_0'\n",
- "\\item 'fev1\\_fvc\\_ratio\\_zscore\\_f20258\\_0\\_0'\n",
- "\\item 'peak\\_expiratory\\_flow\\_pef\\_f3064\\_0\\_2'\n",
- "\\item 'peak\\_expiratory\\_flow\\_pef\\_f3064\\_0\\_1'\n",
- "\\item 'peak\\_expiratory\\_flow\\_pef\\_f3064\\_0\\_0'\n",
- "\\item 'systolic\\_blood\\_pressure\\_automated\\_reading\\_f4080'\n",
- "\\item 'diastolic\\_blood\\_pressure\\_automated\\_reading\\_f4079'\n",
- "\\item 'pulse\\_rate\\_automated\\_reading\\_f102'\n",
- "\\item 'basophill\\_count\\_f30160\\_0\\_0'\n",
- "\\item 'basophill\\_percentage\\_f30220\\_0\\_0'\n",
- "\\item 'eosinophill\\_count\\_f30150\\_0\\_0'\n",
- "\\item 'eosinophill\\_percentage\\_f30210\\_0\\_0'\n",
- "\\item 'haematocrit\\_percentage\\_f30030\\_0\\_0'\n",
- "\\item 'haemoglobin\\_concentration\\_f30020\\_0\\_0'\n",
- "\\item 'high\\_light\\_scatter\\_reticulocyte\\_count\\_f30300\\_0\\_0'\n",
- "\\item 'high\\_light\\_scatter\\_reticulocyte\\_percentage\\_f30290\\_0\\_0'\n",
- "\\item 'immature\\_reticulocyte\\_fraction\\_f30280\\_0\\_0'\n",
- "\\item 'lymphocyte\\_count\\_f30120\\_0\\_0'\n",
- "\\item 'lymphocyte\\_percentage\\_f30180\\_0\\_0'\n",
- "\\item 'mean\\_corpuscular\\_haemoglobin\\_f30050\\_0\\_0'\n",
- "\\item 'mean\\_corpuscular\\_haemoglobin\\_concentration\\_f30060\\_0\\_0'\n",
- "\\item 'mean\\_corpuscular\\_volume\\_f30040\\_0\\_0'\n",
- "\\item 'mean\\_platelet\\_thrombocyte\\_volume\\_f30100\\_0\\_0'\n",
- "\\item 'mean\\_reticulocyte\\_volume\\_f30260\\_0\\_0'\n",
- "\\item 'mean\\_sphered\\_cell\\_volume\\_f30270\\_0\\_0'\n",
- "\\item 'monocyte\\_count\\_f30130\\_0\\_0'\n",
- "\\item 'monocyte\\_percentage\\_f30190\\_0\\_0'\n",
- "\\item 'neutrophill\\_count\\_f30140\\_0\\_0'\n",
- "\\item 'neutrophill\\_percentage\\_f30200\\_0\\_0'\n",
- "\\item 'nucleated\\_red\\_blood\\_cell\\_count\\_f30170\\_0\\_0'\n",
- "\\item 'nucleated\\_red\\_blood\\_cell\\_percentage\\_f30230\\_0\\_0'\n",
- "\\item 'platelet\\_count\\_f30080\\_0\\_0'\n",
- "\\item 'platelet\\_crit\\_f30090\\_0\\_0'\n",
- "\\item 'platelet\\_distribution\\_width\\_f30110\\_0\\_0'\n",
- "\\item 'red\\_blood\\_cell\\_erythrocyte\\_count\\_f30010\\_0\\_0'\n",
- "\\item 'red\\_blood\\_cell\\_erythrocyte\\_distribution\\_width\\_f30070\\_0\\_0'\n",
- "\\item 'reticulocyte\\_count\\_f30250\\_0\\_0'\n",
- "\\item 'reticulocyte\\_percentage\\_f30240\\_0\\_0'\n",
- "\\item 'white\\_blood\\_cell\\_leukocyte\\_count\\_f30000\\_0\\_0'\n",
- "\\item 'alanine\\_aminotransferase\\_f30620\\_0\\_0'\n",
- "\\item 'albumin\\_f30600\\_0\\_0'\n",
- "\\item 'alkaline\\_phosphatase\\_f30610\\_0\\_0'\n",
- "\\item 'apolipoprotein\\_a\\_f30630\\_0\\_0'\n",
- "\\item 'apolipoprotein\\_b\\_f30640\\_0\\_0'\n",
- "\\item 'aspartate\\_aminotransferase\\_f30650\\_0\\_0'\n",
- "\\item 'creactive\\_protein\\_f30710\\_0\\_0'\n",
- "\\item 'calcium\\_f30680\\_0\\_0'\n",
- "\\item 'cholesterol\\_f30690\\_0\\_0'\n",
- "\\item 'creatinine\\_f30700\\_0\\_0'\n",
- "\\item 'cystatin\\_c\\_f30720\\_0\\_0'\n",
- "\\item 'direct\\_bilirubin\\_f30660\\_0\\_0'\n",
- "\\item 'gamma\\_glutamyltransferase\\_f30730\\_0\\_0'\n",
- "\\item 'glucose\\_f30740\\_0\\_0'\n",
- "\\item 'glycated\\_haemoglobin\\_hba1c\\_f30750\\_0\\_0'\n",
- "\\item 'hdl\\_cholesterol\\_f30760\\_0\\_0'\n",
- "\\item 'igf1\\_f30770\\_0\\_0'\n",
- "\\item 'ldl\\_direct\\_f30780\\_0\\_0'\n",
- "\\item 'lipoprotein\\_a\\_f30790\\_0\\_0'\n",
- "\\item 'oestradiol\\_f30800\\_0\\_0'\n",
- "\\item 'phosphate\\_f30810\\_0\\_0'\n",
- "\\item 'rheumatoid\\_factor\\_f30820\\_0\\_0'\n",
- "\\item 'shbg\\_f30830\\_0\\_0'\n",
- "\\item 'testosterone\\_f30850\\_0\\_0'\n",
- "\\item 'total\\_bilirubin\\_f30840\\_0\\_0'\n",
- "\\item 'total\\_protein\\_f30860\\_0\\_0'\n",
- "\\item 'triglycerides\\_f30870\\_0\\_0'\n",
- "\\item 'urate\\_f30880\\_0\\_0'\n",
- "\\item 'urea\\_f30670\\_0\\_0'\n",
- "\\item 'vitamin\\_d\\_f30890\\_0\\_0'\n",
- "\\end{enumerate*}\n"
- ],
- "text/markdown": [
- "1. 'eid'\n",
- "2. 'age_at_recruitment_f21022_0_0'\n",
- "3. 'sex_f31_0_0'\n",
- "4. 'ethnic_background_f21000_0_0'\n",
- "5. 'townsend_deprivation_index_at_recruitment_f189_0_0'\n",
- "6. 'date_of_attending_assessment_centre_f53_0_0'\n",
- "7. 'uk_biobank_assessment_centre_f54_0_0'\n",
- "8. 'birth_date'\n",
- "9. 'body_mass_index_bmi_f21001_0_0'\n",
- "10. 'weight_f21002_0_0'\n",
- "11. 'pulse_wave_arterial_stiffness_index_f21021_0_0'\n",
- "12. 'pulse_wave_reflection_index_f4195_0_0'\n",
- "13. 'waist_circumference_f48_0_0'\n",
- "14. 'hip_circumference_f49_0_0'\n",
- "15. 'standing_height_f50_0_0'\n",
- "16. 'trunk_fat_percentage_f23127_0_0'\n",
- "17. 'body_fat_percentage_f23099_0_0'\n",
- "18. 'basal_metabolic_rate_f23105_0_0'\n",
- "19. 'forced_vital_capacity_fvc_best_measure_f20151_0_0'\n",
- "20. 'forced_expiratory_volume_in_1second_fev1_best_measure_f20150_0_0'\n",
- "21. 'fev1_fvc_ratio_zscore_f20258_0_0'\n",
- "22. 'peak_expiratory_flow_pef_f3064_0_2'\n",
- "23. 'peak_expiratory_flow_pef_f3064_0_1'\n",
- "24. 'peak_expiratory_flow_pef_f3064_0_0'\n",
- "25. 'systolic_blood_pressure_automated_reading_f4080'\n",
- "26. 'diastolic_blood_pressure_automated_reading_f4079'\n",
- "27. 'pulse_rate_automated_reading_f102'\n",
- "28. 'basophill_count_f30160_0_0'\n",
- "29. 'basophill_percentage_f30220_0_0'\n",
- "30. 'eosinophill_count_f30150_0_0'\n",
- "31. 'eosinophill_percentage_f30210_0_0'\n",
- "32. 'haematocrit_percentage_f30030_0_0'\n",
- "33. 'haemoglobin_concentration_f30020_0_0'\n",
- "34. 'high_light_scatter_reticulocyte_count_f30300_0_0'\n",
- "35. 'high_light_scatter_reticulocyte_percentage_f30290_0_0'\n",
- "36. 'immature_reticulocyte_fraction_f30280_0_0'\n",
- "37. 'lymphocyte_count_f30120_0_0'\n",
- "38. 'lymphocyte_percentage_f30180_0_0'\n",
- "39. 'mean_corpuscular_haemoglobin_f30050_0_0'\n",
- "40. 'mean_corpuscular_haemoglobin_concentration_f30060_0_0'\n",
- "41. 'mean_corpuscular_volume_f30040_0_0'\n",
- "42. 'mean_platelet_thrombocyte_volume_f30100_0_0'\n",
- "43. 'mean_reticulocyte_volume_f30260_0_0'\n",
- "44. 'mean_sphered_cell_volume_f30270_0_0'\n",
- "45. 'monocyte_count_f30130_0_0'\n",
- "46. 'monocyte_percentage_f30190_0_0'\n",
- "47. 'neutrophill_count_f30140_0_0'\n",
- "48. 'neutrophill_percentage_f30200_0_0'\n",
- "49. 'nucleated_red_blood_cell_count_f30170_0_0'\n",
- "50. 'nucleated_red_blood_cell_percentage_f30230_0_0'\n",
- "51. 'platelet_count_f30080_0_0'\n",
- "52. 'platelet_crit_f30090_0_0'\n",
- "53. 'platelet_distribution_width_f30110_0_0'\n",
- "54. 'red_blood_cell_erythrocyte_count_f30010_0_0'\n",
- "55. 'red_blood_cell_erythrocyte_distribution_width_f30070_0_0'\n",
- "56. 'reticulocyte_count_f30250_0_0'\n",
- "57. 'reticulocyte_percentage_f30240_0_0'\n",
- "58. 'white_blood_cell_leukocyte_count_f30000_0_0'\n",
- "59. 'alanine_aminotransferase_f30620_0_0'\n",
- "60. 'albumin_f30600_0_0'\n",
- "61. 'alkaline_phosphatase_f30610_0_0'\n",
- "62. 'apolipoprotein_a_f30630_0_0'\n",
- "63. 'apolipoprotein_b_f30640_0_0'\n",
- "64. 'aspartate_aminotransferase_f30650_0_0'\n",
- "65. 'creactive_protein_f30710_0_0'\n",
- "66. 'calcium_f30680_0_0'\n",
- "67. 'cholesterol_f30690_0_0'\n",
- "68. 'creatinine_f30700_0_0'\n",
- "69. 'cystatin_c_f30720_0_0'\n",
- "70. 'direct_bilirubin_f30660_0_0'\n",
- "71. 'gamma_glutamyltransferase_f30730_0_0'\n",
- "72. 'glucose_f30740_0_0'\n",
- "73. 'glycated_haemoglobin_hba1c_f30750_0_0'\n",
- "74. 'hdl_cholesterol_f30760_0_0'\n",
- "75. 'igf1_f30770_0_0'\n",
- "76. 'ldl_direct_f30780_0_0'\n",
- "77. 'lipoprotein_a_f30790_0_0'\n",
- "78. 'oestradiol_f30800_0_0'\n",
- "79. 'phosphate_f30810_0_0'\n",
- "80. 'rheumatoid_factor_f30820_0_0'\n",
- "81. 'shbg_f30830_0_0'\n",
- "82. 'testosterone_f30850_0_0'\n",
- "83. 'total_bilirubin_f30840_0_0'\n",
- "84. 'total_protein_f30860_0_0'\n",
- "85. 'triglycerides_f30870_0_0'\n",
- "86. 'urate_f30880_0_0'\n",
- "87. 'urea_f30670_0_0'\n",
- "88. 'vitamin_d_f30890_0_0'\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- " [1] \"eid\" \n",
- " [2] \"age_at_recruitment_f21022_0_0\" \n",
- " [3] \"sex_f31_0_0\" \n",
- " [4] \"ethnic_background_f21000_0_0\" \n",
- " [5] \"townsend_deprivation_index_at_recruitment_f189_0_0\" \n",
- " [6] \"date_of_attending_assessment_centre_f53_0_0\" \n",
- " [7] \"uk_biobank_assessment_centre_f54_0_0\" \n",
- " [8] \"birth_date\" \n",
- " [9] \"body_mass_index_bmi_f21001_0_0\" \n",
- "[10] \"weight_f21002_0_0\" \n",
- "[11] \"pulse_wave_arterial_stiffness_index_f21021_0_0\" \n",
- "[12] \"pulse_wave_reflection_index_f4195_0_0\" \n",
- "[13] \"waist_circumference_f48_0_0\" \n",
- "[14] \"hip_circumference_f49_0_0\" \n",
- "[15] \"standing_height_f50_0_0\" \n",
- "[16] \"trunk_fat_percentage_f23127_0_0\" \n",
- "[17] \"body_fat_percentage_f23099_0_0\" \n",
- "[18] \"basal_metabolic_rate_f23105_0_0\" \n",
- "[19] \"forced_vital_capacity_fvc_best_measure_f20151_0_0\" \n",
- "[20] \"forced_expiratory_volume_in_1second_fev1_best_measure_f20150_0_0\"\n",
- "[21] \"fev1_fvc_ratio_zscore_f20258_0_0\" \n",
- "[22] \"peak_expiratory_flow_pef_f3064_0_2\" \n",
- "[23] \"peak_expiratory_flow_pef_f3064_0_1\" \n",
- "[24] \"peak_expiratory_flow_pef_f3064_0_0\" \n",
- "[25] \"systolic_blood_pressure_automated_reading_f4080\" \n",
- "[26] \"diastolic_blood_pressure_automated_reading_f4079\" \n",
- "[27] \"pulse_rate_automated_reading_f102\" \n",
- "[28] \"basophill_count_f30160_0_0\" \n",
- "[29] \"basophill_percentage_f30220_0_0\" \n",
- "[30] \"eosinophill_count_f30150_0_0\" \n",
- "[31] \"eosinophill_percentage_f30210_0_0\" \n",
- "[32] \"haematocrit_percentage_f30030_0_0\" \n",
- "[33] \"haemoglobin_concentration_f30020_0_0\" \n",
- "[34] \"high_light_scatter_reticulocyte_count_f30300_0_0\" \n",
- "[35] \"high_light_scatter_reticulocyte_percentage_f30290_0_0\" \n",
- "[36] \"immature_reticulocyte_fraction_f30280_0_0\" \n",
- "[37] \"lymphocyte_count_f30120_0_0\" \n",
- "[38] \"lymphocyte_percentage_f30180_0_0\" \n",
- "[39] \"mean_corpuscular_haemoglobin_f30050_0_0\" \n",
- "[40] \"mean_corpuscular_haemoglobin_concentration_f30060_0_0\" \n",
- "[41] \"mean_corpuscular_volume_f30040_0_0\" \n",
- "[42] \"mean_platelet_thrombocyte_volume_f30100_0_0\" \n",
- "[43] \"mean_reticulocyte_volume_f30260_0_0\" \n",
- "[44] \"mean_sphered_cell_volume_f30270_0_0\" \n",
- "[45] \"monocyte_count_f30130_0_0\" \n",
- "[46] \"monocyte_percentage_f30190_0_0\" \n",
- "[47] \"neutrophill_count_f30140_0_0\" \n",
- "[48] \"neutrophill_percentage_f30200_0_0\" \n",
- "[49] \"nucleated_red_blood_cell_count_f30170_0_0\" \n",
- "[50] \"nucleated_red_blood_cell_percentage_f30230_0_0\" \n",
- "[51] \"platelet_count_f30080_0_0\" \n",
- "[52] \"platelet_crit_f30090_0_0\" \n",
- "[53] \"platelet_distribution_width_f30110_0_0\" \n",
- "[54] \"red_blood_cell_erythrocyte_count_f30010_0_0\" \n",
- "[55] \"red_blood_cell_erythrocyte_distribution_width_f30070_0_0\" \n",
- "[56] \"reticulocyte_count_f30250_0_0\" \n",
- "[57] \"reticulocyte_percentage_f30240_0_0\" \n",
- "[58] \"white_blood_cell_leukocyte_count_f30000_0_0\" \n",
- "[59] \"alanine_aminotransferase_f30620_0_0\" \n",
- "[60] \"albumin_f30600_0_0\" \n",
- "[61] \"alkaline_phosphatase_f30610_0_0\" \n",
- "[62] \"apolipoprotein_a_f30630_0_0\" \n",
- "[63] \"apolipoprotein_b_f30640_0_0\" \n",
- "[64] \"aspartate_aminotransferase_f30650_0_0\" \n",
- "[65] \"creactive_protein_f30710_0_0\" \n",
- "[66] \"calcium_f30680_0_0\" \n",
- "[67] \"cholesterol_f30690_0_0\" \n",
- "[68] \"creatinine_f30700_0_0\" \n",
- "[69] \"cystatin_c_f30720_0_0\" \n",
- "[70] \"direct_bilirubin_f30660_0_0\" \n",
- "[71] \"gamma_glutamyltransferase_f30730_0_0\" \n",
- "[72] \"glucose_f30740_0_0\" \n",
- "[73] \"glycated_haemoglobin_hba1c_f30750_0_0\" \n",
- "[74] \"hdl_cholesterol_f30760_0_0\" \n",
- "[75] \"igf1_f30770_0_0\" \n",
- "[76] \"ldl_direct_f30780_0_0\" \n",
- "[77] \"lipoprotein_a_f30790_0_0\" \n",
- "[78] \"oestradiol_f30800_0_0\" \n",
- "[79] \"phosphate_f30810_0_0\" \n",
- "[80] \"rheumatoid_factor_f30820_0_0\" \n",
- "[81] \"shbg_f30830_0_0\" \n",
- "[82] \"testosterone_f30850_0_0\" \n",
- "[83] \"total_bilirubin_f30840_0_0\" \n",
- "[84] \"total_protein_f30860_0_0\" \n",
- "[85] \"triglycerides_f30870_0_0\" \n",
- "[86] \"urate_f30880_0_0\" \n",
- "[87] \"urea_f30670_0_0\" \n",
- "[88] \"vitamin_d_f30890_0_0\" "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "colnames(data)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 147,
- "metadata": {},
- "outputs": [],
- "source": [
- "data_long = data %>% pivot_longer(all_of(colnames(data)[9:88]), names_to=\"column\", values_to=\"value\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 163,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A tibble: 6 × 5\n",
- "\n",
- "\teid | name | meaning | date | value |
\n",
- "\t<int> | <chr> | <chr> | <date> | <dbl> |
\n",
- "\n",
- "\n",
- "\t1000018 | | | 2009-11-12 | 26.5557 |
\n",
- "\t1000018 | O/E - weight | 162763007 | 2009-11-12 | 63.8000 |
\n",
- "\t1000018 | | | 2009-11-12 | 7.2770 |
\n",
- "\t1000018 | | | 2009-11-12 | 80.0000 |
\n",
- "\t1000018 | | | 2009-11-12 | 85.0000 |
\n",
- "\t1000018 | | | 2009-11-12 | 107.0000 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A tibble: 6 × 5\n",
- "\\begin{tabular}{lllll}\n",
- " eid & name & meaning & date & value\\\\\n",
- " & & & & \\\\\n",
- "\\hline\n",
- "\t 1000018 & & & 2009-11-12 & 26.5557\\\\\n",
- "\t 1000018 & O/E - weight & 162763007 & 2009-11-12 & 63.8000\\\\\n",
- "\t 1000018 & & & 2009-11-12 & 7.2770\\\\\n",
- "\t 1000018 & & & 2009-11-12 & 80.0000\\\\\n",
- "\t 1000018 & & & 2009-11-12 & 85.0000\\\\\n",
- "\t 1000018 & & & 2009-11-12 & 107.0000\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A tibble: 6 × 5\n",
- "\n",
- "| eid <int> | name <chr> | meaning <chr> | date <date> | value <dbl> |\n",
- "|---|---|---|---|---|\n",
- "| 1000018 | | | 2009-11-12 | 26.5557 |\n",
- "| 1000018 | O/E - weight | 162763007 | 2009-11-12 | 63.8000 |\n",
- "| 1000018 | | | 2009-11-12 | 7.2770 |\n",
- "| 1000018 | | | 2009-11-12 | 80.0000 |\n",
- "| 1000018 | | | 2009-11-12 | 85.0000 |\n",
- "| 1000018 | | | 2009-11-12 | 107.0000 |\n",
- "\n"
- ],
- "text/plain": [
- " eid name meaning date value \n",
- "1 1000018 2009-11-12 26.5557\n",
- "2 1000018 O/E - weight 162763007 2009-11-12 63.8000\n",
- "3 1000018 2009-11-12 7.2770\n",
- "4 1000018 2009-11-12 80.0000\n",
- "5 1000018 2009-11-12 85.0000\n",
- "6 1000018 2009-11-12 107.0000"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "data_mean = data_long %>% \n",
- " #filter(column %in% c(\"weight_f21002_0_0\", 'systolic_blood_pressure_automated_reading_f4080', \"diastolic_blood_pressure_automated_reading_f4079\", 'cholesterol_f30690_0_0',\n",
- " # \"hdl_cholesterol_f30760_0_0\", 'ldl_direct_f30780_0_0', \"triglycerides_f30870_0_0\"))\n",
- " mutate(name = case_when(column == \"weight_f21002_0_0\" ~ \"O/E - weight\",\n",
- " column == 'systolic_blood_pressure_automated_reading_f4080' ~ \"O/E - Systolic BP reading\",\n",
- " column == \"diastolic_blood_pressure_automated_reading_f4079\" ~ \"O/E - Dystolic BP reading\",\n",
- " column == \"cholesterol_f30690_0_0\" ~ \"Serum cholesterol level\",\n",
- " column == \"triglycerides_f30870_0_0\" ~ \"Serum triglycerides level\",\n",
- " column == \"hdl_cholesterol_f30760_0_0\" ~ \"Serum high density lipoprotein cholesterol level\",\n",
- " column == 'ldl_direct_f30780_0_0' ~ \"Serum low density lipoprotein cholesterol level\",\n",
- " TRUE ~ \"\"),\n",
- " meaning = case_when(column == \"weight_f21002_0_0\" ~ \"162763007\",\n",
- " column == 'systolic_blood_pressure_automated_reading_f4080' ~ \"163030003\",\n",
- " column == \"diastolic_blood_pressure_automated_reading_f4079\" ~ \"163031004\",\n",
- " column == \"cholesterol_f30690_0_0\" ~ \"1005671000000105\",\n",
- " column == \"triglycerides_f30870_0_0\" ~ \"1005691000000109\",\n",
- " column == \"hdl_cholesterol_f30760_0_0\" ~ \"1005681000000107\",\n",
- " column == 'ldl_direct_f30780_0_0' ~ \"1022191000000100\",\n",
- " TRUE ~ \"\")) %>% mutate(date = date_of_attending_assessment_centre_f53_0_0) %>% select(eid, name, meaning, date, value)\n",
- "head(data_mean)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_measurements = arrow::read_feather(glue(\"{data_path}/1_decoded/codes_gp_measurements_210120.feather\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_eids = (gp_measurements %>% select(eid) %>% distinct())$eid"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 169,
- "metadata": {},
- "outputs": [],
- "source": [
- "n=10\n",
- "eids = (data %>% select(eid) %>% filter(eid %in% gp_eids) %>% distinct() %>% sample_n(n))$eid"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 171,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Joining, by = \"eid\"\n",
- "\n",
- "`geom_smooth()` using formula 'y ~ x'\n",
- "\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in qt((1 - level)/2, df):\n",
- "\"NaNs produced\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n",
- "Warning message in max(ids, na.rm = TRUE):\n",
- "\"no non-missing arguments to max; returning -Inf\"\n"
- ]
- },
- {
- "data": {
- "image/png": "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\nbXr//fd37Nhhb2+/f//+zZs3z5w508PDIyEhwbit4uJiNzc3EYmPj/f09BSRXbt2TZgwoU+f\nPlqtNjY2dvXq1enp6XZ2dv369fv73//u6Oh4+fLlpUuXxsXF5ebmOjk5hYaGvvXWW8b9rGzn\nzp0TJ05s3779wYMHjeOZmZmrVq3as2fPxYsXzczM2rVr179//z//+c8qlUop0L1795ycnG+/\n/dbf399wVGJi4ujRo0Xkiy++GDp0qCF+5syZ/v3729nZnThxwsKCx80BAAAee+xBCAAAAAAA\nGggrK6tmzZqJyMmTJ+9YoEOHDsOGDevUqZNx1u3XX38NCgr67LPPLl682L17dy8vr0uXLn3x\nxRcBAQFpaWnGlYtIYWHhqlWr1q9fn5eXV1hYWK3uWVpaKjVER0dPmzattLS0Xbt2+fn5W7Zs\nGTt27NWrV4ODg2NiYlq3bt28efOMjIxFixatXLmyBtfhwIEDGo0mOjr68uXLvXr16tKlS25u\nbnR09IABA5KTk5Uy/fr1ExGTtOL+/fsNNZhUKCJ9+vQhOwgAANAwkCAEAAAAAAANh0ajEZGF\nCxdu2rSppKTkvuVLSkomTZqUm5s7ZsyYw4cPa7Xabdu2HT58ODg4OD8//4033igrK1NKKrmx\nwsLC9evXz549OykpaevWrdXqm1JDVlbWypUrt2/fnpCQkJiYuH79ejMzs19//fXVV1/18PBI\nSUn54Ycfjhw5EhISIiLR0dHVvQIFBQV//vOfb9y48dJLLx05cuRf//rX1q1bjx49OmTIkIKC\ngqlTpxYVFYnIH/7wBxE5dOiQ8bFJSUmtW7d2dXU1SRwqCcJnn322up0BAADAo4kEIQAAAAAA\naDjCwsJcXV1v3br1l7/8xdfXd/r06Rs3bjx9+vTd9ljZsmVLRkaGp6dneHi4g4ODEnRwcFi2\nbJmjo+OZM2cMC4cqexaePn06KCho2rRpzs7OLi4u1eqb8tpiTk7O9OnTe/TooQQ1Go2Pj49S\n8/Lly+3t7UXEwsLirbfeEpGsrKy8vLxqtRITE5OTk9OqVauIiAhbW1slaGNjs2TJEnt7+8zM\nzB9++EH++wZhSkrK7du3lTJFRUWpqak+Pj4+Pj5paWnXrl0z1EmCEAAAoIEhQQgAAAAAABqO\ndu3a6XS6SZMm2dnZXbt2LSYmZtasWQEBAT4+Pm+//fbevXtNysfHx4vIkCFDzM3/Z5LEyspK\neRkxMTHR5JDhw4fXspODBg0y/ujs7CwivXv3NmQoDUERuXr1arUq3717t4gEBQXZ2NgYxx0c\nHJR9GZWL0K5dOzc3txs3bpw4cUIpkJycXFpa2qNHj+7du1dUVBheLszIyMjKymrbtm2nTp2q\n1RMAAAA8slg4HgAAAAAANCgtWrSYN2/enDlzfv7553379h04cODEiRN5eXlarVar1fr7+69a\ntap169ZKYWWXwZiYmH379pnUc+HCBRE5e/asSdzb27s23bO0tGzTpo1xxNraWkRUKlXloIiU\nlpZWq/7Tp0+LiKenZ+Wv3N3dd+3adebMGeVjv379zp49e+jQoa5du8p/NyDs3bu3nZ2diBw8\neDAoKEh4fRAAAKAhIkEIAAAAAAAaIGtr66CgICXFdfPmzYMHDyr7C+7fv3/cuHHbt29XXhlU\nFtLU6/V6vf6O9Vy/ft2kWsO6nTVjb2+vrDVaOV6bag2UM2rWrFnlr5Q3FA1n9Ic//GH9+vWH\nDh2aOHGiiBw4cMDCwqJHjx6WlpY2NjZKXlBIEAIAADREJAgBAAAAAEADZ2dnp9FoNBrN888/\nP2XKlNTU1Li4uOeee07+uy/gRx99NH78+KpUZWVl9UC7Wnt3zD4qlI0YDYup9u3b19zcXFlK\ntLi4+OjRoz4+PsrCpN27dz906NCtW7eUTKGZmZmyZyEAAAAaBvYgBAAAQMORmJioUqnuuKia\nCZ1Op1Kp/Pz8HmgrAIBHzdChQ11dXUXk+PHjSqRly5Yikp2dXedtXblypc7rrIrmzZvLf98j\nNKEElQLKH127ds3JycnIyEhOTi4pKXnmmWeUr55++umysrIjR45kZWWdP3++c+fOhkVZAQAA\n0ACQIAQAAAAAAA1EVFRUSEhIeHj4PcpYWFiIiKWlpfJReeDj2LFjNW5UqbCoqMgkfrc1Sx80\n5Yx+++23yl+dPHlSRDw8PAyRP/zhDyJy+PDhpKQkETFOEIrIwYMHlTjriwIAADQwJAgBAADQ\nGD377LPx8fGbNm2q744AAOpSbm5uUlLSunXr0tLS7lggNTX1zJkzIuLr66tEBg4cKCKJiYkX\nLlwwKTx58uSpU6emp6ffu1HlHcSLFy8WFBQYx7/++usanURtaTQaEYmLiyssLDSO5+Xl7d+/\nX0QCAwMNQWXh0CNHjhw4cMDc3Lx3795KvGfPnk2aNElOTlYWICVBCAAA0MCQIAQAAEBj5ODg\n4Onp6ebmVt8dAQDUpSlTpjz55JM3btwYMWJEdHR0Tk6O4avMzMyVK1eGhoaKSK9evfr27avE\nhw4dqlary8vLp0yZYihfXFy8cOFCnU4XHx/fqlWrezfq7e1tbm5eWlq6dOnS8vJyEamoqFi9\nenVSUpKtre0DOc97eumll1QqVX5+/qxZs0pKSpRgQUHBjBkziouLPT09BwwYYCj89NNPW1tb\np6SkpKamdu7c2cHBQYnb29t7eXmlpKQcPXrU2tpaeaEQAAAADYZFfXcAAAAAAACgbjzxxBOb\nNm16/fXX9Xp9WFhYWFiYvb29jY3N1atXS0tLlTJ9+vSJiooyN///z0xbWVlFRUWFhoampqb6\n+fn5+vqam5ufPHnyypUrlpaWa9asadGixb0bbdOmTUhIyObNm6OiorZv396uXbvMzMz8/Px1\n69a98847hYWFFRUVD/a0/5etre3q1atfeeWV2NjYhIQELy+voqKiU6dO3bx5s23btqtXr27S\npImhsLW1da9evfbt2ydG64sqnn766ePHjx8/frxfv35NmzZ9mKcAAACAB403CAEAANDQKPOe\n//73v0eOHNm5c2c3NzeNRhMVFWU8P6vT6VQqlZ+fn8mxsbGxQ4YMeeqpp7y8vF5++WVlwrRv\n374qlWrv3r3VbQUA8PB5enru3r17+fLlzz//vIuLy+3bt/Pz85s2bfrUU0+NHDly48aNWq1W\nWRTUwMvLKz4+/s0331Sr1b/88suRI0fs7e1DQ0N/+umn/v37V6XRiIiImTNnqtXqvLy8c+fO\neXp6bt68OTAw0MbGRkSKi4sfyKneXffu3ePj41977bUWLVqkpKScPHmyQ4cO06dPj4+Pd3d3\nNymsbEMoIiY/i4a3BllfFAAAoOExY/4CAAAADUZiYuLo0aMdHR3/9re/zZgxw9HR0dHRMSMj\n48qVKyIyc+bMv/zlL0pJnU43efLk9u3bHzx40HD4J598snTpUhFxcXFxc3M7ffp0VlbWypUr\n//a3v12+fHnbtm09e/asVisAAAAAAACPIN4gBAAAQENTUlIyf/78yMjI5ORknU6Xmpo6atQo\nEVmzZo1hfbnKzp49u3z5chF599139+/fv3HjxqSkpGnTps2ePfvGjRsiYmZmVvtWAAAAAAAA\n6h0JQgAAADQ0V65cefnll4ODg5WPFhYWM2bMEJGbN29euHDhbkdptdrbt2937Nhx5syZSsTc\n3Py9997z9vYuKiqqq1YAAAAAAADqHQlCAAAANEBjxowx/uji4mJhYSEi2dnZdzvk8OHDIqLR\naEzeFPzTn/5Uh60AAAAAAADUOxKEAAAAaGgsLCzat29vEnRwcBCRO74LqFBe++vYsaNJvFev\nXnXYCgAAAAAAQL0jQQgAAICGxsbGpkmTJtU96vr16yLSrFkzk3ibNm1M3imsTSsAAAAAAAD1\njgQhAAAAICJSUVEhInfMBd4xCAAAAAAA8JgiQQgAAACIiNjZ2YnIjRs3TOJ5eXnl5eX10SMA\nAAAAAIAHggQhAAAAICKiUqlE5Pz58ybx5OTk+ugOAOBR4ezsrFKpUlJS6rsjotPpVCqVn59f\nfXcEAAAAjz2L+u4AgIYgKSnp22+/PXr0aGZmZlFRUdOmTdu2bevj4zN8+PDAwMD67h0AAFXi\n4+OTnJz873//e/bs2cbxf/zjH/XVJQAAAACNAXNrAB4+3iAEUCtlZWXTpk0LCQn517/+dfr0\n6ebNm7u4uFhYWKSnp8fGxo4ZM2bq1Km3b9+u724CAHB/w4YNE5FffvklOjpaiZSXly9ZsiQ9\nPd3CgufqAAD179lnn42Pj9+0aZNxMDIyUqVSZWVl1VevAAC1wdwagPpCghBArURGRsbGxlpZ\nWc2fP/+33347fPhwYmLiiRMnkpKSxowZIyJbt2796quv6rubAADcX8+ePUNCQkQkLCysX79+\noaGhfn5+q1atWrZsmbk5/zYDAOqfg4ODp6enm5ubcfBRWPsUAFBjzK0BqC/MdAColQ0bNojI\nzJkzX3/9dQcHB0Pc2dl58eLFI0aMEJGvvvqKB50AAI+FpUuXzpkzx93d/ffff09LS/P19d22\nbZu/v395ebmI8B4hAOARdPTo0fruAgCg5phbA1BfSBACqLmSkpLs7GwR6dmz5x0LvPfeeytX\nrty4caPJixe5ubnh4eEajaZjx46dOnUKCAj48MMP8/LyjMt8//33KpUqJCSktLR07ty53bp1\n8/f3F5HNmzerVCqNRmPSVnFxsUqlUqlUaWlpSmTXrl1KDSISGxs7aNAgd3d3Hx+ft956S+n2\n5cuX58yZ07t3b1dXV39//8jIyIqKirq5NACAetKvX7/MzEzDb4Gx48ePZ2ZmGjbwGDx4cGZm\n5sGDB43LWFhYvPXWW3v27NHr9UePHo2KiurSpUtBQUFZWZmItGzZsrqtAAAeL1qtdvDgwe7u\n7l5eXsOHD9+5c+fdSlZlUGM8JNmzZ8/IkSO7dOmiVqsDAwOjoqJMRh+XL1/+8MMPNRqNu7u7\nWq1+5plnJk6cuGfPHuMyOp1OpVL5+fkpH2fMmKFSqXJzc0WkV69eKpXqgw8+CAkJUalUc+bM\nqdzn69evu7i4qFSqvXv31vQKAQDqEnNrAOoRCUIANWdlZdWsWTMROXny5B0LdOjQYdiwYZ06\ndTIzMzMEf/3116CgoM8+++zixYvdu3f38vK6dOnSF198ERAQYDzTamVlJSKFhYWrVq1av359\nXl5eYWFhtbpnaWmp1BAdHT1t2rTS0tJ27drl5+dv2bJl7NixV69eDQ4OjomJad26dfPmzTMy\nMhYtWrRy5coaXAcAQMOQnZ39zTffrFixwmRM+/PPP4tIy5Yt27dvX09dAwA8DMuWLXv77bdT\nU1Pbtm3bq1eva9euvf766xs2bDAeziiqOKgxDEm0Wu2YMWP0er2rq2uzZs1OnTo1b968Tz75\nxFDy0qVLzz333BdffHH+/HkPD4+ePXuWl5fv3LnzlVdeiYqKuluHfX19Bw4cqPyt0WgGDx7c\nuXPn0NBQEdm2bVtpaalJ+R9//LGsrMzJyUmZIAYA1Dvm1gDUIxKEAGpFedpo4cKFmzZtKikp\nuW/5kpKSSZMm5ebmjhkz5vDhw1qtdtu2bYcPHw4ODs7Pz3/jjTeUVzTkv8u4FRYWrl+/fvbs\n2UlJSVu3bq1W35QasrKyVq5cuX379oSEhMTExPXr15uZmf3666+vvvqqh4dHSkrKDz/8cOTI\nEeVhqOjo6OpeAQBAQzJr1qzFixd/8sknht+j1NTUefPmicioUaMqTxADABqMc+fOLV++XET+\n+te/7t27d8OGDfHx8Rs2bFi8eLHJgyPVHdRkZWV98MEHkZGRycnJOp0uOTlZGX1ERUUZSq5c\nuTI7O/vpp58+evSoTqfTarWHDh1as2aNhYXFwoULr127dsc+jx8/PiIiQvn7448/XrNmTUhI\nyODBgx0cHK5evRoXF2dSfseOHSISEhLC3roA8Ohgbg1AfeE/QgC1EhYW5urqeuvWrb/85S++\nvr7Tp0/fuHHj6dOn77aewJYtWzIyMjw9PcPDww3rqjs4OCxbtszR0fHMmTMJCQlKsEmTJiJy\n+vTpoKCgadOmOTs7u7i4VKtvyjRuTk7O9OnTe/TooQQ1Go2Pj49S8/Lly+3t7eW/C8qJSFZW\nlslqDACAxsPR0fH//u//ROSTTz7x9fUdMmSIv7//0KFDL1686O3t/e6779Z3BwEAD5BWqy0r\nK1Or1dOnTzcEAwMDR48ebbLtU9UHNYYhyYQJE4KDg5WgpaXl7NmzRaSgoOD06dNK8MSJEyIy\nbNgw492nBg8evGDBgrlz5xYVFVX9RJo2baq0pdVqjeM3btxQFiwdOXJk1WsDADxozK0BqC8k\nCAHUSrt27XQ63aRJk+zs7K5duxYTEzNr1qyAgAAfH5+333678s4W8fHxIjJkyBCTR1atrKyU\nB6YSExNNDhk+fHgtOzlo0CDjj87OziLSu3dvk52flT+uXr1ay+YAAI+viRMnarXaF154oUmT\nJv/5z3/y8vK6du06d+7c7777zs7Orr57BwB4gA4dOiQigYGBJu+Lv/DCCyYlazCoMWQHFe3a\ntbOxsRGR/Px8JdK8eXOlZsNrH4qxY8dOmjTJ0dGxWucyevRopTbj0c1PP/1UUlLSs2dPNze3\natUGAHigmFsDUF8s6rsDAB57LVq0mDdv3pw5c37++ed9+/YdOHDgxIkTeXl5Wq1Wq9X6+/uv\nWrWqdevWSmFlJfSYmJh9+/aZ1HPhwgUROXv2rEnc29u7Nt2ztLRs06aNccTa2lpEVCpV5aCI\nVN6oAwDQqPTp06dPnz713QsAwMN2/vx5EXF1dTWJd+rUySRS3UFNkyZNKu9i27Rp01u3bhmW\nkps4cWJcXFxCQkJAQEBISEhAQEC3bt1qvBCor6+vp6dnWlra1q1bx40bpwR1Op2IjBo1qmZ1\nAgAeHObWANQLEoQA6oa1tXVQUFBQUJCI3Lx58+DBg8oa6Pv37x83btz27duVwa2yeYZer9fr\n9Xes5/r16ybV2tra1qZj9vb2d9wySlkAAQAAAADkvyORZs2amcSVAYXxOm/VHdTY2toqezjd\ng7+//5dffvn+++/r9fqIiIiIiIjmzZsPHDhwwoQJvr6+NTid0NDQ999/X6vVKgnCwsLC3bt3\nW1tbv/jiizWoDQDwEDC3BuAhI0EIoO7Z2dlpNBqNRvP8889PmTIlNTU1Li7uueeek/+uXf7R\nRx+NHz++KlVZWVk90K4CAAAAgIgoKcDKGz6Vl5ebBKs7qKmioKAgjUaTmJiovEqYkZERExMT\nExMzY8aM9957r7q1jRgxYsGCBSkpKXq9Xq1WJyQkFBUVvfjii5UzoACARxBza8lvnK8AACAA\nSURBVAAeAvYgBPAADR06VFmi5/jx40qkZcuWIpKdnV3nbV25cqXO6wQAPLKcnZ1VKlVKSkp9\nd0R0Op1KpfLz86vvjgAAakXZa7agoMAkXnmg8eAGNU2aNAkICFiwYMH+/fsTEhJGjhwpIsuX\nL1f2R6yWli1bKvtFbd26VUS2bdsmIkqFAIDHCHNrAB4cEoQAai4qKiokJCQ8PPweZZS1dCwt\nLZWPnp6eInLs2LEaN6pUWFRUZBK/27oKAAAAAHBfzs7OIpKRkWESP3HihEmk9oOaqvDw8Fi+\nfPnAgQNFZM+ePTWoYfTo0SKyY8eOgoKCuLi4J598sn///nXcSwBA7TC3BqAekSAEUHO5ublJ\nSUnr1q1TtkeuLDU19cyZMyJi2DZDGd8mJiYq2yYbmzx58tSpU9PT0+/dqPKc1MWLF02e7f36\n669rdBIAANTKs88+Gx8fv2nTJuNgZGSkSqXKysqqr14BAKqre/fuIpKQkGCyoOh3331nUrL2\ngxoTly5dmjVr1rRp0yp/1aJFC7nTHK6BYVOosrIyk6/69+/v5OT022+/rV69uri4eMSIEU2a\nNKlWxwAADxpzawDqEQlCADU3ZcqUJ5988saNGyNGjIiOjs7JyTF8lZmZuXLlytDQUBHp1atX\n3759lfjQoUPVanV5efmUKVMM5YuLixcuXKjT6eLj41u1anXvRr29vc3NzUtLS5cuXVpeXi4i\nFRUVq1evTkpKquWWywAA1ICDg4Onp6ebm5tx8FFY+xQAUC3Dhw83MzPT6/URERHKQENEvvnm\nm507dzZt2tS4ZO0HNSaaN2+u0+liY2MXL15snAtMSUn58ccfRcTf3/9ux7Zo0ULJERqWnjMw\nNzdX1hSNjIwU1hcFgEcSc2sA6pFFfXcAwGPsiSee2LRp0+uvv67X68PCwsLCwuzt7W1sbK5e\nvVpaWqqU6dOnT1RUlLn5/38cwcrKKioqKjQ0NDU11c/Pz9fX19zc/OTJk1euXLG0tFyzZo3y\nhOw9tGnTJiQkZPPmzVFRUdu3b2/Xrl1mZmZ+fv66deveeeedwsJCkwd+AQB4+I4ePVrfXQAA\nVE+XLl1ee+21tWvXfvrpp19//bVKpbp48WJOTs6SJUsWLVpUVFRkGGjUflBjwsbG5tNPP500\nadKKFSvWrl3r5uZma2ubnZ2tLPUWHBw8YMCAux1raWnp4+OTmpo6ZcoUtVrt6uq6bt06w7ej\nR49esWJFWVlZt27dPDw8anBZAAAPFHNrAOoRbxACqBVPT8/du3cvX778+eefd3FxuX37dn5+\nftOmTZ966qmRI0du3LhRq9UqCxcYeHl5xcfHv/nmm2q1+pdffjly5Ii9vX1oaOhPP/1UxS0x\nIiIiZs6cqVar8/Lyzp075+npuXnz5sDAQBsbGxEpLi5+IKcKAKgnWq128ODB7u7uXl5ew4cP\n37lz591K5ubmhoeHazSajh07durUKSAg4MMPP8zLyzMus2vXLpVKFRISIiJ79uwZOXJkly5d\n1Gp1YGBgVFSUyUj48uXLH374oUajcXd3V6vVzzzzzMSJE002gtLpdCqVys/PT/k4Y8YMlUqV\nm5srIr169VKpVB988EFISIhKpZozZ07lPl+/ft3FxUWlUu3du7emVwgAUDfmz58fHh7epUuX\ngoKC9PR0V1fXr776KjQ01M7OTv53oFH7QY2JAQMG7NixY+zYsW3atNHr9cnJyQUFBQEBAZ9/\n/vlnn31272OXLl3avXt3c3PznJwcR0dH46+cnZ29vb1FZNSoUTXoFQDgIWBuDUB9MeNxAAAA\nADyyli1btmTJEhFRq9VqtfrixYsnT54MDw8PCwsrKyvbvn17jx49lJK//vrrq6++mpub6+Dg\n4O3tXVJScurUqYKCgieeeOLbb7/19PRUiiUkJIwdO9bHx2fChAkzZ850dHR0dHT8/fffL1++\nLCLvvPPOu+++q5S8dOnSCy+8kJ2dbWNj4+HhYWNjc/78+czMTBGZN2/epEmTlGI6nW7y5Mnt\n27c/ePCgiKxbt2737t1xcXEiotFobGxsnnvuOTMzs+nTp7do0SI1NdXS0tL4BLVa7dtvv+3k\n5HTw4EHDQ8EAANSJS5cuPfPMM9bW1snJyQ4ODvXdHQAAADxCmIMAAADAI+rcuXPLly8Xkb/+\n9a979+7dsGFDfHz8hg0bFi9ebPKUW0lJyaRJk3Jzc8eMGXP48GGtVrtt27bDhw8HBwfn5+e/\n8cYbZWVlSkkLCwsRycrK+uCDDyIjI5OTk3U6XXJysvJOYVRUlKHkypUrs7Ozn3766aNHj+p0\nOq1We+jQoTVr1lhYWCxcuPDatWt37PP48eMjIiKUvz/++OM1a9aEhIQMHjzYwcHh6tWrSuLQ\n2I4dO0QkJCSE7CAAoM4tW7astLR01KhRZAcBAABggmkIAAAAPKK0Wm1ZWZlarZ4+fbohGBgY\nOHr06Nu3bxuX3LJlS0ZGhqenZ3h4uGEO1MHBYdmyZY6OjmfOnElISFCCZmZmIpKTkzNhwoTg\n4GAlaGlpOXv2bBEpKCg4ffq0Ejxx4oSIDBs2zHhSdfDgwQsWLJg7d25RUVHVT6Rp06ZKW1qt\n1jh+48YNZcHSkSNHVr02AADuq6KiYs2aNRs3brS1tX3rrbfquzsAAAB45JAgBAAAwCPq0KFD\nIhIYGKhk9QxeeOEFk5Lx8fEiMmTIEJP38KysrDQajYgkJiaaHGLIDiratWun7LeRn5+vRJo3\nb67UbHinUDF27NhJkyaZbPJ0X6NHj1Zqu3r1qiH4008/lZSU9OzZ083NrVq1AQBwN+np6S++\n+GLPnj3nz59vZmb28ccfV/c3CwAAAI2BRX13AAAAALiz8+fPi4irq6tJvFOnTiaRtLQ0EYmJ\nidm3b5/JVxcuXBCRs2fPGgebNGnSvn17k5JNmza9detWSUmJ8nHixIlxcXEJCQkBAQEhISEB\nAQHdunWr8UKgvr6+np6eaWlpW7duHTdunBLU6XQiMmrUqJrVCQBAZWVlZceOHRORrl27vvvu\nu0FBQfXdIwAAADyKSBACAADgEXX9+nURadasmUnc3t7ezMzMeBtCZUdAvV6v1+vvUZWBra2t\nshnhPfj7+3/55Zfvv/++Xq+PiIiIiIho3rz5wIEDJ0yY4OvrW4PTCQ0Nff/997VarZIgLCws\n3L17t7W19YsvvliD2gAAuCMPD4+MjIz67gUAAAAedSwxCgAAgEeUkgI0TgQqysvLTYLKGqQf\nffRR5l1s3769Bh0ICgpKTEz85z//+dprr7m4uFy7di0mJmbw4MERERE1qG3EiBGWlpYpKSlK\nFjMhIaGoqGjQoEGVM6AAAAAAAAAPFAlCAAAAPKLs7OxEpKCgwCR+5coVk0jLli1FJDs7u877\n0KRJk4CAgAULFuzfvz8hIWHkyJEisnz5cmV/xGpp2bLloEGDRGTr1q0ism3bNhFRKgQAAAAA\nAHiYSBACuLPExESVSuXp6VmHde7cuVOlUvn5+dVhnY+axnCOAPDQODs7i0jlddJOnDhhElF+\nsJQtlx4cDw+P5cuXDxw4UET27NlTgxpGjx4tIjt27CgoKIiLi3vyySf79+9fx70EgEav8v/k\nOp2O/9KNcUEA4AGpzQ320Z9TqtbZOTs7q1SqlJSUB90rADVGghAAAACPqO7du4tIQkKCyYKi\n3333nUlJJWmXmJh44cIFk68mT548derU9PT0ajV96dKlWbNmTZs2rfJXLVq0EJGioqK7Haus\ndyoiZWVlJl/179/fycnpt99+W716dXFx8YgRI5o0aVKtjgEAAAAAANQeCUIADU1kZKRKpcrK\nyqrvjgAAamv48OFmZmZ6vT4iIqK8vFwJfvPNNzt37mzatKlxyaFDh6rV6vLy8ilTpuTk5CjB\n4uLihQsX6nS6+Pj4Vq1aVavp5s2b63S62NjYxYsXG+cCU1JSfvzxRxHx9/e/27EtWrRQcoTH\njx83+crc3FxZUzQyMlJYXxQAHpZnn302Pj5+06ZN9d2RulSbgU+DvCAA8OBU/ZbbsG+wDfvs\ngEbIor47AAB1jLULAKDB6NKly2uvvbZ27dpPP/3066+/VqlUFy9ezMnJWbJkyaJFi4qKigxv\nFlpZWUVFRYWGhqampvr5+fn6+pqbm588efLKlSuWlpZr1qxRXvurOhsbm08//XTSpEkrVqxY\nu3atm5ubra1tdna2Xq8XkeDg4AEDBtztWEtLSx8fn9TU1ClTpqjValdX13Xr1hm+HT169IoV\nK8rKyrp16+bh4VGDywIAqC4HB4e63T3hUVCbgU+DvCAA8OBU/ZbbsG+wDfvsgEaINwgBNDRH\njx6t7y4AAOrM/Pnzw8PDu3TpUlBQkJ6e7urq+tVXX4WGhtrZ2YlIcXGxoaSXl1d8fPybb76p\nVqt/+eWXI0eO2Nvbh4aG/vTTTzXb52/AgAE7duwYO3ZsmzZt9Hp9cnJyQUFBQEDA559//tln\nn9372KVLl3bv3t3c3DwnJ8fR0dH4K2dnZ29vbxEZNWpUDXoFAICCgQ8APDTccgE0SCQIgUYq\nOzv7/fff/8Mf/uDm5ubl5fXKK68cPny4cjFlY6R///vfI0eO7Ny5s5ubm0ajiYqKMtkLSkQy\nMzPDwsL69evXsWNHd3f3fv36hYWFZWZmVqUzubm54eHhGo2mY8eOnTp1CggI+PDDD/Py8kyK\nXb58+cMPP9RoNO7u7mq1+plnnpk4ceKePXsMBWbMmKFSqXJzc0WkV69eKpXqgw8+qFYr33//\nvUqlCgkJKS0tnTt3brdu3YxXkKvNOQIAasbc3PxPf/rTjz/+mJ6enpaWtmXLlj/+8Y8isn//\n/szMTJN1Plu1ajV37tyEhIQzZ86cO3fuwIEDS5Ys6dSpk3GZfv36ZWZmpqWlVW7r+PHjmZmZ\ngYGBhkjnzp0XLVq0d+/etLS0jIyMY8eO/fOf/wwODjbsMigigwcPzszMPHjwoHFVnp6eO3bs\n0Ov1J06cWLx4sfFXly5dSktLs7e3DwkJqcWFAQBUg06nU6lUfn5+hkhMTIxKpRo2bJiIbN68\n+YUXXvDw8HjqqaeGDh26ffv2yjVUZSxQ9TprOe6o/cCn8gXZtWuX0iUR2bNnz8iRI7t06aJW\nqwMDA+84AASARuJut9y73ckr32AVsbGxQ4YMeeqpp7y8vF5++eV9+/aJSN++fVUq1d69e+/Y\ndEhIiEqlmjNnTuWvrl+/7uLiYnJsFef6ajM/drez02q1gwcPdnd39/LyGj58+M6dO+92Petq\nDhBAnSBBCDRGqampAwYM+PLLL3NyctRqtYWFxZ49e4KDg1evXm1S0traOiYmZuzYsXq9Xq1W\n29ranjx5ct68eUuXLjUuduDAAY1GEx0dffny5V69enXp0iU3Nzc6OnrAgAHJycn37syvv/4a\nFBT02WefXbx4sXv37l5eXpcuXfriiy8CAgKMZ28vXbr03HPPffHFF+fPn/fw8OjZs2d5efnO\nnTtfeeWVqKgopYyvr+/AgQOVvzUazeDBgzt37lytVqysrESksLBw1apV69evz8vLKywsrP05\nAgBgsGzZstLS0lGjRjk4ONR3XwCg8bK2thaRgoKCyMjImTNn/v77725ubpaWlikpKVOmTFm1\napVx4SqOBapeZy3HHbUf+FRmaWmpdEmr1Y4ZM0av17u6ujZr1uzUqVPz5s375JNPanW5AeCx\ndbdb7j3u5JV98skn06ZNO3r0aOvWrXv27Hnu3LnQ0NAdO3bcuHFDRGxsbO54VGhoqIhs27at\ntLTU5Ksff/yxrKzMycnJ8HxJFef6aj8/VtmyZcvefvvt1NTUtm3b9urV69q1a6+//vqGDRuM\nn6qsVutVmQMEUDcqADQyN2/e7NOnj5OT0+zZs5Xdm8rLy6Ojo52cnDp06HDs2DGl2M8//+zk\n5NSlS5euXbtu2bJFCZaWls6YMcPJyalTp04lJSVK8Pr1676+vk5OTm+++ebNmzeVYGFh4eTJ\nk52cnHr37n3r1i0l+MMPPzg5OT399NOGzhQXFyud+etf/3r9+nVDhVOnTnVycnr22WdLS0uV\n4N///ncnJ6fg4GBDsYqKih07djg7O7u6ul69elWJZGdnOzk5OTk5Xbx4sQat7N6928nJqX//\n/j169FixYkVGRsa5c+dqeY4AACjKy8tXr17t5OTk7u5+6dKl+u4OADRYlf8n37Fjh0nk+++/\nd3Jy8vDw8PDw2LlzpxIsKSl55513nJycXFxcsrKylGDVxwJVr7P2445aDnwqX5A9e/Y4OTn5\n+voaDwBLSkqmT5+unJThWABobO54y73bnbzyDTY9Pb1Dhw5OTk5Lly5VIrdv3/7444+7dOni\n5ubm5OR05MgRJW7y+3Xr1i0PDw8nJ6fvv//epEvjxo1zcnJatGiR8rGKc321nx+rfHZ6vd7Z\n2dnJyWn58uWGYEJCQpcuXZSzNpxdnc8BAqg93iAEGp3Y2NiMjAxnZ+cFCxYoj7iamZmNHz8+\nMDDw9u3bmzdvNi585cqVl19+OTg4WPloYWExY8YMEbl58+aFCxeUYExMTE5OTqtWrSIiImxt\nbZWgjY3NkiVL7O3tMzMzf/jhh7t1ZsuWLRkZGZ6enuHh4YYXKRwcHJYtW+bo6HjmzJmEhAQl\neOLECREZNmyY8fsWgwcPXrBgwdy5c4uKiu5xylVvRVlS9fTp00FBQdOmTXN2dnZxcanlOQIA\nkJ6e/uKLL/bs2XP+/PlmZmYff/yxycaEAICHTHmtoaCg4LXXXhs0aJAStLS0XLhwYYsWLUpL\nSw2LglZ9LFD1Oh/QuKPqA5+7XZCcnJwJEyYYBoCWlpazZ89WTur06dNVvroA0PDd7U5emVar\nvX37dseOHWfOnKlEzM3N33vvPW9v73tPZzVt2lS5IWu1WuP4jRs3lMU2R44cqUSqONdX+/mx\nO55dWVmZWq2ePn26IRgYGDh69Ojbt28bl3w4c4AAqoUEIdDo7N69W0See+455cfeYOnSpXv3\n7p01a5ZJ+TFjxhh/dHFxsbCwEJHs7GzjCoOCgkyWRHBwcOjbt6+I3G0tdRGJj48XkSFDhpib\n/8/tyMrKSqPRiEhiYqISad68uVK+rKzMuOTYsWMnTZp072nWqrdiMHz4cOOPtTlHAADKysqO\nHTuWl5fXtWvX6Ojol156qb57BAD4/0z+87e2tlb+wzes51mDscB967xbyVqOO2ow8KnMkB1U\ntGvXTulMfn7+fY8FgEbI5E5embIRoEajMVly809/+tN9Kx89erSIxMfHX7161RD86aefSkpK\nevbs6ebmpkSqONdX+/mxyg4dOiQigYGBJmf3wgsvmJR8OHOAAKrFor47AOBhO3XqlIi4urqa\nxO/4+2phYdG+fXuToIODw5UrVwwP7ChPknp6elY+3N3dfdeuXWfOnLlbZ5QVxmNiYpTNmY0p\nbyiePXtW+Thx4sS4uLiEhISAgICQkJCAgIBu3bqZ/EtR+1YMvL29jT/W5hwBAPDw8MjIyKjv\nXgAATFlbW3fs2NEkqFarReT3339XPlZ3LFCVOg3qdtxRg4GPiSZNmlQeADZt2vTWrVslJSX3\nPhYAGieTO3llyh248k9Dr1697lu5r6+vp6dnWlra1q1bx40bpwR1Op2IjBo1ylCsinN9tZ8f\nq+z8+fN3bLpTp04mkYczBwigWkgQAo2O8syRvb19VQrb2NiYPHxU2bVr10SkWbNmlb9SlgK4\nfv36vY/V6/V6vf6OBQzH+vv7f/nll++//75er4+IiIiIiGjevPnAgQMnTJjg6+tblR5WpRWF\ntbW1YT0f4xpqdo4AAAAAHk3NmzevPOGo/Id/8+ZN5WN1xwJVqVNR5+OO6g58KrO1tVUWjAEA\nVEXlO3llyr238r29TZs2ZmZmFRUV9z48NDT0/fff12q1SoKwsLBw9+7d1tbWL774oqFMFef6\naj8/drdDKp+dvb29ydk9nDlAANXCv31Ao6MMVouLi+uqQpM1BIwp/wfc4xkf5diPPvpo/Pjx\n920oKChIo9EkJiYqjxFlZGTExMTExMTMmDHjvffeu28Pq9iKiFhZWd2xhju67zkCAAAAeDTd\n8WlI5T98ZQ8nqf5YoCp1Kup83FHdgQ8AoJYq38krU27gd7zDVyVBOGLEiAULFqSkpOj1erVa\nnZCQUFRU9OKLLxrn5Ko411f7+bHKlP5XPovy8nKT4MOZAwRQLcxoA41OixYt5L/PFtUJZWVw\n5TkgE0pQKXBHLVu2FKPtDO+rSZMmAQEBCxYs2L9/f0JCgrIb8/Lly5UVz+uqlcpqc44AABHZ\nuXOnSqXy8/MzRHQ6nUmkkeOCAMDDV1BQUDl448YNEWndurXysbpjgarUeTe1HHfUfuADAKhz\ndnZ28t8fAmN5eXnl5eX3Pbxly5aDBg0Ska1bt4rItm3bRESZEDOo4lzfg/iZUM6u8m/flStX\natl6zeYAAVQLCUKg0VEWAa+8d0V6enpMTExCQkJ1K1R2yPjtt98qf3Xy5EkR8fDwuPexx44d\nq26jSrXLly8fOHCgiOzZs+e+PaxZK8Y11OwcAQAAADyabty4kZWVZRI8d+6ciLRp00b5WN2x\nQFXqvJtajjtqP/ABANQ5lUol/92rz1hycnIVaxg9erSI7Nixo6CgIC4u7sknn+zfv79xgSrO\n9T2InwlnZ2cRqbzh+okTJ0wiD2cOEEC1kCAEGh2NRiMiP/74o8mzS8uWLZs+ffp3331Xswrj\n4uIKCwuN43l5efv37xeRwMDAux2r/LQnJiYq2xEbmzx58tSpU9PT00Xk0qVLs2bNmjZtWuUa\nlIekioqKlI+GFRvKysqq28oDOkcAwB09++yz8fHxmzZtqu+O1KXIyEiVSlV5XrgqGuQFAYBH\nn06nM/5YWlqq/Iffs2dPJVKDscB967ybqrf1gAY+AIDK7njLrTofHx8R+fe//20S/8c//lHF\nGvr37+/k5PTbb7+tXr26uLh4xIgRJstZV3Gu70H8THTv3l1EEhISTBYUrTzBWOdzgABqjwQh\n0Oi89NJLbdu2vXbt2tSpU5VlaioqKr7++mvll3vMmDE1qFClUuXn58+aNaukpEQJFhQUzJgx\no7i42NPTc8CAAXc7dujQoWq1ury8fMqUKTk5OUqwuLh44cKFOp0uPj6+VatWItK8eXOdThcb\nG7t48WLj/wNSUlJ+/PFHEfH391ciLVq0UP5vO378eHVbeUDnCAC4IwcHB09PTzc3t/ruSF1K\nSUmp8bEN8oIAwCPOzs5uxYoVqampysfy8vL58+fn5+fb2toOGTJECVZ3LFCVOu+m6m09oIEP\nAKCyO95yq27YsGEi8ssvv0RHRyuR8vLyJUuWpKenW1hYVKUGc3NzZYHNyMhIqbS+qFR5ru9B\n/EwMHz7czMxMr9dHREQYVkz95ptvdu7c2bRpU+OSdT4HCKD2qnQPAtCQ2NjYREVFvfLKK/Hx\n8d27d3d1dc3Nzc3PzxeRd9555+mnn65uhba2tqtXr37llVdiY2MTEhK8vLyKiopOnTp18+bN\ntm3brl692uSxJmNWVlZRUVGhoaGpqal+fn6+vr7m5uYnT568cuWKpaXlmjVrlIeDbGxsPv30\n00mTJq1YsWLt2rVubm62trbZ2dl6vV5EgoODDeNkS0tLHx+f1NTUKVOmqNVqV1fXdevWVbGV\nB3SOAIDG4+jRo/XdBQBANbRu3XrIkCFDhw719vZu3br1yZMnMzMzRWTevHnKVklS/bFAVeq8\nm6q39YAGPgCAyu54y6364T179gwJCdFqtWFhYWvXrm3fvv2ZM2fy8/M3bNjw6quvVrGS0aNH\nr1ixoqysrFu3bpWXm67iXN+D+Jno0qXLa6+9tnbt2k8//fTrr79WqVQXL17MyclZsmTJokWL\nioqKDG8W1vkcIIDa4w1CoDHq0aNHfHz8mDFjnnzyybNnz5aWlvbr12/Dhg3vvvtuzSrs3r17\nfHz8a6+91qJFi5SUlJMnT3bo0GH69Onx8fHu7u73PtbLyys+Pv7NN99Uq9W//PLLkSNH7O3t\nQ0NDf/rpJ+MV1QcMGLBjx46xY8e2adNGr9cnJycXFBQEBAR8/vnnn332mXGFS5cu7d69u7m5\neU5OjqOjY7VaeUDnCACoTKfTqVQqPz8/QyQmJkalUikP2G7evPmFF17w8PB46qmnhg4dun37\n9so1ZGZmhoWF9evXr2PHju7u7v369QsLC1MmYWtQ5/fff69SqUJCQkpLS+fOndutWzfjR1Pv\n29aMGTNUKlVubq6I9OrVS6VSffDBB4Zvc3Nzw8PDNRpNx44dO3XqFBAQ8OGHH+bl5d37guza\ntUvpkojs2bNn5MiRXbp0UavVgYGBUVFRJmv4AABqoLy8fO7cuYsXLzY3Nz948OC1a9d69+69\nbt06kxnbao0Fqljn3VS9rQc08AEAVHbHW261Dp8zZ467u/vvv/+elpbm6+u7bds2f39/5ZW7\nqrxH6Ozs7O3tLSKjRo26Y4EqzvU9iJ+J+fPnh4eHd+nSpaCgID093dXV9auvvgoNDbWzsxOR\n4uLi6rZe9TlAALVkxswCAAAAHrSdO3dOnDixffv2Bw8eVCI6nW7y5MnGkR07drzxxhseHh4v\nvfTSokWLWrVqpVKpzp8/f/XqVREJCwv785//bKjwwIED48aNu3HjRrNmzbp161ZUVHTy5MmC\nggIHB4eNGzf26tWrunXGxcWNGzfOx8fnj3/84+LFi0WkTZs2ygJxVWlr3bp1u3fvjouLExGN\nRmNjY/Pcc88pub1ff/311Vdfzc3NdXBw8Pb2LikpOXXqVEFBwRNPPPHtt996enre7YIkJCSM\nHTvWx8dnwoQJM2fOdHR0dHR0/P333y9fviwi77zzTo2f7AEAVP5hejTrBAA0VAUFBcpY4MCB\nAx06dLh34UuXLj3zzDPW1tbJyckODg4PpYMAGj7eIAQAAMAjQVk27eLFkxXTnAAAIABJREFU\ni59//vnatWv/85///PDDD6mpqaNHjxaRxYsXX7p0SSlZUFDw5z//+caNGy+99NKRI0f+9a9/\nbd269ejRo0OGDCkoKJg6daphs4qq16k8t1tYWLh+/frZs2cnJSVt3bq16m2NHz8+IiJCqerj\njz9es2aNkh0sKSmZNGlSbm7umDFjDh8+rNVqt23bdvjw4eDg4Pz8/DfeeKOsrOxuF0TpUlZW\n1gcffBAZGZmcnKzT6ZKTk5Wao6Ki7nEsAAAAgEdBdnb2N998s2LFCpMXdX7++WcRadmyZfv2\n7e9bybJly0pLS0eNGkV2EEAdIkEIAACAR4KZmZmIFBQUvPbaa4MGDVKClpaWCxcubNGiRWlp\nqWFR0JiYmJycnFatWkVERNja2ipBGxubJUuW2NvbZ2Zm/vDDD9WtU0klnj59OigoaNq0ac7O\nzi4uLtVq6462bNmSkZHh6ekZHh5uGMw7ODgsW7bM0dHxzJkzCQkJ974gOTk5EyZMCA4ONnR+\n9uzZykmdPn26ylcXAAAAQP2YNWvW4sWLP/nkE8MTfqmpqfPmzRORUaNGKf/2301FRcWaNWs2\nbtxoa2v71ltvPYTeAmg8SBACAADg0TJ8+HDjj9bW1n379hWR5ORkJbJ7924RCQoKsrGxMS7p\n4OCglNy7d29167xbyRq0ZSw+Pl5EhgwZYm7+P/94W1lZaTQaEUlMTLzH4QpDdlDRrl07pTP5\n+fn3PRYAAABAPXJ0dPy///s/Efnkk098fX2HDBni7+8/dOjQixcvent732PXgPT09BdffLFn\nz57z5883MzP7+OOPa7D9IQDcw/13QAUAAAAeGmtr644dO5oE1Wq1iPz+++/KR+XNOcPufcbc\n3d137dp15syZ6tZp4O3tbfyxum2ZSEtLE5GYmJh9+/aZfHXhwgUROXv27D0OF5EmTZpUXnSo\nadOmt27dKikpufexAAAAAOrdxIkTO3fuvHbt2kOHDv3nP/+xsbHp2rXr4MGDJ0yYYPIYorGy\nsrJjx46JSNeuXd99992goKCH2GUAjQIJQgAAADxCmjdvbvKynYgoi3PevHlT+Xjt2jURadas\nWeXDlZLXr1+vbp0Ka2trwzqiNWvLhHK4Xq/X6/V3LHDvw0XE1tZW2YwQAFCH/vjHP2ZmZj76\ndQIAGoY+ffr06dOnWod4eHhkZGQ8oP4AgJAgBAAAwCNF2QvQREVFhYhYW1srH++xS4dS0iQd\nWJU6FVZWVibFqtvWHQ//6KOPxo8ff49iAAAAAAAADxN7EAIAAOARUlBQUDn4/9i794CoyvyP\n488Mw2WAEUZQFBCF0ERNvKBkyoqA5jW0tW01Sl3DXFovtVv60267eSnNX3mpTW3LrK3WRFsV\nIWXIFi94QVHygqk0XhAGccJBuQ3M74/TjyVUHK4Hh/frr5nnPOc5n+MfxTnfeZ6nqKhICOHp\n6Sl9dXNzE/8/Oa8GqVHqUKcx76au16pBq9UKIfLy8mq/CgAAAAAAQHOiQAigqSQlJfn4+ISG\nhsodRIgWFgYAUIuioqKrV6/WaPzpp5+EEO3atZO+SjsCnj59+vbTs7KyhBAPPvhgXce8m7pe\n646nS3uHAABagtTUVB8fnztuLltvreFxozXcIwC0QC3qP78tKgyAhqNACAAAgJYlISGh+tfy\n8vL9+/cLIfr37y+1RERECCGSk5Nv3bpVvWdBQYHUc9iwYXUd826sv1bVYqRms7mqW1RUlBAi\nNTX10qVLNUaeMWNGXFzc+fPnaw8AAAAAAADQ6CgQAgAAoAVxcXFZtWpVRkaG9LWysvKvf/3r\n9evXnZ2dx44dKzVOmDDBx8fn+vXr8+bNKysrkxpNJtPcuXNLS0u7d+8eGRlZ1zHvxvprubu7\nSzXCH374oer0cePG+fv7V1ZWzpw502AwSI2lpaVLlixJSEjQ6XQeHh71/acCALQuq1ev9vHx\nuX1OPAAAAFAPKrkDAAAAAP/l6ek5duzYcePG9erVy9PTMysr68qVK0KIN954Q9rPTwjh7Oy8\ndu3ayZMnb9myJSUlJSgoqKSk5OzZszdv3uzQocPatWvt7OzqOubdWH8te3v74ODgjIyMmTNn\n+vv7d+nSZcOGDQ4ODuvXr580aVJGRkZoaGifPn2USmVWVpbRaLS3t1+3bp27u3uj/xsCAGzS\n0aNH5Y4AAAAA28EMQgAAALQglZWVCxYsePvtt5VK5cGDBwsLCwcMGLBhw4annnqqere+ffvq\ndLpp06a5u7sfPXo0KyurU6dOs2fP1ul0gYGB9Rvzbqy/1ooVK/r27atUKg0Gg5eXl9QYFBSk\n0+mef/55f3//zMzM9PR0V1fXSZMm7d69e+jQoQ34pwIAtC7Hjh2TOwIAAABsBzMIATS3/Pz8\njz76aPfu3Xq9XqlU+vj4REZGxsXFVa2x9tvf/jYtLW3q1KmLFy+uca7BYOjfv39lZWV8fPzD\nDz9s5YAAANmNHDlSmrRXZcyYMTVaJBaLRQgxefLkyZMn1z6mt7f3okWLrLm6NWOGhYXdMU+d\nrtW9e/cdO3bc3u7h4bFgwYIFCxbUcu7t/yC1RKq+iikAoLq8vLwPPvhAp9Pl5OQ4Ojr27dv3\nhRdeGDBgQI1u0vzvPXv2vP/++ydPniwpKenSpcukSZOeffbZqj1lJVeuXPn73//+/fff5+Tk\nKBSKjh07Dh069I9//KOPj889w1j5qHLt2rW///3v33333cWLFysqKry8vHr27PnMM89U/Y5k\n7ty5X3/9tfQ5JCRECPHcc8+99tpr1l9l586dsbGxgwYN+vLLL19//fUdO3a4urpKm+k28B4B\nALLg9RqAhmMGIYBmdfLkyeHDh69ZsyYnJ6dv375BQUG5ubkffvhheHj4mTNnpD7R0dFCiKSk\nJOl9bnU7d+6srKz09vYODQ21fkAAAAAArUFGRkZkZORHH31kMBj8/f1VKtX3338/fvz4tWvX\n1ujp6OgYHx//9NNPZ2dn+/v7Ozs7Z2VlvfHGGytWrKjeLS0tLSIi4pNPPrl27VpISEjPnj3z\n8/M/+eSTyMjII0eO1B7GykeV3NzcESNGfPjhhxcvXnzwwQelN7ZJSUmTJ09ev3691KdPnz5R\nUVHS54iIiDFjxvTo0aNOV3FwcBBC3Lp16+9///unn35aUFBw69atht8jAEAWvF4D0CgoEAJo\nPmVlZbGxsfn5+TExMYcPH968efO2bdsOHz48fvz469evP/fcc2azWQgxduxYlUqVm5t7+xI6\n0rSM6Oho6Ve9Vg4IAAAAwObdunUrLi7OaDQ+88wzmZmZOp3uxIkT0rSJxYsXnzhxonrnsrKy\nv/71r6tXrz5y5EhCQkJGRsbvfvc7IcS6devKy8ulPiaT6Y9//GNRUdGECRPS09P/9a9//fvf\n/z527NjYsWNNJlNcXFxJScndwlj/qPLBBx/k5eUNHDjw2LFjCQkJmzdvPnTo0Lp161Qq1ZIl\nSwoLC4UQU6dOXb58udR/2bJl69atmzhxYp2uolKppH+iTz/9dP78+QcOHPj3v//dwHsEAMiC\n12sAGgsFQgDNZ+vWrXq9vnv37kuXLtVoNFKjRqN59913vby8zp07l5KSIoRo27bt4MGDhRCJ\niYnVTy8oKDh06JAQ4vHHH6/TgAAAAABs3pYtW/R6vZ+f36JFixwdHYUQCoVi6tSpw4YNq6io\n2LRpU/XORqPxySefHD9+vPRVpVLNnTtXCHHz5s1Lly5JjfHx8QaDwcPDY/ny5c7OzlKjWq1+\n5513XF1dr1y5UuOBpTrrH1VOnTolhIiOjq7qJoQYM2bMokWLFixYUHt9zvqrSEuq/vjjj8OH\nD581a5afn1/nzp0beI8AAFnweg1AY6FACKD56HQ6IcTYsWOVyl/9x8fBwSEiIkIIkZqaKrVI\nyyDU+AsmMTGxoqKiW7duVcvpWD8gAAAAANv23XffCSFGjBghFcOqrFixYu/evfPmzavRPyYm\npvrXzp07S9Ps8vLyqg84fPhwtVpdvadGo5Feue7du/duYax/VHFzc5P615if8fTTT8fGxnp5\nedVyy/V4IKp6HdzwewQAyILXawAai0ruAABaEWnV8vj4+H379tU4JP1K98KFC9LX0aNHz58/\nPzs7+8yZM927d5capQUQJkyYUI8BAQAt38iRI69cudLyxwQAtExnz54VQnTp0qVG+x1rbCqV\nytfXt0ajRqMxGo1Vk/Z+/PFHIUTV80h1gYGB33777blz5+4WxvpHlenTpycnJ6ekpISHh0+c\nODE8PLx37941XtE2/CpVevXqVf1rQ+4RACALXq8BaCwUCAE0H2n/jOzs7Ozs7Dt2uHHjhvRB\no9GEh4fv2rUrMTFR+gvGaDQeOHBACFG1ClCdBgQAAABg237++WchhKurqzWd1Wp1jYmGt5Me\nN9q0aXP7IWkFtloeN6x/VHnkkUc++uij119/PTs7e/ny5cuXL3dzc4uKivrDH/7Qp08faxJa\n/0Dk6OhYtY5o9RHqd48AAFnweg1AY6FACKD5SFsfL168eOrUqffsHB0dvWvXrp07d77wwgtC\niKSkJLPZ3L9/fz8/v/oNCAAAAMCGSbPuSktLG2tA6XHjjiwWS9UVaznXykeV4cOHR0REpKam\nSlMJ9Xp9fHx8fHz83LlzX3rppXsmtP6ByMHB4Y4j3NE97xEAIAterwFoLPydB6D5aLVaUW1L\nj9qNGDFCrVafOnVKr9cLIRISEsSvF0Co64AAgBYrNTXVx8fnjuub1VtSUpKPj09oaGgjjtnS\ntIZ7BADrubu7i/+fR9gopN0BpXkVNUiNUoc7quujip2dXXh4+KJFi/bv35+SkvLEE08IId57\n771Dhw7VclbDH4gaco8AAFnweg1AY6FACKD5SG9+jx8/bk1nZ2fnqKgoIcSuXbsKCwtTU1NV\nKtW4cePqPSAAAAAAG9a1a1chxO175p0/fz4+Pj4lJaWuA0qPG6dPn779UFZWlhDiwQcfrP3c\n+j2qPPjgg++99570NPT999/fM2FDHogaco8AAFnweg1AY6FACKD5SH+RpKamSlscVzdjxoy4\nuLjz589Xb4yOjhZC7NmzR6fTmc3msLAwT0/PhgwIAEDjWr16tY+Pz9WrV+UOAgAQERERQohd\nu3YVFRVVb3/33Xdnz579zTff1G/A5OTkW7duVW8vKCjYv3+/EGLYsGF3O9fKR5Xc3Nx58+bN\nmjXr9hGkCZElJSXS16q1QM1mc12v0kT3CACQBa/XADQWCoQAms+4ceP8/f0rKytnzpxpMBik\nxtLS0iVLliQkJOh0Og8Pj+r9IyMjNRpNWlpaUlKS+PX+yfUbEACAxnX06FG5IwAAfjFhwoQO\nHToUFhbGxcVJy2NaLJYvvvhCKg3GxMTUY0AfH5/r16/PmzevrKxMajSZTHPnzi0tLe3evXtk\nZOTdzrXyUcXNzS0hIWHLli1vv/12VS1QCHH06NFdu3YJIR555BGpxd3dXaoR/vDDD3W9ShPd\nIwBAFrxeA9BYVHIHANCKODg4rF+/ftKkSRkZGaGhoX369FEqlVlZWUaj0d7eft26ddKPZKv3\nf/TRRzdv3pyYmOjk5DRq1KgGDggAQOM6duyY3BEAAL9Qq9Xr16+fPHmyTqfr27dvly5d8vPz\nr1+/LoR48cUXBw4cWNcBnZ2d165dO3ny5C1btqSkpAQFBZWUlJw9e/bmzZsdOnRYu3atnZ3d\n3c618lFFrVavXLkyNjZ21apVH3/8cUBAgLOzc15eXnZ2thBi/PjxVfU5e3v74ODgjIyMmTNn\n+vv7d+nSZcOGDQ1/IGrIPQIAZMHrNQCNhRmEAJpVUFCQTqd7/vnn/f39MzMz09PTXV1dJ02a\ntHv37qFDh97eX/pZU2Vl5fDhw11cXBo+IACg+eXl5b3++utDhgwJCAgICgqaPHny4cOHb+8m\nvYLcs2fPE0880aNHj4CAgIiIiPXr11sslho9r1y58sorr4SFhT3wwAOBgYFhYWGvvPLKlStX\nrAmTn5+/dOnSiIiIBx54oGvXruHh4W+++WZBQUGNbteuXXvzzTcjIiICAwP9/f0ffvjh6dOn\nV98Iau7cuT4+Pvn5+UKIkJAQHx+fv/3tb3W6ys6dO318fCZOnFheXr5gwYLevXtXTRNp4D0C\nQKvVr18/nU4XExPTvn37CxculJeXh4WFffbZZ3/+85/rN2Dfvn11Ot20adPc3d2PHj2alZXV\nqVOn2bNn63S6wMDA2s+18lElMjJyx44dTz/9dLt27bKzs48cOWIymcLDw99///01a9ZUH3DF\nihV9+/ZVKpUGg8HLy6tOV2miewQAyILXawAaheL2Fy4AAABAY8nIyIiJiTEajS4uLp06dTIY\nDNJkjtdee+25556T+qSmpv7+97/38vJauHDh3Llzvby8vLy89Hq90WgUQrzwwgt/+ctfqgZM\nS0ubMmVKUVFRmzZtevfuXVJSkpWVZTKZNBrN559/HhISInVLSkqaPn26r6/vwYMHq849efLk\nU089lZ+fr9FoevXqVVZWdvbsWZPJ1LZt26+//rp79+5St9zc3NGjR+fl5anV6gcffFCtVl+8\neFEqzr3xxhuxsbFCiA0bNnz33XfJyclCiIiICLVaPWLEiIkTJ1p/leTk5ClTpgQHB48cOfLt\nt98WQrRr1y4jI6OB9wgAAAAAAHBPFAgBAADQVG7duhUVFaXX65955pk33njD0dHRYrF8+umn\nCxcutLOz27FjR+/evcX/Fwi1Wq1Sqfzb3/4m/b7VbDa/9NJLmzZtcnFxOXnypL29vRDCZDL9\n5je/MRgMEyZMWLZsmbOzsxCiuLh47ty5O3bs8PHx+c9//uPk5CTuVDwrKysLDw/X6/UxMTGv\nvPKKRqORBpw/f/4333wTGBio0+lUKpUQ4rXXXvvHP/4xcODAjRs3St2EEAkJCXFxcUqlMiMj\nw83NTQhhMBj69u0rhDhy5EjHjh3repU9e/Y89dRTXbt2NZlMU6dOjY6OtlgsnTt3bsg9AgAA\nAAAAWIMlRgEAANBUtmzZotfr/fz8Fi1a5OjoKIRQKBRTp04dNmxYRUXFpk2bqnc2Go1PPvmk\nVB0UQqhUqrlz5wohbt68eenSJakxPj7eYDB4eHgsX75cqpwJIdRq9TvvvOPq6nrlypXExMS7\nhdm6dater+/evfvSpUuryn4ajebdd9/18vI6d+5cSkqK1Hjq1CkhRHR0dFU3IcSYMWMWLVq0\nYMGCkpKSWm7Z+qtIS6r++OOPw4cPnzVrlp+fX+fOnRt4jwAAAAAAANagQAgAAICm8t133wkh\nRowYIRXDqqxYsWLv3r3z5s2r0T8mJqb6186dO0uT7fLy8qoPOHz4cLVaXb2nRqMZPHiwEGLv\n3r13C6PT6YQQY8eOVSp/9Tewg4NDRESEECI1NVVqkSYI6nQ6s9lcvefTTz8dGxtbte1TA69S\n5fHHH6/+tSH3CAAAAAAAYA2V3AEAAABgs86ePSuE6NKlS432O9bYVCqVr69vjUaNRmM0Gqsm\n7f34449CiKpt/KoLDAz89ttvz507d7cwZ86cEULEx8fv27evxiFphuKFCxekr9OnT09OTk5J\nSQkPD584cWJ4eHjv3r1rFPwafpUqvXr1qv61IfcIAAAAAABgDQqEAAAAaCo///yzEMLV1dWa\nzmq1usZEw9sVFhYKIdq0aXP7IWk9zxs3btR+bnZ2dnZ29h07VJ37yCOPfPTRR6+//np2dvby\n5cuXL1/u5uYWFRX1hz/8oU+fPtYktOYqEkdHx6p1RKuPUL97BAAAAAAAsAYFQgAAADQVadZd\naWlpYw2oUCjudshisVRdsZZzFy9ePHXq1HteaPjw4REREampqdJUQr1eHx8fHx8fP3fu3Jde\neumeCa28ihDCwcHhjiPc0T3vEQAAAAAAwBq8XAAAAEBTcXd3F/8/j7BRSLsDSnPsapAapQ53\npNVqRbXtDO/Jzs4uPDx80aJF+/fvT0lJeeKJJ4QQ77333qFDh2o5q65XuV1D7hEAAAAAAMAa\nFAgBAADQVLp27SqEuH3PvPPnz8fHx6ekpNR1QGlnvtOnT99+KCsrSwjx4IMP1n7u8ePH63pR\nadj33nsvKipKCPH999/fM2H9rlJ9hPrdIwCgGSQlJfn4+ISGhsodRIgWFgYAAAD3EQqEAAAA\naCoRERFCiF27dhUVFVVvf/fdd2fPnv3NN9/Ub8Dk5ORbt25Vby8oKNi/f78QYtiwYXc7Vyrv\npaamXrp0qcahGTNmxMXFnT9/XgiRm5s7b968WbNm3T6CNCGypKRE+lq1FqjZbK7rVZroHgEA\nAAAAAKxBgRAAAABNZcKECR06dCgsLIyLi5OWx7RYLF988YVUGoyJianHgD4+PtevX583b15Z\nWZnUaDKZ5s6dW1pa2r1798jIyLudO27cOH9//8rKypkzZxoMBqmxtLR0yZIlCQkJOp3Ow8ND\nCOHm5paQkLBly5a33367qhYohDh69OiuXbuEEI888ojU4u7uLtUIf/jhh7pepYnuEQAAAAAA\nwBoquQMAAADAZqnV6vXr10+ePFmn0/Xt27dLly75+fnXr18XQrz44osDBw6s64DOzs5r166d\nPHnyli1bUlJSgoKCSkpKzp49e/PmzQ4dOqxdu9bOzu5u5zo4OKxfv37SpEkZGRmhoaF9+vRR\nKpVZWVlGo9He3n7dunXSBEG1Wr1y5crY2NhVq1Z9/PHHAQEBzs7OeXl52dnZQojx48dX1efs\n7e2Dg4MzMjJmzpzp7+/fpUuXDRs2WHmVJrpHAAAAAAAAazCDEAAAAE2oX79+Op0uJiamffv2\nFy5cKC8vDwsL++yzz/785z/Xb8C+ffvqdLpp06a5u7sfPXo0KyurU6dOs2fP1ul0gYGBtZ8b\nFBSk0+mef/55f3//zMzM9PR0V1fXSZMm7d69e+jQoVXdIiMjd+zY8fTTT7dr1y47O/vIkSMm\nkyk8PPz9999fs2ZN9QFXrFjRt29fpVJpMBi8vLzqdJUmukcAAAAAAIB7UlgsFrkzAAAAAAAA\n3B+SkpKmT5/u6+t78ODB6u35+fkfffTR7t279Xq9Uqn08fGJjIyMi4urWlz6t7/9bVpa2tSp\nUxcvXlxjTIPB0L9//8rKyvj4+IcfftjKAWsJAwAAANSOGYQAAAAAAAANcvLkyeHDh69ZsyYn\nJ6dv375BQUG5ubkffvhheHj4mTNnpD7R0dFCiKSkpNt/q71z587Kykpvb+/Q0FDrBwQAAADq\njQIhAAAAAABA/ZWVlcXGxubn58fExBw+fHjz5s3btm07fPjw+PHjr1+//txzz5nNZiHE2LFj\nVSpVbm7usWPHaoywY8cOIUR0dLRCobB+QAAAAKDeKBACAAAAAADU39atW/V6fffu3ZcuXarR\naKRGjUbz7rvvenl5nTt3LiUlRQjRtm3bwYMHCyESExOrn15QUHDo0CEhxOOPP16nAQEAAIB6\no0AIAAAAAABQfzqdTggxduxYpfJXr1kcHBwiIiKEEKmpqVKLtMpojQJhYmJiRUVFt27devTo\nUdcBAQAAgPpRyR0AAAAAAADgPiZtChgfH79v374ahy5duiSEuHDhgvR19OjR8+fPz87OPnPm\nTPfu3aVGaX3RCRMm1GNAAAAAoH4oEAIAAAAAANRfYWGhECI7Ozs7O/uOHW7cuCF90Gg04eHh\nu3btSkxMlAqERqPxwIEDQojx48fXY0AAAACgfigQAgAAAAAA1J9CoRBCLF68eOrUqffsHB0d\nvWvXrp07d77wwgtCiKSkJLPZ3L9/fz8/v/oNCAAAANQDexACAADgvpeUlOTj4xMaGip3ECFa\nWBgAQDPQarVCiLy8PGs6jxgxQq1Wnzp1Sq/XCyESEhLEr9cXreuAAAAAQD1QIAQAAAAAAKg/\nabHQ48ePW9PZ2dk5KipKCLFr167CwsLU1FSVSjVu3Lh6DwgAAADUAwVCAAAAAACA+pMKfqmp\nqZcuXapxaMaMGXFxcefPn6/eGB0dLYTYs2ePTqczm81hYWGenp4NGRAAAACoKwqEAAAAAAAA\n9Tdu3Dh/f//KysqZM2caDAapsbS0dMmSJQkJCTqdzsPDo3r/yMhIjUaTlpaWlJQkhBg/fnwD\nBwQAAADqSiV3AAAAAAAAgPuYg4PD+vXrJ02alJGRERoa2qdPH6VSmZWVZTQa7e3t161b5+7u\nXqP/o48+unnz5sTERCcnp1GjRjVwQAAAAKCumEEIAAAAm5Wfn7906dKIiIgHHniga9eu4eHh\nb775ZkFBQVWH3/72tz4+PgsXLrz9XIPB0KlTJx8fn7S0NOsHBAC0TkFBQTqd7vnnn/f398/M\nzExPT3d1dZ00adLu3buHDh16e39p1mBlZeXw4cNdXFwaPiAAAABQJwqLxSJ3BgAAAKBBkpKS\npk+f7uvre/DgwarGkydPPvXUU/n5+RqNplevXmVlZWfPnjWZTG3btv3666+7d+8uhNi4ceP/\n/M//dOjQ4ciRIwqFovqYGzZsWLhwobe396FDh6RD1gx4tzAAAAAAAAAtBzMIAQAAYIPKyspi\nY2Pz8/NjYmIOHz68efPmbdu2HT58ePz48devX3/uuefMZrMQYuzYsSqVKjc399ixYzVG2LFj\nhxAiOjpaqg5aOSAAAAAAAEDLR4EQAAAANmjr1q16vb579+5Lly7VaDRSo0ajeffdd728vM6d\nO5eSkiKEaNu27eDBg4UQiYmJ1U8vKCg4dOiQEOLxxx+v04AAAAAAAAAtHwVCAAAA2CCdTieE\nGDt2rFL5q794HRwcIiIihBCpqalSS3R0tLitQJiYmFhRUdGtW7cePXrUdUAAAAAAAIAWTiV3\nAAAAAKDxnTlzRggRHx+/b9++GocuXbokhLhw4YL0dfTo0fPnz8/Ozj5z5kzVPoLS+qITJkyo\nx4AAAAAAAAAtHAVCAAAA2KDCwkIhRHZ2dnZ29h073LhxQ/qg0WjaW0g0AAAgAElEQVTCw8N3\n7dqVmJgoFQiNRuOBAweEEOPHj6/HgAAAAAAAAC0cBUIAAADYIIVCIYRYvHjx1KlT79k5Ojp6\n165dO3fufOGFF4QQSUlJZrO5f//+fn5+9RsQAAAAAACgJWMPQgAAANggrVYrhMjLy7Om84gR\nI9Rq9alTp/R6vRAiISFB/Hp90boOCAAAAAAA0JJRIAQAAIANkhYLPX78uDWdnZ2do6KihBC7\ndu0qLCxMTU1VqVTjxo2r94AAAAAAAAAtGQVCAAAA2CCp4Jeamnrp0qUah2bMmBEXF3f+/Pnq\njdHR0UKIPXv26HQ6s9kcFhbm6enZkAEBAAAAAABaLAqEAAAAsEHjxo3z9/evrKycOXOmwWCQ\nGktLS5csWZKQkKDT6Tw8PKr3j4yM1Gg0aWlpSUlJQojx48c3cEAAAAAAAIAWSyV3AAAAAKDx\nOTg4rF+/ftKkSRkZGaGhoX369FEqlVlZWUaj0d7eft26de7u7jX6P/roo5s3b05MTHRycho1\nalQDBwQAAAAAAGixmEEIAAAA2xQUFKTT6Z5//nl/f//MzMz09HRXV9dJkybt3r176NCht/eX\nZg1WVlYOHz7cxcWl4QMCAAAAAAC0TAqLxSJ3BgAAAAAAAAAAAADNhBmEAAAAAAAAAAAAQCtC\ngRAAAAAAAAAAAABoRSgQAgAAAAAAAAAAAK0IBUIAAAAAAAAAAACgFaFACAAAAAAAAAAAALQi\nFAgBAAAAAAAAAACAVoQCIQAAAAAAAAAAANCKUCAEAAAAAAAAAAAAWhEKhAAAAAAAAAAAAEAr\nQoEQAAAAAAAAAAAAaEUoEAIAAAAAAAAAAACtCAVCAAAAAAAAAAAAoBWhQAgAAAAAAAAAAAC0\nIhQIAQAAAAAAAAAAgFaEAiEAAAAAAAAAAADQilAgBAAAAAAAAAAAAFoRCoQAAAAAAAAAAABA\nK0KBsGU5ePCg0WiUOwXuID09/cyZM3KnAADYPpPJlJ6efvnyZbmDAABsX05OTnp6+o0bN+QO\nAgCwfVlZWenp6RaLRe4gAIBfUCBsWeLj43NycuROgTvYsWNHamqq3CkAALavoKBg+/bt/CoF\nANAMzp49u337doPBIHcQAIDt279///bt2ysrK+UOAgD4BQVCAAAAAAAAAAAAoBVRyR0AuD8E\nBAR4eHjInQIAYPvUanVAQEDbtm3lDgIAsH1arTYgIMDZ2VnuIAAA2+ft7W1nZ6dQKOQOAgD4\nhYJ1n1uUl19+ecqUKT179pQ7CAAAAAAAAAAAAGwTS4wCAAAAAAAAAAAArQgFQgAAAAAAAAAA\nAKAVoUAIAAAAAAAAAAAAtCIquQMALV1FRYXJZCorK1MoFI6Ojq6urkollXUAAAAAAAAAAHC/\nokBYZ1lZWcnJyZmZmQUFBfb29h4eHg888MDw4cN79uwpdzQ0voqKivz8fKPR6OjoKITIy8tr\n3759u3btFAqF3NEAAAAAAAAAAADqgwJhHZjN5vXr1yclJVksFqmltLS0qKhIr9enpKSMGjVq\n5syZ1I1szI0bN4xGo5ubW2FhoVKp1Gq1eXl5arVao9HIHQ0AYJvMZrPJZHJyclKr1XJnAQDY\nuOLi4pKSEldXV3t7e7mzAABsnMlkMpvN7u7uvD4FgBaClRKtZbFYVq5cmZiYaLFYnJycoqKi\nYmNjn3nmmZCQEOn/aomJiV999ZXcMdHIysrKnJychBD/+Mc/tm3bplAonJycysrK5M4FALBZ\nly9fXrly5b59++QOAgCwfQcPHly5cqVer5c7CADA9m3evHnlypWVlZVyBwEA/IIZhNbS6XTf\nf/+9ECIgIOCVV17x9PSsOnT06NElS5aUlZV9/fXXI0eO1Gq18sVEk7NYLPzQCQAAAAAAAAAA\n3L8oEFqlrKzs888/F0I4Ozu/9tprbdu2rX60X79+EydOPH36dKdOnYqKiigQ2hJHR8dr165J\nGxAKISorK4uLi6u+AgAAAAAAAAAA3HcoEFolPT39+vXrQojHHnusRnVQ8vvf/77ZQ6E5tGnT\nprS01GAwDBgwQK1WFxQU+Pr6uri4yJ0LAGCztFptVFSUr6+v3EEAALYvICBApVJ5eHjIHQQA\nYPtCQkK6du3KulwA0HJQILRK1T5AQ4cOlTcJmplSqWzfvr2Li4uPj48QwsnJydnZWe5QAABb\n5ubmNmTIELlTAABaBT8/Pz8/P7lTAABahYceekjuCACAX6FAaJUzZ84IIbRarVQlEkIUFRUZ\nDIbS0lKtVtuhQwdZ06FpKRQKV1dXuVMAAAAAAAAAAAA0DgqE91ZSUpKfny+EkBb7Onny5Fdf\nfXXixAmLxSJ18PT0fPTRR8ePH8/WdAAAAAAAAAAAAGjhlHIHuA/k5uZKtcA2bdokJiYuXLjw\n+PHjVdVBIcS1a9f++c9/zps37+eff5YvJgAAAAAAAAAAAHBvzCC8t1u3bkkfrly5kpaW1rZt\n28mTJ/fs2dPT07OwsPDgwYNfffVVYWHhhQsXli1btnjx4tr32tXr9Xl5eXc7euPGjUZODwAA\nAAAAAAAAAFRDgfDeiouLpQ8//fRThw4dli9f7ubmJrV4enqOGTOmX79+L7744s2bN3/44Ye0\ntLRBgwbVMlpeXt7p06fvdrSoqKgRkwMAAAAAAAAAAAA1UCC8t+qriU6fPr2qOlilY8eOTz75\n5McffyyE0Ol0tRcIBw4cOHDgwLsdPXnyZMPCoqns27fP1dU1ODhY7iAAABtXWFiYmZnp6+vb\npUsXubMAAGzcxYsXL1682LNnT61WK3cWAICNy8zMLCwsfOSRR5RKNr0CgBaB/xzfm1qtlj7Y\n2dmFhITcsc+QIUOkD6dOnWqmWGheycnJhw4dkjsFAMD2GY3G5OTkc+fOyR0EAGD7Lly4kJyc\nXFBQIHcQAIDtO3LkSHJycvWZGAAAeVEgvDdXV1fpg0ajsbOzu2MfT09PR0dHIURRUVF5eXnz\nhQMAAAAAAAAAAADqggLhvXl7e0sz30tKSmrp5uDgIH2oqKhojlgAAAAAAAAAAABA3bEH4b3Z\n29v7+PhcunSppKTEYDC0b9/+9j7l5eU3b96UOjs5OTV7RjS52bNn323+KAAAjcjX13fOnDn8\nOQEAaAahoaHBwcFVq+YAANB0Jk6caDab2YAQAFoO/otslQEDBkgf0tLS7tghKyursrJSCOHv\n7998sdCMtFptmzZt5E4BALB9KpVKq9VWbYEMAEDTUavVWq3W3t5e7iAAANun0Wi0Wq1CoZA7\nCADgFxQIrfKb3/xG+rB169bi4uLbO2zbtk36EBIS0nyxAAAAAAAAAAAAgDqiQGiVgICAwYMH\nCyEKCgreeuutW7duVT8aHx8vzSx0cnIaOXKkPBEBAAAAAAAAAAAAK7AHobVmzJjx448/GgyG\nY8eOxcXFhYeHd+zY8caNGwcPHjx79qzU57nnnnN3d5c3JwAAAAAAAAAAAFALCoTW0mq1b775\n5rJly86fP3/9+vUtW7ZUP+ro6DhjxozIyEi54gEAAAAAAAAAAADWoEBYBx07dnznnXe+//77\n1NRUvV7/888/Ozk5eXl59evXb8yYMW3btpU7IAAAAAAAAAAAAHAPFAjrxs7OLiIiIiIiQu4g\naG7r16/39PScMGGC3EEAADbu6tWr27dvDw4ODg0NlTsLAMDGHTly5OjRo6NGjerUqZPcWQAA\nNm7btm25ubnTp0+3s7OTOwsAQAghlHIHAO4POTk5165dkzsFAMD2lZaW5uTkmEwmuYMAAGxf\nUVFRTk5OaWmp3EEAALavoKAgJydH7hQAgP+iQAgAAAAAAAAAAAC0IiwxCljF29vb09NT7hQA\nANvn6Ojo7e2t0WjkDgIAsH2urq7e3t6Ojo5yBwEA2D4PD4/y8nK5UwAA/kthsVjkzoD/evnl\nl6dMmdKzZ0+5gwAAAAAAAAAAAMA2scQoAAAAAAAAAAAA0IpQIAQAAAAAAAAAAABaEQqEAAAA\nAAAAAAAAQCtCgRAAAAAAAAAAAABoRSgQAgAAAAAAAAAAAK0IBULAKkaj8caNG3KnAADYPrPZ\nbDQai4uL5Q4CALB9xcXFRqOxvLxc7iAAANtnMpmMRqPFYpE7CADgFxQIAausWrXqX//6l9wp\nAAC27/LlyytXrty3b5/cQQAAtu/gwYMrV67U6/VyBwEA2L7NmzevXLmysrJS7iAAgF9QIAQA\nAAAAAAAAAABaEQqEAAAAAAAAAAAAQCuikjsAcH+IiopydXWVOwUAwPZptdqoqChfX1+5gwAA\nbF9AQIBKpfLw8JA7CADA9oWEhHTt2lWhUMgdBADwCwqEgFUGDx4sdwQAQKvg5uY2ZMgQuVMA\nAFoFPz8/Pz8/uVMAAFqFhx56SO4IAIBfYYlRAAAAAAAAAAAAoBWhQAgAAAAAAAAAAAC0IhQI\nAQAAAAAAAAAAgFaEAiEAAAAAAAAAAADQilAgBAAAAAAAAAAAAFoRCoSAVfbt23f8+HG5UwAA\nbF9hYeHevXt/+uknuYMAAGzfxYsX9+7dazQa5Q4CALB9mZmZe/furayslDsIAOAXKrkD3B8y\nMjJee+21e3YLDAz83//932bIg+aXnJzs7e0dHBwsdxAAgI0zGo3JyclDhgzp0qWL3FkAADbu\nwoULe/bs6dChg1arlTsLAMDGHTlyRK/XDxo0SO4gAIBfMIPQKjdv3pQ7AgAAAAAAAAAAANAI\nmEFolaKiIulDSEhI165d79atbdu2zZUIAAAAAAAAAAAAqA8KhFapmkE4ZMiQiIgIecNAFrNn\nz7azs5M7BQDA9vn6+s6ZM8fJyUnuIAAA2xcaGhocHOzq6ip3EACA7Zs4caLZbFYqWdAOAFoK\nCoRWqSoQuri4yJsEcmFPDgBA81CpVPxPBwDQPNRqtVqtljsFAKBV0Gg0ckcAAPwKP9mwStUS\noxQIAQAAAAAAAAAAcF9jBqFVmEEIAAAAAAAAAAAAyZo1a4QQAwcOHDhwoNxZ6oMZhFahQAgA\nAAAAAAAAAADJ0qVLly5dmpqaamX/U6dOjR49etSoUR9//HGTBrMSMwitUlUgVKvVe/bsSU1N\nPXfu3I0bN5ycnNq3b9+nT59Ro0Z16NBB3pAAAAAAAAAAAABogXr06BEcHLxx48bTp08PGjQo\nKChI3jwUCK1StQfh/PnzL126VNV+8+bN7Ozs7Ozsbdu2/f73v//d736nUChkyggAAAAAAAAA\nAIAW6vXXX09LSzt79uysWbMSExPt7e1lDEOB0CpVMwgvXbrk4uIyYMAAPz8/BweHq1evHjx4\n8Nq1axUVFf/85z/Ly8tjYmJqH+rs2bMXL16829Hr1683Zm40nvXr13t6ek6YMEHuIAAAG3f1\n6tXt27cHBweHhobKnQUAYOOOHDly9OjRUaNGderUSe4sAAAbt23bttzc3OnTp9vZ2cmdBQBk\n4+Tk9P77748ZM+b06dPLli1buHChjGEoEFqlqkA4evToZ555xtnZuerQ9OnTP/nkk+3btwsh\nNm3a9PDDDwcGBtYyVElJyY0bN+52tKKiopEio5Hl5OTIHQEA0CqUlpbm5OQEBATIHQQAYPuK\niopycnJKS0vlDgIAsH0FBQW8XgMAIUSPHj0WLFjwxhtvfPjhhyNGjBgwYIBcSSgQWmXjxo0W\ni0WhUFQvDUpUKlVsbGxeXt6hQ4eEEFu3bn3ppZdqGap37969e/e+29G0tLRGCQwAAAAAAAAA\nAIAmlZSUVH1nOmtYLBZ7e/vy8vI5c+bs37+/iYLdEwVCq9xeF6zhySeflAqE6enpUimxWXKh\n+Xh7e3t6esqdAgBg+xwdHb29vTUajdxBAAC2z9XV1dvb29HRUe4gAADb5+HhUV5eLncKAGh8\np06dOnXqVP3O1ev1jRumTigQNo7AwECp3nvr1i2TydSmTRu5E6GRxcbGyh0BANAqdOzYccaM\nGXKnAAC0CiEhISEhIXKnAAC0Co899pjcEQAAv0KBsHEoFApHR0fpVzBlZWVyxwEAAAAAAAAA\nAEDTGjt27H36GwgKhI2jrKzs5s2b0memDwIAAAAAAAAAANi8bt26jRkzRu4U9UGB8N4OHjx4\n5MiR/Pz8oUOHDhs27I59fvjhB4vFIoTw8/NzcHBo3oAAAAAAAAAAAACAtSgQ3tuNGze+/fZb\nIYTBYBg8ePDt9T+LxfL1119Ln0NDQ5s7HwAAAAAAAAAAAGA1pdwB7gO/+c1v3NzchBCXL19e\nsWJFUVFR9aNlZWVr1qw5efKkEEKtVt+nS80CAAAAAAAAAACglWAG4b05OjrOmjVryZIllZWV\nBw4cyMzMDAsL8/b2VigUOTk5Bw4cMBqNQgiFQjF37lyplAjbYzQa7ezs2GASANDUzGazyWRy\ncnJSq9VyZwEA2Lji4uKSkhJXV1d7e3u5swAAbJzJZDKbze7u7gqFQu4sANA42rVrJ4RwcXGR\nO0g9USC0ysCBA+fPn7969WqTyVRUVJSYmFijg5ub25w5c0JCQmSJh2awatUqb2/v2NhYuYMA\nAGzc5cuXN2zYMGTIkKioKLmzAABs3MGDB/fs2RMTExMYGCh3FgCAjdu8ebNer3/11Vft7Ozk\nzgIAjSMjI0PuCA1CgdBaDz/88EMPPaTT6dLT03/66aeioiKFQtGmTZsuXbqEhIRERkY6OjrK\nnREAAAAAAAAAAAC4BwqEdeDi4vLYY4+xyyAAAAAAAAAAAADuXxQIAatERUW5urrKnQIAYPu0\nWm1UVJSvr6/cQQAAti8gIEClUnl4eMgdBABg+0JCQrp27coGhABsUkVFxZEjRzIyMoxGo7u7\n+6BBg4KDg+UOdW8UCAGrDB48WO4IAIBWwc3NbciQIXKnAAC0Cn5+fn5+fnKnAAC0Cg899JDc\nEQCgSRw4cGDevHnnz5+v3vjII4+sXr26Q4cO0tfDhw+vWrXq0KFDJSUlnTp1euyxx+Li4mSf\nkqSU9/IAAAAAAAAAAADAfWfv3r2TJk2qUR0UQuzfv3/ixIkmk0kIsXbt2vHjx6ekpBQVFZnN\n5uzs7JUrV44cOfLq1atyRP4vZhACAAAAAAAAAAAAdVBaWjpnzpzy8nIhRPv27aOiory9vYuK\niv7zn/+cOnUqOzt7zZo1oaGhb7755u3nZmdnx8XFbdmyRca1lykQAgAAAAAAAAAAAHWwdevW\n3NxcIURMTMyiRYvs7e2rDn3yySevvPLKpk2bjh49arFYevfuvWDBguDgYKVSeebMmXfeeSc1\nNfXQoUPfffddRESEXPlZYhQAAAAAAAAAAACoA51OJ4To3bv30qVLq1cHhRDTpk2bOHGiwWDY\nv3+/j4/Ppk2bwsLC2rRp4+rqGhIS8tlnn3Xv3l0I8c0338gTXQhBgRAAAAAAAAAAAACok8zM\nTCHEE088oVTeodYWExMjfZgyZYpGo6l+yN7eXjqanp7e9DHvigIhYJX09PQzZ87InQIAYPtM\nJlN6evrly5flDgIAsH05OTnp6ek3btyQOwgAwPZlZWWlp6dbLBa5gwBAo7l+/boQQpoLeLug\noCDpQ69evW4/Kp2Vn5/fZOnujQIhYJUdO3akpqbKnQIAYPsKCgq2b9/Or1IAAM3g7Nmz27dv\nNxgMcgcBANi+/fv3b9++vbKyUu4gANBoSktLhRBOTk53POro6Ch9uGMHBweHqhHkQoEQAAAA\nAAAAAAAAqANp4VBpHuHtqmYH3nGaoPQrPXd39yZLd28UCAEAAAAAAAAAAIA68PX1FUIcPHjw\njkf37dsnfdDpdLcf3bNnjxAiMDCwqcJZQSXjtYH7yOzZs+3s7OROAQCwfb6+vnPmzLnb8hQA\nADSi0NDQ4OBgV1dXuYMAAGzfxIkTzWazUsl8FQC2Y8CAAZmZmZ9//vnUqVN9fHyqHyopKfng\ngw+USqWXl1d8fPyYMWOioqKqjn733XdfffWVECIsLKy5Q1ejYGPYFuXll1+eMmVKz5495Q4C\nAAAAAAAAAACAOztx4sSoUaOEEN7e3vPmzRs0aFCHDh1KS0szMzOXLFly5MiRPn36hIWFrV69\nWqFQDBo0qGvXrpWVlVlZWYcPH7ZYLI6OjgcOHPDy8pIrPzMIAQAAAAAAAAAAgDro3bv3hAkT\ntm7dmpOTM2fOHCGEnZ1dRUVFVYfY2Nhhw4YlJSX9+OOP+/fv379/f/XTFy5cKGN1ULAHIQAA\nAAAAAAAAAFBXb7311uDBg6u+Vq8OTp48efz48W5ubl9++WX1PkIIFxeXN998c/r06c0X9E6Y\nQQgAAAAAAAAAAADUjaur6xdffPGvf/3ryy+/PHHiREVFhVKp7N2797PPPjthwgSpT8eOHTdt\n2nTs2LFDhw6VlJR06tQpIiLC3d1d3uSCPQhbGvYgBAAAAAAAAAAAuL9UVFSYTCYXFxd7e3u5\ns1iFGYQAAAAAALRGFRUVFRUVKpVKqWT/EQAAAKBB7OzsWsK8QOvxDABY5bPPPtu5c6fcKQAA\nti8vL2/jxo1Hjx6VOwgAwJZVVFQUFBRs3rx52bJlx48f//nnn1leCADQpL799tuNGzdWVlbK\nHQQA8AtmEAJWuXDhQklJidwpAAC2r7i4+MKFC97e3nIHAQDYLIvFYjQaDQaDQqEwGo0mk+nS\npUtCiPvr984AgPtLTk6OXq/n9ygA0HJQIGwQg8Ewa9as4uJiIcRLL70UFhYmdyIAAAAAAGpT\nVlZ2+fLldu3a2dnZCSFUKpWbm9utW7fatGnDWqMAAACAldasWSOEGDhw4MCBA+XOUh/86V9/\nFotl9erVUnUQNs/b29vT01PuFAAA2+fo6Ojt7a3RaOQOAgCwWWazWaVSKRQKZ2dnLy8vBwcH\nlUplMBjMZrPc0QAANsvDw4OFUgDYmKVLly5dujQ1NdXK/qdOnRo9evSoUaM+/vjjJg1mJWYQ\n1l9SUtLx48flToFmEhsbK3cEAECr0LFjxxkzZsidAgBgy5RKZUVFhRAiODg4ODhYCFFRUWGx\nWKQJhQAANIXHHntM7ggAILMePXoEBwdv3Ljx9OnTgwYNCgoKkjcPMwjryWAwfPLJJ0IIDw8P\nubMAAAAAAGAtJyenDh06mEwm6WtlZaXJZPLz86NACAAAADSp119/vVu3buXl5bNmzSovL5c3\nDAXC+rBYLKtWrSopKXFzcxszZozccQAAAAAAsJZCodBqte7u7gaD4fr169euXWvfvr1Wq5U7\nFwAAAGDjnJyc3n//fQcHh9OnTy9btkzeMBQI6yMxMfHEiRNCiGnTpqnVarnjAAAAAABQBw4O\nDu3btw8KCgoICOjRo4enp6dSyfsBAAAAoMn16NFjwYIFQogPP/zw8OHDMiZhD8I6y8vL27Bh\ngxCiX79+ERERCQkJcicCAAAAAKBuFAqFo6Oj3CkAAACA+1tSUtKlS5fqdIrFYrG3ty8vL58z\nZ87+/fubKNg9USCsm6rFRZ2dnf/0pz/JHQcAAAAAAAAAAADyOHXq1KlTp+p3rl6vb9wwdcIS\nInWzc+fOzMxMIcQf/vAHT09PueOg+RQXF5eWlsqdAgBg+yorK4uLi2XfpxoA0BqUl5cXFxdX\nVFTIHQQAYPtKS0uLi4vlTgEA+C9mENZBXl7ep59+KoTo06fPiBEj5I6DZrVs2TJvb+/Y2Fi5\ngwAAbNzFixc3bNgwZMiQqKgoubMAAGzcvn379uzZExMTExgYKHcWAICN++KLL/R6/auvvmpn\nZyd3FgBoTGPHjn3sscfkTlEfFAitVbW4qFqtZnFRAAAAAAAAAACAVq5bt25jxoyRO0V9UCC0\nVkJCgrS46NSpU9u3b1/vcU6cOHHu3Lm7Hc3Pz6/3yAAAAAAAAAAAAMA9USC0Sm5u7saNG4UQ\nDz300MiRIxsylJubm6+v792OOjo6NmRwNJ2oqChXV1e5UwAAbJ9Wq42KiqrlrwUAABpLQECA\nSqXy8PCQOwgAwPaFhIR07dpVoVDIHQQA8AsKhPdmsVhWrlxZUlLi5OQ0e/bsBv5vrHPnzp07\nd77b0c2bNzdkcDSdwYMHyx0BANAquLm5DRkyRO4UAIBWwc/Pz8/PT+4UAIBW4aGHHpI7AgDg\nVygQ3tuOHTtOnjwphJg2bZqXl5fccQAAAAAAAAAAACCndu3aCSFcXFzkDlJPFAjv4dq1a9Li\noh07dmzTps2+fftqdLhw4YL0ISsrS6lUCiG8vb39/f2bOScAAAAAAAAAAACaR0ZGhtwRGoQC\n4T0YDIbS0lIhxNWrV99+++1aem7btm3btm1CiHHjxsXGxjZTPgAAAAAAAAAAAKAulHIHAAAA\nAAAAAAAAANB8mEF4Dz169JDmBd5NQkLC2rVrhRAvvfRSWFhYc+UCAAAAAAAAAACAPBISEoQQ\nvXv37tSpk5WnXLt2zdPTsylD1QEzCAGrpKennzlzRu4UAADbZzKZ0tPTL1++LHcQAIDty8nJ\nSU9Pv3HjhtxBAAC2LysrKz093WKxyB0EABrNjBkzZsyYMWTIkIULF5pMpnv2N5vNffr0iYiI\n+PLLL1vCfw8pEAJW2bFjR2pqqtwpAAC2r6CgYPv27fwqBQDQDM6ePbt9+3aDwSB3EACA7du/\nf//27dsrKyvlDgIAjcxsNm/YsGHEiBEZGRm19zQYDBaLJSsr6y9/+cu0adPKysqaJ+HdUCAE\nAAAAAAAAAAAA6kypVAohLl68OHHixN27d9fSs6ioyMHBQfq8e/fuV199tTny3R0FQgAAAAAA\nAAAAAKDO/vSnP7366qv29vbFxcXPPvtsLTXCbt26/fDDD2+99Zajo6MQ4vPPPz958mQzJq1J\n0RLWOUWVl19+ecqUKT179pQ7CGoyGo12dnZt2rSROwgAwMaZzWaTyeTk5KRWq+XOAgCwccXF\nxSUlJa6urvb29nJnAQDYOJPJZDab3d3dFQqF3FkAoHH4+PgIIV588cU///nP+/btmzp16q1b\ntxwcHL7++uuQkJBaTkxJSXn66aeFEFOmTFmyZEkzxb0NM4X+rjgAACAASURBVAgBq2i1WqqD\nAIBmoFKptFot1UEAQDNQq9VarZbqIACgGWg0Gq1WS3UQgK0aPHjwF198oVary8rKnn322Zyc\nnFo6R0REhIaGCiHS0tKaK+AdUCAEAAAAAAAAAAAA6m/AgAGrV69WKpX5+fnSbMJaOvfr108I\nUXsdsalRIAQAAAAAAAAAAAAaZNSoUQsWLBBCnDx5ctasWbXs8de2bVshRHFxcfOFuw0FQgAA\nAAAAAAAAAKCh/vjHP06cOFEIkZSUVMv+gnq9Xgih0WiaL9ltKBACAAAAAAAAAAAAjWDZsmX9\n+/cXQnzwwQerV6++vcOtW7eSk5OFEAEBAc0drhoKhAAAAAAAAAAAAEAjcHR0/PTTTwMDA4UQ\nb7311qxZs4xGY9XR4uLi+fPn5+bmCiEGDx4sW0ohVDJeG7iPfPbZZx4eHqNHj5Y7CADAxuXl\n5X377be9evWSdqsGAKDpHD9+/Pjx41FRUd7e3nJnAQDYuG+//TYvLy8mJkapZMoKANun1Wq/\n+OKLJ5/8P/buPbyq+k70/9q57SQkhAAKCbcx1hupWkXrUXRqFTs6LY52tGproR6VVmccOs45\nsVr783SmrcI48xR1OqfU6oiiltbbQL013ipQLkYLjJTLGEAk3NmShOyEffv9kT4cqlyCJlm4\n8nr9tbLW2sn7sfVJ3J/9/a4r1qxZ8+STTz777LPnnXfeiBEjdu3a9corr2zYsCEIgsLCwquu\nuirESANC6JLGxsb29vawKwCIvmQy2djY6I1aAHpBIpFobGxsa2sLOwSA6Gtqalq3bl0ulws7\nBKCXDBs27JlnnpkwYcLvf//79vb2Z5999gM33HbbbSNHjgylrZPPawAAAAAAAEB3GjRo0FNP\nPTV58uTS0tK9zw8YMGDq1KmTJk0KK6yTFYTQJdXV1YMHDw67AoDoi8fj1dXV5eXlYYcAEH1l\nZWXV1dXxeDzsEACib9CgQalUKuwKgO40atSoIAgGDBhwgHuKiorq6uq+9a1vvfbaa+vWrYvH\n40cfffRZZ51VXFzcW5n7FbOs+7BSV1c3ceLE2trasEMAAAAAAACIJluMAgAAAAAAQB9iQAgA\nAAAAAAB9iAEhAAAAAAAAfBTZbPbVV1+944475s6de+A7V69evXXr1t6pOigDQgAAAAAAADhk\ny5Ytu+CCC772ta/df//9y5YtO/DN99577ymnnDJp0qRNmzb1Tt4BGBACAAAAAADAoVm6dOmX\nv/zlFStWdH550NWBiUQil8v9+te/vvDCC9etW9fzgQdiQAhdkkwmOzo6wq4AIPqy2WwymUyl\nUmGHABB9qVQqmUxmMpmwQwCIvo6OjmQyGXYFQHdKp9M33HBDW1tbEATl5eVXXHHFhRdeeOCX\njB49ury8PAiCrVu3fvOb38xms70Ruh8GhNAlU6dOnTFjRtgVAETfu+++O2XKlNdeey3sEACi\nb968eVOmTFmzZk3YIQBE36OPPjplyhSfSgGi5Jlnnlm7dm0QBKeccsrcuXP/9V//9bOf/eyB\nX3LrrbcuWLDgzDPPDIJg2bJlL7zwQi907o8BIQAAAAAAAByCF198MQiCeDx+//33Dx48+MM3\nLFq0aNGiRevXr9/75IABA/7t3/6tqKgoCILZs2f3Tuo+GRACAAAAAADAIVi6dGkQBOPGjRs6\ndOg+b7j00ksvvfTSBx988APnhwwZctFFFwVBsGTJkp6OPICCEH82fIKMGzeurKws7AoAoq+y\nsnLcuHHDhw8POwSA6KupqSkoKBg0aFDYIQBE32mnnXbMMcfEYrGwQwC6zY4dO4IgOOGEE/Z5\ndc+myvvcXbmmpiYIgs2bN/dY3cEZEB6CXC63YMGCuXPnrl69OpFIZDKZfv36DR8+/NOf/vQF\nF1xw5JFHhh1IDxo7dmzYCQD0CRUVFWeffXbYFQD0CSNHjhw5cmTYFQD0CSeeeGLYCQDdrL29\nPQiCkpKSfV7dvn1750Eikfjw1f79+wdBkE6ne6zu4AwIu2rjxo1Tp05955139j65c+fOnTt3\nvv3227/61a++9rWvXXbZZWHlAQAAAAAA0DvKy8sTicT+VgG+9957nQdvv/32h682NTUFQVBR\nUdFzeQdlQNgl27Ztq6ur27lzZxAERUVFZ5xxxrBhw0pLS7dt27Z48eKNGzdmMpkZM2YUFBRc\ncsklYccCAAAAAADQg0aNGpVIJH7729/u82p9fX0QBOXl5StWrFi5cuVxxx2351Imk3nxxReD\nIDj66KN7J3Wf8kL82Z8gP/3pTzung8cdd9zPfvaz//2///dXv/rVSy655Lrrrvv3f//38ePH\nd9726KOPtrW1hVoKAAAAAABAzzr99NODIFixYsXjjz/+gUtNTU0PPvhgEARXXXVVEAT/8A//\n0NLS0nkpk8l8//vfX7duXRAEZ555Zq8W/ykDwoNLJBKLFi0KgqCoqOh73/teZWXl3lfz8vKu\nvfbaoUOHBkHQ3t7+X//1X+FUAgAAAAAA0CuuvPLKzoO6uro777xz7dq12Ww2mUz+5je/+fKX\nv9zc3HzUUUf97d/+bTwef+utt84888y//du/vfnmm88555yf//znQRAUFBTs+Q6hsMXowbW2\ntn7uc59rbW0dNmxY53MjPyAvL6+2tnbTpk3BXo+dBAAAAAAAIJKOP/74q6666rHHHstkMvfd\nd999992Xl5eXzWb33PA3f/M3gwYN+va3vz1lypREIvHUU0/t/fKbb755xIgRvV79/xgQHtyI\nESNuvvnmA9+TSqU6D8rKynq+iBA0NDT069fv+OOPDzsEgIhraWlZtWrVkCFDhg8fHnYLABHX\n1NS0cePGY445Zp+fhQWAbrRy5crW1tZTTz01FouF3QLQbX7wgx/s2LHjhRde6Pxy7+ng5Zdf\n3rlA8Kabbmptbf3pT3+aTqc7L5WUlNx888033nhj7wfvzYCwG7S2tr711ltBEOTn53/6058O\nO4ceMWfOnOrqagNCAHra9u3bZ8+effbZZxsQAtDTVq1a9eqrr1599dUGhAD0tPnz569bt+4z\nn/lMfn5+2C0A3aa4uPiBBx6YM2fOzJkzFy9enEwmY7HYCSeccN11111xxRWd98Risdtuu+2a\na65ZsGBBc3PzkCFDzjrrrMPhL3ADwo9r3bp199xzT+fjJb/85S9/4AmFAAAAAAAARNWXvvSl\nL33pS0EQ7Nq1q6ioqLCw8MP3VFVVXXrppb2ediAGhIdsy5Ytc+bMyWQyLS0ta9asWbduXRAE\nRUVFV1xxxeWXXx52HQAAAAAAAL2tX79+YSccglgulwu74RNm+fLl3/nOd/Z8WVpa+oUvfOGy\nyy7rlgWhdXV1EydOrK2t/fjfiu6VSCTy8/MPh2W/AERbOp1uaWkpLi4uKSkJuwWAiEsmk+3t\n7WVlZfv8jDMAdKOWlpZ0Oj1gwADPIASiatGiRUEQjBgxoqqqKuyWLrGC8ONqa2t7+umnFy9e\n/Nd//dfjxo076P2//e1vlyxZsr+r69ev79Y6uo3NYwHoHQUFBX7pANA7SkpKfB4FgN5RXl4e\ndgJAz+rcQbSkpKTziYOH/+chrCD8iLLZ7M6dOzdv3vzGG2/MmTOnra0tCILzzz9/8uTJB37h\n5s2bd+zYsb+r991334033mgFIQAAAAAAwCfFsGHD9hyfeeaZ//Iv/zJq1KgQew7KgLAbbN26\n9dZbb92yZUsQBN/+9rfPO++8j/ytbDEKAAAAAADwydI5IBw1atS6deuCICgtLb3tttu+8Y1v\nHLZLCfPCDoiCI444YtKkSZ3Hc+bMCTcGAAAAAACA3vfd7373Rz/6UWlpaVtb2+2333755Ze/\n++67YUftmwFh9zj55JM7D955551MJhNuDAAAAAAAAL1v4sSJL7300llnnRUEwe9+97vzzz//\noYceOgy38zQgPLglS5Y8+eSTDzzwwPLly/d3T1FRUecq0Vwul0qlerEOAAAAAACAw8XIkSNn\nzZp155139uvXr62t7bbbbvvKV76yfv36sLv+hAHhwS1atOg//uM/nn766Zdffnl/92zcuLFz\n/BuPx4uLi3uxjl7y8MMPP/vss2FXABB9mzdvnjFjxptvvhl2CADRt2TJkhkzZjQ1NYUdAkD0\nvfDCCzNmzMhms2GHAPSSWCw2YcKEl19++c///M+DIJg/f/75558/Y8aMw2cpoQHhwY0ZM6bz\nYO7cuVu2bNnnPfX19Z0Ho0eP7qUseldjY+OGDRvCrgAg+pLJZGNj444dO8IOASD6EolEY2Nj\nW1tb2CEARF9TU1NjY+Ph87Y4QO8YPnz4Y489NnXq1PLy8l27dt16661XXnnle++9F3ZXEBgQ\ndsUpp5wyatSoIAja2tqmTJny4Tfs6uvrn3zyyc7jL3zhC73dBwAAAAAAwGHpa1/72ssvv3zu\nuecGQTB37tzzzz//kUceCTsqKAg74BMgFotNnjz51ltv7ejoWL169aRJk04//fRRo0bF4/FE\nIvHWW2+tW7eu884zzjhj7Nix4dbSQ6qrqwcPHhx2BQDRF4/Hq6ury8vLww4BIPrKysqqq6vj\n8XjYIQBE36BBg1KpVNgVAKGprq6eOXPmrFmzfvjDH27btu2WW26ZM2fOv/zLvwwbNiyspJhl\n3V20evXqu+++e+PGjfu74YILLvjmN79ZVFT0cX5KXV3dxIkTa2trP843AQAAAAAAoOc8+OCD\ne395++23B0Fw1VVXHXjE09LS8tBDD23atCkIgrKyspUrV/Zo5AEYEB6CTCbz+uuvL1y48L//\n+7+bm5t3795dWlo6dOjQ0aNHjxs3rnMb0o/JgBAAAAAAAOAw1y2L/zZs2PDxv8lHY4vRQ5Cf\nn3/uued27hILAAAAAAAAn0QGhAAAAAAAAHAIfvKTn+z95Y033hgEwfXXX3/KKaeEVHRoDAgB\nAAAAAADgEPzVX/3V3l92DghPP/30L37xiyEVHZq8sAMAAAAAAACA3mMFIXRJMpnMy8uLx+Nh\nhwAQcdlstqOjo6CgoLCwMOwWACIulUql0+mioqL8/PywWwCIuI6Ojmw2W1JSEnYIQE+57rrr\ngiA46qijwg7pKgNC6JKpU6dWV1dff/31YYcAEHHvvvvuf/zHf5x99tnjxo0LuwWAiJs3b96r\nr7569dVXf+pTnwq7BYCIe/TRR9etW/e9733Pp1KAqPr+978fdsKhscUoAAAAAAAA9CFWEAIA\nAAAAAMBHkclk3njjjd///veJRGLAgAFnnnnmySefHHbUwRkQQpeMGzeurKws7AoAoq+ysnLc\nuHHDhw8POwSA6KupqSkoKBg0aFDYIQBE32mnnXbMMcfEYrGwQwC62e9+97tbbrnlnXfe2fvk\nWWedde+99w4dOrTzy8WLF99zzz2LFi1qb28fMWLExRdffOONN4Y+cYjlcrlwC9hbXV3dxIkT\na2trww4BAAAAAABgv+bOnXv11VenUqkPXzrqqKOee+658vLyn/70p//4j//44au//OUvq6qq\neiVz36wgBAAAAAAAgEPQ0dExefLkzungkUceOW7cuOrq6tbW1t/+9rfLly9fs2bNfffdd8YZ\nZ/zTP/3Th1+7Zs2aG2+88cknnwxxabUBIQAAAAAAAByCp556atOmTUEQXH311T/4wQ8KCwv3\nXHrwwQdvv/32WbNmvfnmm7lc7qSTTrrttttOPvnkvLy8FStW3H333a+//vqiRYteeeWV8847\nL6z+vLB+MAAAAAAAAHwSvfTSS0EQnHTSSXfeeefe08EgCK655prLLrtsy5Yt8+fPHzZs2KxZ\ns84555z+/fuXlZWddtppDz/88PHHHx8EwdNPPx1OehAEBoQAAAAAAABwSJYtWxYEweWXX56X\nt49Z29VXX915MHHixPLy8r0vFRYWdl5taGjo+cz9MiAEAAAAAACAQ7Bjx44gCDrXAn7YCSec\n0Hnw6U9/+sNXO1+1devWHqs7OANC6JKGhoYVK1aEXQFA9LW0tDQ0NLz33nthhwAQfU1NTQ0N\nDc3NzWGHABB9K1eubGhoyOVyYYcAdJuOjo4gCIqLi/d5NR6Pdx7s84aioqI93yEsBoTQJXPm\nzHn99dfDrgAg+rZv3z579myfSgGgF6xatWr27NlbtmwJOwSA6Js/f/7s2bOz2WzYIQDdpnPj\n0M51hB+2Z3XgPpcJdv4RPmDAgB6rOzgDQgAAAAAAADgEw4cPD4Jg4cKF+7w6b968zoOXXnrp\nw1dfffXVIAg+9alP9VRcFxgQAgAAAAAAwCE4/fTTgyB45JFHNmzY8IFL7e3tP/nJT/Ly8qqq\nqp544on6+vq9r77yyiuPP/54EATnnHNOr9V+WMy+z4eVurq6iRMn1tbWhh3CByUSifz8/P79\n+4cdAkDEpdPplpaW4uLikpKSsFsAiLhkMtne3l5WVlZYWBh2CwAR19LSkk6nBwwYEIvFwm4B\n6B5Lly696KKLgiCorq6+5ZZbzjzzzKFDh3Z0dCxbtuxHP/rRG2+88ZnPfOacc8659957Y7HY\nmWeeecwxx2Sz2ZUrVy5evDiXy8Xj8d/97ndDhgwJq78grB8MnyyVlZVhJwDQJxQUFPilA0Dv\nKCkp8XkUAHpH55O6AKLkpJNOuvTSS5966qmmpqbJkycHQZCfn5/JZPbccP3113/+859//vnn\nV69ePX/+/Pnz5+/98u9+97shTgcDW4wCAAAAAADAobrrrrvGjh2758u9p4Nf/epXL7nkkoqK\niscee2zve4Ig6Nev3z/90z9de+21vRe6L1YQHpp33nnnxRdffPvtt7dt29bR0VFaWjps2LCT\nTjrpggsuCHfSCwAAAAAAQK8pKyt79NFHf/GLXzz22GNLly7NZDJ5eXknnXTSddddd+mll3be\nU1VVNWvWrLfeemvRokXt7e0jRow477zzBgwYEG554BmEXbd79+7p06e/+OKL+7xaUFAwYcKE\nSy655GP+FM8gBAAAAAAA+GTJZDItLS39+vX7pDzh2wrCLsnlcnfdddcbb7zR+WVtbe1xxx3X\nv3//jRs3Llq0KJFIpNPpBx54oLS09Atf+EK4qQAAAAAAAPSm/Pz8w2FdYNcZEHbJiy++2Dkd\nLCoquvXWW8eMGbPn0rXXXjt9+vT6+vogCB566KFzzz23qKgotFAAAAAAAAA4oLywAz4Znnnm\nmc6Da6+9du/pYBAExcXFf/M3f3PEEUcEQdDS0rJs2bIQ+uh5Dz/88LPPPht2BQDRt3nz5hkz\nZrz55pthhwAQfUuWLJkxY0ZTU1PYIQBE3wsvvDBjxoxsNht2CAB/ZEB4cDt37tywYUMQBIWF\nhZ///Oc/fEN+fv6pp57aedx5J9HT2Njof1wAekEymWxsbNyxY0fYIQBEXyKRaGxsbGtrCzsE\ngOhrampqbGzM5XJhhwDwR7YYPbiKioonn3wykUgkk8ni4uJ93lNSUtJ5kEqlejENAAAAAAAA\nDo0BYZfk5+cPHjz4ADds3ry586CqqqpXiuht1dXVB/7/AAB0i3g8Xl1dXV5eHnYIANFXVlZW\nXV0dj8fDDgEg+gYNGmRlBcBhJWZZ98fX0tJyzTXX7N69u6Sk5MEHHywtLf3I36qurm7ixIm1\ntbXdmAcAAAAAAAB7eAZhN5g+ffru3buDILjkkks+znQQAAAAAAAAepoB4cf1i1/84rXXXguC\n4Ljjjrv88svDzgEAAAAAAIAD8QzCj+WRRx6ZNWtWEATDhg373ve+V1Bw8H+eL7744htvvLG/\nq2vXru3GPAAAAAAAAPgAA8KPqKOj48c//vG8efOCIBgxYsT3v//9/v37d+WFZ5xxxgEeMbh5\n8+ZuSwQAAAAAAIAPMSD8KLZu3frDH/6wsbExCILRo0fffvvtZWVlXXxtRUVFRUXF/q7G4/Hu\nSQQAAAAAAIB9MSA8ZMuXL7/zzjt37twZBMH5559/4403FhYWhh1Fj0smk3l5eSa4APS0bDbb\n0dFRUFDgDwwAeloqlUqn00VFRfn5+WG3ABBxHR0d2Wy2pKQk7BAA/igv7IBPmAULFtx+++07\nd+6MxWL/83/+z8mTJ3vzro+YOnXqjBkzwq4AIPrefffdKVOmvPbaa2GHABB98+bNmzJlypo1\na8IOASD6Hn300SlTpmQymbBDAPgjKwgPwYIFCzp/jcXj8f/1v/7XGWecEXYRAAAAAAAAHBoD\nwq5auXLl3XffnclkiouLv//9759wwglhFwEAAAAAAMAhMyDskra2tn/+53/evXt3QUHB7bff\nbjrYB40bN66srCzsCgCir7Kycty4ccOHDw87BIDoq6mpKSgoGDRoUNghAETfaaeddswxx8Ri\nsbBDAPgjA8Iueeihh7Zs2RIEwde//vWTTjop7BxCMHbs2LATAOgTKioqzj777LArAOgTRo4c\nOXLkyLArAOgTTjzxxLATAPgTBoQHt2XLlhdffDEIglgs1tra+thjjx3g5rKysvHjx/dWGgAA\nAAAAABwaA8KDW716dSaTCYIgl8v98pe/PPDNQ4cONSAEAAAAAADgsJUXdgAAAAAAAADQe6wg\nPLixY8f+53/+Z9gVAAAAAAAA0A2sIAQAAAAAAIA+xIAQuqShoWHFihVhVwAQfS0tLQ0NDe+9\n917YIQBEX1NTU0NDQ3Nzc9ghAETfypUrGxoacrlc2CEA/JEBIXTJnDlzXn/99bArAIi+7du3\nz54926dSAOgFq1atmj179pYtW8IOASD65s+fP3v27Gw2G3YIAH9kQAgAAAAAAAB9iAEhAAAA\nAAAA9CEx+z4fVurq6iZOnFhbWxt2CB+USCTy8/P79+8fdggAEZdOp1taWoqLi0tKSsJuASDi\nkslke3t7WVlZYWFh2C0ARFxLS0s6nR4wYEAsFgu7BYAgCIKCsAPgk6GysjLsBAD6hIKCAr90\nAOgdJSUlPo8CQO8oLy8POwGAP2GLUQAAAAAAAOhDDAgBAAAAAACgDzEgBAAAAAAAgD7EMwgB\nAAAAAOgRmUymubm5vb09CILCwsLy8vJ4PB52FAAGhAAAAAAA9IBcLrdt27bt27f369cvFou1\ntLSkUqlBgwYVFRWFnQbQ19liFLrk4YcffvbZZ8OuACD6Nm/ePGPGjDfffDPsEACib8mSJTNm\nzGhqago7BIDIam1t3bJly4ABA+bNm/f000+XlpY2Nzc3NzeH3QWAFYTQNY2NjZ07IQBAj0om\nk42NjdXV1WGHABB9iUSisbGxra0t7BAAIiudTnduKLp58+b33nsvl8sVFxenUqmwuwCwghAA\nAAAAgB4Qi8VyudzeZ7LZbCwWC6sHgD2sIIQuqa6uHjx4cNgVAERfPB6vrq4uLy8POwSA6Csr\nK6uuru5c2AEAPaG4uDiZTJaUlFRWVqZSqVwut2vXroEDB4bdBUDwwU9wEK66urqJEyfW1taG\nHQIAAAAA8HHt3LlzzZo18Xg8Fot1dHR0fgrfIkKA0FlBCAAAAABAj6ioqBg9enR7e3sulysq\nKiopKQm7CIAgMCAEAAAAAKDnFBUVFRUVhV0BwJ/ICzsAAAAAAAAA6D0GhAAAAAAAANCH2GL0\no1i+fPmPf/zjTZs2BUFwyy23jB07NuwiAAAAAAAA6BIDwkOTTqcfeeSRp556KpfLhd1Cr0om\nk3l5efF4POwQAKKsvb29ubm5ra2tsLCwoqKiX79+sVgs7CgAIiuVSqXT6aKiovz8/LBbAIi4\njo6ObDZbUlISdggAf2SL0UOwZs2av//7v3/yySdzuVxBgdlq3zJ16tQZM2aEXQFAlCWTyRUr\nVrz99ts//vGPX3rppcbGxvfffz/sKACibN68eVOmTFmzZk3YIQBE36OPPjplypRMJhN2CAB/\nZMrVVXPmzHnggQfS6XRhYeGECRPWrFnz8ssvhx0FAERELpfbuXNneXl5R0dHfn5+PB6vrKxc\nt25daWmp9esAAAAAdC8rCLvq5ZdfTqfTI0aMuPvuu//qr/4q7BwAIFIymczGjRuLi4v3nMnP\nzy8sLEylUiFWAQAAABBJVhAegosuuujaa68tKioKO4QQjB07tn///mFXABBZnc8azOVy/fv3\n/+xnPzt8+PDOLz2DEICeM2LEiLPPPruysjLsEACi78QTTxwxYoT/wAE4fBgQdtVNN9101FFH\nhV1BaMaNGxd2AgBRlp+fP2zYsEQiUVFRcc455wRBkEqlBg0aZH9RAHrO0UcfffTRR4ddAUCf\ncNppp4WdAMCfMCDsKtNBAKBHVVZWZjKZHTt2FBYWZrPZ9vb2T33qUwUF/loDAAAAoJt5ywkA\n4LBQWFg4ZMiQsrKyVCqVn59fUlJiY3MAAAAAeoIBIQDA4SIvL6+8vDzsCgAAAAAiLi/sAAAA\nAAAAAKD3WEHY22bPnj1v3rz9XX3nnXd6MwYAAAAAAIC+xoCwt40fP378+PH7u1pXV9ebMXRd\nQ0NDv379jj/++LBDAIi4lpaWVatWDRkyZPjw4WG3ABBxTU1NGzduPOaYY/r37x92CwARt3Ll\nytbW1lNPPTUWi4XdAkAQ2GIUumjOnDmvv/562BUARN/27dtnz569YsWKsEMAiL5Vq1bNnj17\ny5YtYYcAEH3z58+fPXt2NpsNOwSAPzIgBAAAAAAAgD7EgBAAAAAAAAD6EM8gPLz83d/93aBB\ng8KuYB+uv/76oqKisCsAiL6qqqpJkyaVlZWFHQJA9I0ZM+bYY4/1H6EA9ILx48fv3r07L896\nFYDDhQHh4WX48OFhJ7Bv1dXVYScA0CfE43G/dADoHeXl5eXl5WFXANAnDB48OOwEAP6Ej2wA\nAAAAAABAH2JACAAAAAAAAH2ILUa7ZPny5UuWLNn7zJo1azoP5s6d++677+45X1xcfOmll/Zq\nHAAAAAAAAHRZLJfLhd3wCfCrX/1qxowZXblzwIABXbwTAAAAAAAAep8tRgEAAAAAAKAPsYIQ\nAAAAAAAA+hArCAEAAAAAAKAPMSAEAAAAAACAPsSAW/B/XAAAIABJREFUEAAAAAAAAPoQA0IA\nAAAAAADoQwwIAQAAAAAAoA8xIAQAAAAAAIA+xIAQAAAAAAAA+hADQgAAAAAAAOhDDAgBAAAA\nAACgDzEgBAAAAAAAgD7EgBAAAAAAAAD6EANCAAAAAAAA6EMMCA8vyWQyk8mEXQHR0dHRkUwm\nw64AIPpyuVwymezo6Ag7BIDoy2QyyWQynU6HHQJA9KVSqWQymc1mww4Bup8B4eHljjvuWLFi\nRdgVEB2PPPLIlClTcrlc2CEARFwmk5kyZcpjjz0WdggA0dfY2DhlypS5c+eGHQJA9L366qtT\npkxZv3592CFA9zMgBAAAAAAAgD7EgBAAAAAAAAD6kJid9w4rdXV1EydOrK2tDTsEIqKjoyOb\nzZaUlIQdAkDE5XK59vb2vLy8eDwedgsAEZfJZHbv3l1YWFhQUBB2CwARl0ql0ul0PB7Py7PW\nCKLGn5JAlHmXFoDeEYvFfB4FgN6Rn5/vlw4AvaOwsLCwsDDsCqBHGPsDAAAAAABAH2JACAAA\nAAAAAH2ILUaByNq9e3d7e3sQBIWFhXbgAQAAAACATgaEQDTt3LlzzZo18Xg8Fot1dHQMGzZs\n0KBBsVgs7C4AAAAAAAiZASEQQe3t7WvWrBk4cGBBQUEQBLlcbuPGjUVFRf379w87DQAAAAAA\nQuYZhEAEJZPJkpKSgoKCF1544ZFHHgmCoKysLJlMht0FQGRlMpnp06fPnj077BAAom/9+vXT\np09vaGgIOwSA6Fu4cOH06dM3btwYdgjQ/QwIgQjK5XKdu4nu2LFj8+bNQRDk5eXlcrmwuwCI\nrFwu19TUtH379rBDAIi+9vb2pqamlpaWsEMAiL7m5uampqbdu3eHHQJ0PwNCIIIKCws/8IdL\ne3t753ajAAAAAADQx3m7HIigfv36HXHEETt27Bg8eHBeXl5ra2v//v09gBCAnhOLxWpqaoYO\nHRp2CADRV1paWlNTU1lZGXYIANE3cODAmpqa4uLisEOA7hez595hpa6ubuLEibW1tWGHwCde\nOp1ubm7u6OjI5XJFRUXl5eXxeDzsKAAAAAAACJ8VhEA0FRQUDBw4MNjreYQAAAAAAEDgGYRA\n5JkOAgAAAADA3gwIAQAAAAAAoA8xIAQAAAAAAIA+xIAQAAAAAAAA+hADQiDKWlpaEolE2BUA\nRF8ul0skEi0tLWGHABB9qVQqkUgkk8mwQwCIvmQymUgk0ul02CFA9zMgBKJs1qxZ06ZNy+Vy\nYYcAEHGZTGbatGlPPPFE2CEARN/atWunTZu2cOHCsEMAiL65c+dOmzZtw4YNYYcA3c+AEAAA\nAAAAAPoQA0IAAAAAAADoQwrCDgDoQWPHjt21a1fYFQBEX15e3vjx48vKysIOASD6jjzyyPHj\nx1dVVYUdAkD0nXDCCQMHDhw4cGDYIUD3MyAEouz4448POwGAPiEvL2/MmDFhVwDQJ1RUVPil\nA0DvGD58+PDhw8OuAHqELUYBAAAAAACgDzEgBAAAAAAAgD7EgBAAAAAAAAD6EANCAAAAAAAA\n6EMMCAEAAAAAAKAPMSAEomzp0qVz587N5XJhhwAQcdlsdu7cucuWLQs7BIDoSyQSc+fOfffd\nd8MOASD61q5dO3fu3J07d4YdAnQ/A0IgyhYvXlxfXx92BQDRl81m6+vrGxoawg4BIPq2bdtW\nX1/f2NgYdggA0bd69er6+vr3338/7BCg+xkQAgAAAAAAQB9iQAgAAAAAAAB9SMyjuQ4rdXV1\nEydOrK2tDTsEIqKjoyObzZaUlIQdAkDE5XK59vb2vLy8eDwedgsAEZfJZHbv3l1YWFhQUBB2\nCwARl0ql0ul0PB7Py7PWCKLGn5JAlHmXFoDeEYvFfB4FgN6Rn5/vlw4AvaOwsLCwsDDsCqBH\nGPsDAAAAAABAH2JACAAAAAAAAH2IASEAAAAAAAD0IZ5BeMhWrlxZX1+/bNmy7du3FxYWDho0\n6Oijj77gggtqa2vDTgMAAAAAAICDMCA8BOl0+mc/+9nzzz+fy+U6z3R0dLS2tq5bt+7ll1++\n6KKLvvWtb8VisXAjAQAAAAAA4AAMCLsql8tNmzbttddeC4KguLj47LPPPuqoozo6OpYvX97Q\n0JDL5Z577rkBAwZcddVVYZcC/88zzzyzefPm66+/3vAegB6VyWR+/vOfV1VVjR8/PuwWACJu\n/fr1zz333JgxY8aMGRN2CwARt3DhwiVLlowfP76qqirsFqCbGRB21UsvvdQ5Haypqbn99tsH\nDx6859Kbb775ox/9aPfu3b/85S8vvPDCysrK8DKBP7Ft27ampqawKwCIvlwu19TUVFRUFHYI\nANHX3t7e1NR07LHHhh0CQPQ1Nzc3NTXt3r077BCg+xkQdsnu3bsfeeSRIAhKS0v/v//v/xs4\ncODeV0899dTLLrvsD3/4w4gRI1pbWw0IAQAAAAAAOGwZEHZJQ0PDjh07giC4+OKLPzAd7HTl\nlVf2ehRwcNXV1YWFhWFXABB9sVispqZm6NChYYcAEH2lpaU1NTU+nQxALxg4cGBNTU1xcXHY\nIUD3MyDsknnz5nUefO5znwu3BDgkF110UdgJAPQJ+fn5EyZMCLsCgD5h2LBhfukA0Ds88hYi\nzICwS1asWBEEQWVl5bBhwzrPtLa2btmypaOjo7Ky0kfFAQAAAAAA+KQwIDy49vb2rVu3BkEw\nfPjwIAjefvvtxx9/fOnSpblcrvOGwYMH/8Vf/MUll1wSj8fDDAUAAAAAAICDyQs74BNg06ZN\nnbPA/v37P/fcc9/97neXLFmyZzoYBMG2bdtmzpx5yy23vP/+++FlAgAAAAAAwMFZQXhwbW1t\nnQcbNmxYsGDBwIEDv/rVr9bW1g4ePHjnzp0LFy58/PHHd+7c2djYOHXq1B/+8IexWCzcYAAA\nAAAAANgfA8KDSyaTnQdr164dOnToP//zP1dUVHSeGTx48Be/+MVTTz315ptv3rVr13/9138t\nWLDgzDPPPMB3mz179rx58/Z39Z133unGcgAAAAAAAPgAA8KD23s30WuvvXbPdHCPqqqqK664\n4oEHHgiC4KWXXjrwgHD8+PHjx4/f39W6urqPFwv8iZaWlnQ6XVlZGXYIABGXy+Xef//9goKC\n8vLysFsAiLhUKtXa2lpcXFxSUhJ2CwARl0wm29vby8vLCwqMEiBqPIPw4Pb8wZ2fn3/aaaft\n856zzz6782D58uW9lAV0waxZs6ZNm7b3mB8AekImk5k2bdoTTzwRdggA0bd27dpp06YtXLgw\n7BAAom/u3LnTpk3bsGFD2CFA9zMgPLiysrLOg/Ly8vz8/H3eM3jw4Hg8HgRBa2trKpXqvTgA\nAAAAAAA4FAaEB1ddXZ2XlxcEQXt7+wFuKyoq6jzIZDK9kQUAAAAAAACHzsbBB1dYWDhs2LD1\n69e3t7dv2bLlyCOP/PA9qVRq165dnTcXFxf3eiOwb2PHju38dxMAelReXt748eP37DwBAD3n\nyCOPHD9+fFVVVdghAETfCSecMHDgwIEDB4YdAnQ/A8IuOf3009evXx8EwYIFCy6++OIP37By\n5cpsNhsEwVFHHdXbccD+HX/88WEnANAn5OXljRkzJuwKAPqEiooKv3QA6B3Dhw8fPnx42BVA\nj7DFaJf8+Z//eefBU089lUwmP3zDf/7nf3YenHbaab2XBQAAAAAAAIfIgLBLampqxo4dGwTB\n9u3b77rrrra2tr2vPvHEEwsWLAiCoLi4+MILLwwnEQAAAAAAgF7x61//+te//nXn9pNdtG3b\ntp7rOVS2GO2qSZMmrV69esuWLW+99daNN9547rnnVlVVNTc3L1y4cNWqVZ33fPOb3xwwYEC4\nnQAAAAAAAPSoSZMmBUFQUFBw9dVXf+c73ykvLz/w/el0+jOf+cyxxx57/fXXX3nllbFYrFcy\n9yuWy+XCLfgE2bhx49SpU995550PX4rH45MmTbrgggs+5o+oq6ubOHFibW3tx/w+AAAAAAAA\n9JBhw4btOR45cuS///u/f+YznznA/U1NTaeffnrn8QUXXDB9+vSioqKeTTwgW4wegqqqqrvv\nvvvb3/72mDFjBg8eXFBQUFZWdvTRR19++eU//elPP/50EAAAAAAAgE+KvLy8IAjefffdyy67\n7De/+c0B7mxtbd0zEfzNb37zve99rzf69s8KwsOLFYTQvZYuXdrc3Dx27NjQ12sDEG3ZbHb+\n/PkVFRUnnnhi2C0ARFwikXj77bdHjhw5cuTIsFsAiLi1a9e+9957J554YkVFRdgtcNjpXEH4\nd3/3dxUVFXfddVcqlSooKLj//vsPsJxs165dTz755B133NHR0REEwYsvvhjiPMgKQiDKFi9e\nXF9fH3YFANGXzWbr6+sbGhrCDgEg+rZt21ZfX9/Y2Bh2CADRt3r16vr6+vfffz/sEDh8FRQU\nfOtb35o5c2ZpaWk6nZ40adIbb7yxv5v79ev39a9//f777+/8cubMmb2VuQ8GhAAAAAAAAPAR\njR079tFHHy0pKdm9e/d1113X1NR0gJvPO++8M844IwiCBQsW9FbgPhgQAgAAAAAAwEd3+umn\n33vvvXl5eVu3bv3GN77R1tZ2gJtPPfXUIAgOPEfsaQUh/myAnnb11Vdns1kPIASgp+Xn599y\nyy2dTyYHgB5VU1Nzyy23FBYWhh0CQPSde+65Z599djweDzsEPhkuuuii22677Qc/+MHbb799\n00033X///ft7a3rgwIFBECSTyd4N/BPewgCiLB6Pl5SUhF0BQPTFYrGSkhL/2QxAL8jPzy8p\nKSko8JlvAHpcYWFhSUmJj0JC191www2XXXZZEATPP//8j370o/3dtm7duiAIysvLe6/sQ/yL\nDQAAAAAAAN1g6tSpY8aMCYLgJz/5yb333vvhG9ra2urr64MgqKmp6e24vRgQAgAAAAAAQDeI\nx+MPPfTQpz71qSAI7rrrrptuuimRSOy5mkwmv/Od72zatCkIgrFjx4ZW6RmEAAAAAAAA0F0q\nKysfffTRK664Ys2aNU8++eSzzz573nnnjRgxYteuXa+88sqGDRuCICgsLLzqqqtCjDQgBAAA\nAAAAgG4zbNiwZ555ZsKECb///e/b29ufffbZD9xw2223jRw5MpS2TrYYBQAAAAAAgO40aNCg\np556avLkyaWlpXufHzBgwNSpUydNmhRWWCcrCIEoe+aZZzZv3nz99dfHYrGwWwCIskwm8/Of\n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\n/OY3s9lsb4TuhwHhR5HL5e6555729vaKioovfvGLYecA+3X66aePGzcu7AoAoi8vL2/cuHFj\n/n/27jy8qvpe9P93Zw4hkECYQpliW6pYtVBqFezhIHWopdX7OJ5zFalKtU791ZZah9N6PNej\nnt72Unv63Ka2ike0Rx+14FQx1ikogliBouCAxJitjAESMif790d6KUUIBJMsWHm9/trZ67v2\nfj+2uDGfvb5rwoSoQwCIv6KiomnTppWUlEQdAkD8feYzn5k2bVpBQUHUIXAwmj9//rp160II\nX/jCF8rLy3/2s5996Utf6viUH/3oR4sXLz7uuONCCCtXrnzqqad6oHNvMiJ870PXk08+uWLF\nihDCzJkz3YMQDmZHHXVU1AkA9AppaWmTJ0+OugKAXqGwsNCHDgA9Y/To0aNHj466Ag5SCxcu\nDCFkZ2ffeeedRUVFH1+wZMmSEMKwYcNGjBix88mCgoL//M///PKXv9zU1PToo4+eeuqpPRa8\nG1cQdtr69evvvvvuEML48eOnTp0adQ4AAAAAAAA9qv1CsmnTpg0dOnSPC84444wzzjij/XZ1\nuxoyZEj7XHD58uXdHdkBA8LO2bm5aJ8+fa644oqocwAAAAAAAOhpW7ZsCSEcfvjhezza2tq6\n24NdtW8Xv379+m6r2zcDws554oknVq5cGUL41re+tccrRgEAAAAAAIi3hoaGEEJubu4ej27e\nvLn9QXV19ceP9uvXL4TQ0tLSbXX7ZkDYCevXr587d24I4ZhjjjnppJOizgEAAAAAACAC+fn5\nYe9XAX7wwQftD1atWvXxo8lkMoTQv3//bqvbNwPC/bVzc9Hc3FybiwIAAAAAAPRao0aNCiG8\n8MILezxaVlYWQsjPz1+9evWaNWt2PdTa2rpw4cIQwmGHHdb9mXuVEeF7H1oef/zx9s1FL7zw\nwsGDBx/w67zwwgsd3HaysrLygF8Z+LgVK1Zs37590qRJiUQi6hYA4qytre2ll17q37//5z//\n+ahbAIi56urqVatWjRw5cuTIkVG3ABBz69at++CDDz7/+c9He50THJwmTpz4+uuvr169+ve/\n//25556766FkMnnXXXeFEM4777zS0tJrrrnm/vvvb7/isLW19aabbqqoqAghHHfccZGUtzMg\n3C8fffTRPffcE0L4/Oc/f8opp3ySlxo7duygQYP2dnT16tWf5MWB3SxdurSysnLSpElRhwAQ\n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\n1aoQwsyZM4cMGRJ1DgAAAAAAAAeFzZs333nnnQ899FBVVVXHKwcOHPjNb37z4osvHjVqVM+0\ndcCAcB82bdrUvrnosGHD+vXrt2jRot0WrF27tv3BmjVr2jcNKC4uHjNmTA93dqFEIjF9+vS8\nvLyoQwCIv6KiounTpw8dOjTqEADib+zYsf379y8qKoo6BID4mzRp0tFHH20fMoDe4A9/+MP1\n11+/devW/Vm8efPm3/3ud/fdd9+11157ySWXdHdbxxKpVCragoPcG2+8ce2113bqlOnTpx/w\n/66zZ8+eMWPGuHHjDux0AAAAAAAAesB///d/X3PNNe2DtvT09COPPHL8+PGjRo0aMmRITk5O\ndnZ2U1NTQ0PDxo0bP/jgg9dff/21115rbm5uP/e66667/PLLI4x3BSEAAAAAAAB0wocffnj9\n9denUqm0tLSLL774sssuGzx4cMenbN269be//e0vfvGLlpaW22+//bTTThs9enSPxO6BAeE+\nHHHEEQsWLOhgweOPP/7rX/86hPCDH/zghBNO6KkuAAAAAAAAonHXXXfV19eHEH7xi1+cccYZ\n+3NKQUHBNddcc+SRR37rW99qaWm5++67f/KTn3Rv5d6lRfXGAAAAAAAAcCh67rnnQgjHH3/8\nfk4Hdzr55JPbrzdbtGhRd4TtJwNCAAAAAAAA6ITKysoQwuTJkw/g3EmTJoUQqqqquripMwwI\nAQAAAAAAoBMaGhpCCHl5eQdwbn5+fgihrq6ui5s6w4CQPSgvL1++fHnUFQDE39atW8vLyysq\nKqIOASD+KioqysvLt27dGnUIAPG3YsWK8vLyVCoVdQgA3aioqCiEsHbt2gM4t/3qw8LCwi5u\n6gwDwk/qtNNOW7BgwYIFC9p3jI2BVCpVVlb26quvRh0CQPxVV1eXlZW98847UYcAEH/vvvtu\nWVnZli1bog4BIP5effXVsrIyA0KAePvCF74QQnjssceqq6s7dWJDQ8Njjz0WQjjyyCO7pWz/\nGBACAAAAAABAJ5x++ukhhM2bN1944YUbNmzYz7N27Njxne9854MPPgghnHrqqd3Yty8GhAAA\nAAAAANAJX/va14477rgQwquvvjpp0qTrr7/+ueeeq6mp2ePi5ubm11577ac//enxxx//1FNP\nhRA+/elP///s3Xt83HWB7//P5Da5NEkv6YW0tWyoFpvagj3KIlZ3C0UUuwtK4XjwGGFZPCyy\nuojxh+Dxco7rsmcfnk3RBxKUi6uLgIstF2khgEoopYUjbS2lWwrUNkmbXqbNdXKb+f2RFbul\n9zb5hpnn8w8ek5nvTF598EfavOf7nUsvvXRYi/+zmFPdR5Ta2tqamprq6upoM7q7u3NycuLx\neLQZAGS8VCrV09OTl5eXn58fdQsAGa6vr6+/v7+goCA3NzfqFgAyXE9PTyqVKioqijoEgKG1\nb9++yy67bN26dfvfOWbMmIkTJxYWFsbj8d7e3p6ent27d+/cuTOVSr15TGVl5b/927+94x3v\nGPbkP8qL8HszYvnrCwDDIycnxw8dAIZHfn6+96MAMDy87R4gS5SXly9duvTWW2+97bbbksnk\n4J2JROIwn0qYk5Nz6aWXfu1rXxs9evRwZR6cgRAAAAAAAACOWTwev+GGGz73uc899NBDy5Yt\ne+mll/bs2fPWw0pKSmbNmjV//vxLLrlk0qRJw9/5VgZCAAAAAAAAOE6lpaWXX3755ZdfHkJo\na2trbW3t6Ojo7+/Pzc0tLi6uqKgYN25c1I0HMhACAAAAAADASVBWVlZWVhZ1xZHlRB0AAAAA\nAAAADB9nEAIAAAAAAMAwee2111577bUQwnnnnRdVgzMIOVA6na6vr1+yZEnUIQBkvqampvr6\n+lWrVkUdAkDmW716dX19fVNTU9QhAGS+pUuX1tfXp9PpqEMAGKF+8Ytf1NTU1NTURNhgIOQg\nmpubd+/eHXUFAJmvt7e3ubm5vb096hAAMl97e3tzc3NPT0/UIQBkvt27dzc3NxsIARjJDIQA\nAAAAAACQRXwGIQdRVVU1fvz4qCsAyHxFRUVVVVVjx46NOgSAzDd27NiqqqqioqKoQwDIfJWV\nlXl5ebFYLOoQAIZQT09PPB6PuuL4GQg5UCwW+8xnPhN1BQBZYdKkSX7oADA8zjjjjDPOOCPq\nCgCywgUXXBB1AgBDrqqqqqCgoLy8/LTTTps5c+acOXM+9KEPTZgwIequo2UgBAAAAAAAgGPT\n29u7c+fOnTt3rly5MoQQi8VmzZq1cOHCRYsWjfyl0GcQAgAAAAAAwAlJp9Pr1q37+7//+//y\nX/7LlVdeuXr16qiLDscZhAAAAAAAAHAM3njjjY6Ojo6Ojm3btm3atOmVV15ZsWLFpk2bQggD\nAwPLly9fvnz5WWeddcMNN3zgAx+IOvYgDIQAAAAAAABwDPLz88eMGTNmzJipU6eeffbZg3du\n37592bJlDzzwwEsvvRRCeP755xctWnTeeefdfPPN73znOyPtPZBLjAIAAAAAAMCJmjRp0mc/\n+9lHH330qaeeuuyyy/Lz80MIDQ0N55133i233NLb2xt14B8ZCDmIRCLR3t4edQUAma+vry+R\nSHR3d0cdAkDm6+7uTiQSfX19UYcAkPna29sTiUTUFQBEacaMGd/97neff/75z372s3l5ef39\n/YsXLz733HOfe+65qNP+g4GQA6XT6bq6uvvvvz/qEAAy37Zt2+rq6lasWBF1CACZ77nnnqur\nq9u6dWvUIQBkvgceeKCuri6VSkUdAkDEJk6c+O1vf/vpp5++4IILQgivvfbaokWLamtr29ra\nok7zGYQAAABkunQ63fcHUbcAAADZpaqq6kc/+tFTTz118803b9my5ac//WnURSE4gxAAAIDM\n1tfX19raumXLlkQisWnTpl27djmlAwAAGGbz589/+umn//Zv/zYvb0ScvDciIhhRYrHYwoUL\nS0pKog4BIPNVVFQsXLhw0qRJUYcAkLHS6fSePXv27t07d+7cd7zjHaeeeuqOHTtisdi4ceOi\nTgMgY51zzjlz5syJxWJRhwAwssTj8a985St/+Zd/+T//5//ctm1btDGxdDodbQH7q62tramp\nqa6ujjoEAAAgEySTyY0bN44fP/7NewYGBnbt2jV79uzc3NwIwwAAACLkEqMAAABkrIGBgQOG\nwNzc3FgsNjAwEFUSAABA5AyEAAAAZKzc3Nz+/v79r53T398/YcKEEfKxHwAAAJEwEAIAAJCx\n4vH45MmT9+3bN3jKYH9//759+4qLi3Ny/HMYAAA4Cbq7u3/2s58tX7486pBj4y2TAAAAZKxY\nLDZ27NicnJzf//73sVhswoQJU6dOLS8vj7oLAADIBE888cQNN9ywa9euyy+//CMf+cib97e3\nt59xxhllZWXl5eXl5eWDNw74sry8/IMf/GBU5QZCAAAAMllubu64ceNGjx49MDCQl5fn3EEA\nAOCkWLZs2dVXXz14tZKmpqb9H0qn08lkMplMtra2HuYVDnjWcPLvIg6isbFxzZo1UVcAkPn2\n7t3b2Ni4ZcuWqEMAyHzbtm1btWpVW1tb1CEAZL61a9c2Njbu/wm4AGSetra2G264YXAdnD59\n+sUXX7z/o7FYLKKuo+UMQg6UTqcbGhqmTp06Z86cqFsAyHCJRKKhoWHevHnTpk2LugWADLd5\n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\nABxo7969IYSqqqrDHPOud70rhLB27dphajoWfucFAESgqKjo3e9+9/r16/Py8kpKSk477bSS\nkpLBhwoLQmFBCCGUlwxTTG9/SPaGvXv3bn59+6jSstGjcvr7+9va2t7xjne4DB0AAAAAb5WT\nc+SLdA5eenTPnj1Dn3PMDIQcKBaLLVy48M3f0gLAEInH4+985zs/9alPTZo0adSoURGWFOSF\ngrwwqrCsrDh0dXXt2NFSMnHi5MmTy8vLI6wC4OSaMWNGeXl5RUVF1CEAZL5zzjlnzpw5sVgs\n6hAAhtCYMWNaWlpef/31wxyzZcuWEEJxcfFwRR0DAyEHMXfu3KgTAMgKpaWlI+eHTk5OzujR\no8vLy8ePH5+bm3s07wID4G1k8uTJkydPjroCgKwwY8aMqBMAGHIzZ85saWl57LHHvv71r8fj\n8bce0NfXt2zZshDClClThr3uyPzmCwDgj2KxWH5+vnUQAAAAgMOYP39+CKG1tfWmm25KpVJv\nPeDb3/52S0tLCGHevHnDHXcUnEF4bDZv3vz444+vX79+165dPT09xcXFkydPnj179oIFCyZO\nnBh1HQAAAAAAAEPusssu+7//9//u2rXr3nvvff3116+77rqzzz47Ho+n0+k1a9YsXrx4+fLl\nIYTc3NzPfOYzUccehIHwaPX29tbX1z/++OP739ne3v7KK6+88sorDz744Gc+85mLLrooqjwA\nAAAAAACGR1FR0Xe/+92ampp0Or1y5cqVK1fm5OSUlZV1dXX19va+edjf/d3fnXrqqdFlHpKB\n8Kik0+l/+Id/eOGFFwa/rK6unjFjRllZWUtLy6pVqxKJRH9//5133llcXHz++edHmwoAAAAA\nAMBQO/fcc3/wgx9cf/31nZ2dIYRUKrV37979D7j22mu/+MUvvvWJEydOnD179jBVHkIsnU5H\nW/C2sHz58u9///shhIKCghtvvHHu3LlvPpRMJuvr6xsaGkIIpaWld911V0FBwXF/o9ra2pqa\nmurq6hNvBgAAAAAAYEi1trbecccdy5cv37x58+A9paWlH/rQh6655pozzzwz2rbDcAbhUVm6\ndOngjb/6q7/afx0MIRQWFl577bVr1qzZuXNne3v7unXrDjjg7aixsbG0tHTOnDlRhwCQ4fbu\n3fu73/1u6tSp06ZNi7oFgAy3ZcuWrVu3zpo1a/To0VG3AJDh1q5d29bWds4558RisahbABhy\nEyZMuOmmm2666aZkMrlnz554PD5mzJicnJyou45gpPeNBPv27Wtqagoh5Ofn//mf//lbD8jN\nzX3ve987eHvwyLe1dDrd0NDw5vVUAWDoJBKJhoaGV199NeoQADLf5s2bGxoa9uzZE3UIAJnv\nhRdeaGhocOU2gGxTWFhYWVk5bty4kb8OBmcQHo3y8vIHH3wwkUh0d3cXFhYe9JiioqLBG319\nfcOYBgAAAAAAAMfGQHhUcnNzKyoqDnPAjh07Bm+ccsopw1IEAAAAAADAiJBOp9evX79mzZo3\n3nhj586dnZ2dfX19+fn5xcXF48aNmzZt2qxZs+bMmZOXN1KGuZhT3U9ce3v7FVdc0dvbW1RU\ndNdddxUXFx/3S9XW1tbU1FRXV5/EvOPQ3d2dk5MTj8ejzQAg46VSqZ6enry8vPz8/KhbAMhw\nfX19/f39BQUFubm5UbcAkOF6enpSqdSblxwDILPt3r37hz/84b/9278d8UPoxo0b95d/+ZdX\nXXXVtGnThqftMN4GV0Ed+err63t7e0MIF1100YmsgyNHUVGRdRCAYZCTk1NUVGQdBGAY5Ofn\nFxUVWQcBGAbxeNw6CJAllixZ8qEPfWjx4sVHXAdDCLt3777zzjvnz59/xx13DEPb4Y2UMxnf\nvu67775f//rXIYQZM2YsWrQo6hwAAAAAAACG3H333felL31p8FKdubm5s2bNeu973ztt2rSJ\nEycWFhbG4/He3t5kMrlz585t27a99NJL/+///b++vr5kMvmNb3yjt7f32muvjTDeJUZPyE9+\n8pP7778/hDB58uRbbrmlrKzsiE95+OGHn3322UM9umnTpm9961uRX2IUAAAAAACAQ2lpaZk3\nb97gR7ZdddVV11xzzYQJEw7/lL179/7oRz9avHhxf39/Xl7er3/961NPPXVYYg/CGYTHqaen\n55//+Z8Hp76pU6d+85vfPJp1MISwYMGCD3/4w4d69Jvf/OZJSwQAAAAAAGAI3HXXXd3d3SGE\nxYsXX3zxxUfzlNGjR3/pS1+aNWvWlVde2d/ff/fdd3/jG98Y2spDMxAej507d377299+7bXX\nQggzZ868+eabR40adZTPLSwsLCwsPNSjPg8DAAAAAABghPvVr34VQvjABz5wlOvgmz7ykY/M\nmzfvmWeeOcz1JodBToTf+23q5Zdfvv766wfXwXPPPfd//a//dfTrIAAAAAAAAG93W7duDSF8\n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\nrbfeeuaZZ1599dXbt28fnrzDMBACAAAAAADAsVm7du0nPvGJV155ZfDLI54dmEgk0un0o48+\nesEFF2zZsmXoAw/HQAgAAAAAAADHoL+//5prrunq6gohlJaWXnbZZRdccMHhnzJz5szS0tIQ\nws6dOz/3uc+lUqnhCD0EAyEAAAAAAAAcg6VLl77xxhshhDPPPLOxsfG73/3u+9///sM/5cYb\nb1y5cuXZZ58dQli3bt3y5cuHofNQDIScNE8++WRdXd2uXbuiDgEg891zzz2333571BUAZL72\n9va6urpf/vKXUYcAkPk2bNhQV1e3du3aqEMAOCqPP/54CCEej//whz+sqKh46wGrVq1atWrV\n1q1b979z9OjR3//+9wsKCkIIDz/88PCkHpSBkJOmq6srkUgMDAxEHQJA5mtra9u3b1/UFQBk\nvlQqlUgkOjs7ow4BIPP19vYmEomenp6oQwA4KoNv6TjvvPMmTZp00AMuvvjiiy+++K677jrg\n/okTJ370ox8NIaxZs2aoIw/DQAgAAAAAAADHYM+ePSGEd7/73Qd99M2TqQ56VlVVVVUIYceO\nHUNWd2R5EX7vt510Or0I+bppAAAgAElEQVRy5crGxsZNmzYNnipXUlIyZcqUWbNmLViwYMKE\nCVEHRqyysjKZTMbj8ahDAMh806dP7+3tjboCgMyXn59fXV09ZcqUqEMAyHyjR4+urq4eO3Zs\n1CEAHJVkMhlCKCoqOuiju3fvHryRSCTe+mhZWVkIob+/f8jqjsxAeLRaWlr+8R//cfPmzfvf\nuW/fvn379q1fv/7nP//55Zdffskll0SVNxLMnTt37ty5UVcAkBUGr8MAAEOtuLh40aJFUVcA\nkBWmTZs2bdq0qCsAOFqlpaWJROJQZwFu27Zt8Mb69evf+mhzc3MIoby8fOjyjshAeFR27dpV\nW1s7+FlHBQUFZ5111uTJk4uLi3ft2rV69eqWlpaBgYEf//jHeXl5F110UdSxAAAAAAAADKFp\n06YlEonf/OY3B320oaEhhFBaWvrKK69s3LhxxowZbz40MDDw+OOPhxBOO+204Uk9KJ9BeFRu\nv/32wXVwxowZd9xxx5e//OX/9t/+20UXXXTVVVfddtttCxcuHDzsX//1X7u6uiItBQAAAAAA\nYGi9733vCyG88sorP/vZzw54qLm5+a677gohfOpTnwohfOlLX2pvbx98aGBg4Jvf/OaWLVtC\n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\n9tln7/kbn3rqqcsuuyyEcMUVV/zwhz/sobzd8gxCAAAAAAAA2AvPP/98COG4447bq3UwhPA/\n/sf/OOGEE0IIL774Yk+E7SEDIQAAAAAAAOyFd999N4Twmc98Zh/ee/zxx4cQ1q5d281Ne8NA\nCAAAAAAAAHshHo+HEPLy8vbhvQUFBSGEpqambm7aGwZCAAAAAAAA2Av9+/cPIaxatWof3tt1\n9WG/fv26uWlvGAgBAAAAAABgLxxxxBEhhEcffbSurm6v3hiPxx999NEQwrhx43qkbM8YCAEA\nAAAAAGAvnHXWWSGETZs2XXLJJbW1tXv4rsbGxquvvnrNmjUhhFNPPbUH+3bHQEi3eeaZZ6ZP\nn75x48aoQwBIfnffffftt98edQUAyW/btm3Tp09//PHHow4BIPktXbp0+vTpixYtijoEgD1y\n2mmnTZo0KYTwyiuvHH/88d/73veef/75bdu27fDktra2v/3tbz/96U+PO+64p556KoRw8MEH\nn3vuub1a/PcyIvzen0Rvvvnm008/vWTJko0bN7a0tPTp02fYsGHjx4//whe+MGjQoKjrItbU\n1FRXV9fR0RF1CADJb+vWrc3NzVFXAJD8Ojs76+rqGhsbow4BIPm1trbW1dW1tLREHQLAnvrN\nb35z3nnnLV68uKmp6a677rrrrrtCCP369Rs0aFBOTk52dnZra2tLS8umTZs2bNjQ2dm5/Y1D\nhw695557MjKiHOkMhHuqtbW1vLz86aef/uAnt23btmzZsmXLlj3wwAMXX3xx1/WkAAAAAAAA\nJLe+ffs+9NBDM2bM+K//+q94PN71ybq6ul08lTAtLe3cc8+94YYbioqKeitzxwyEeySRSPzk\nJz955ZVXuj4sLS099NBDCwsLa2pq5s+fX1dX197efscdd/Tp0+eLX/xitKkRGjp0aDwez87O\njjoEgOR38MEHt7a2Rl0BQPLLzMwsLS0dPnx41CEAJL+ioqLS0tIDDjgg6hAA9kJ2dva//uu/\nfvWrX3344YeffPLJhQsXbt68+aOn5eXljRs3bvLkyeecc87gwYN7v/OjYolEIuqGT4Cnnnrq\nF7/4RQghKyvru9/97oQJE7Yfisfj5eXlFRUVIYSCgoI777wzKytrn79RWVnZtGnTSktLP34z\nAAAAAAAAvWnr1q21tbUNDQ3t7e3p6el9+vTp379/cXFx1F0f5grCPfLQQw91vfinf/qnD66D\n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\nd0+dOvWmm27q2rXrxo0bpcuuueYa2VMBkp07d86aNWvXrl1KBwEAnLMWVxamp6fPmjVL+n9B\nAAD8as6cOWda1wgAABkVFRXNmjVrxYoVSgcBgGbh9ttvf+WVV0wmk/Sl2+0uKSnxlWJCiD59\n+nz44YdGo9H3SpcuXbRa7ZQpU1544YWmjvtXGn8M+vzzz+/Zs+err76SvoyJiZEO9Hr9iy++\nOGbMGOnL7OxsaU3R6sLCwh588EF/pAKEEC6Xq7Ky0uVyKR0EANAovo4wMTFR2SR1cDgclZWV\n1ZdMAADAT+x2u0bjlzf4AABU5/F4KisrnU6n0kEAoLkYNWrUoEGDFi5cuGbNmt27d0urjFos\nlssuu+zWW28dNmyYSqWqfv2YMWMmT54cHR2tUN4/+eX9g1arXb58+Ztvvvnqq68eOnTIVxAK\nIW6//fZDhw7NnDmz1j8sM5vNn332mVw/l4MHD2ZkZPz666+FhYVVVVUmk6ldu3bJyclDhgxp\n3br1OQ21Y8eOmTNnnvWyhIQEacNJAADQNKrPJmzOZSEAAAAAAAACUlRU1EMPPfTQQw8JIcrL\nyzUajV6vP9PFnTt3bsJodfHXBwzVavUDDzzwwAMPHDx4UKfTVT/1xBNP9OnTZ9asWWvWrJG2\nYRRCmM3mESNGzJw5s1OnTo1/usPheOeddzIyMqq/aLPZ9u7du3fv3qVLl6ampt500031H7C8\nvLzxqdAchIeHJyUlhYeHKx0EACC/5lYWxsbGejweaW9mAAD8qmvXrmq1/HuIAABQg16vT0pK\nkraRAgCcLjg4WOkI9aVScNmr8vLy3Nzc0tLSsLCwTp06BQUFyTKs1+t99tlnt23bJn2ZlJTU\ntWtXi8Vy7NixLVu2FBcXS68/8MADV199dT3HXLly5RtvvCGESElJqaPdbdWqVSM3UExLSxs3\nblxSUlJjBgEAoIk1800Bm0NZCAAAAAAAADQfSm5REBwc3LVrV9mHzcjIkNpBnU43ffr0Xr16\n+U6NHz/+nXfeWb16tRDigw8+GDBgQI3ZjWfim0HYt2/fQYMGyZ4ZAAD4T4vYsBAAAAAAAAAt\nncPhyM7OLi0tLSsrU6lUISEhISEh8fHxzXBmYQDuYb58+XLpYPz48dXbQSGEwWC4//77d+7c\nWVBQYLPZsrKyalxwJr6CsBn+IwQAAPVUY6YjfSEAAAAAAAAab8+ePcuWLVu9evWBAwfcbneN\nsyqVKjY2NiUl5brrrhs0aFAdOxQ2pUArCEtLS/Py/p+9O4+Pqjz0P/6cZfaZJAPZCCQgoiGm\nAoIoVKy4XUHFq1Wuoq3YTa1ef3otxdra29vaRa3X1uq9LepLW61XllawtIq0CC4IKKkIAqGR\nIgQwC8lkssx+zvn9MTCMSQgJZHKSM5/3H7xOznnmzDdJTZP5zvM8B4QQNpvtwgsv7DpAUZTJ\nkye//vrrQogDBw70siBsb29PHlAQAgBgGYNtz0IAAAAAAAAMLY2NjT/4wQ9SU9e6ZRhGbW1t\nbW3t8uXLi4qKFi5ceP3110uSNGAhu2W1gjA3N/fll18OBALhcNjpdHY7xuVyJQ/i8Xgvb8sM\nQgAArI2y0Hp27tzJtxIAAAAAAGTO3r17b7jhhn379qXOuFwuj8fT0tKSSCSEEBUVFWPHjm1q\navrHP/7R3NwshKivr//Wt761fv36X/ziF6pqZklntYJQCKEoSn5+fg8D6uvrkwcjRozo5T0p\nCAEAyB6sRDoUdfquAQAAAAAAZFQikbjtttuS7WBxcfHtt99+2WWXlZWVJS/97W9/+9GPflRT\nU3PLLbd86UtfEkLs2rVrxYoVzz77bHt7+8svv+z1en/2s5+ZmN+CBWHP2traqqqqhBAul2vS\npEm9fFSqIHS5XOvWrXv77bc//vjj1tZWp9NZWFg4adKk2bNnFxcXZyo0+k9ra+uhQ4cKCgp8\nPp/ZWQAAQ8MJTy5saGhob28vLS212WwZyJXVqAMBoJO9e/dKkpR8MQIAgMyJxWL79+/3+XwF\nBQVmZwEAky1fvnzbtm1CiAsuuOCpp57yer2pS6qqzpo1a+rUqbNmzfrud79bXl4+derU8vLy\n++677+abb7755pt37NjxwgsvzJ07d/LkyWbll816YrM89dRTsVhMCHH11Ve73e5ePiq1B+F3\nvvOdxx577P333w8EApqmdXR07NmzZ/ny5d/85jeXLFliGEamcqOf1NTUPP/88zU1NWYHAQAM\nSTu76GHw22+//fzzz6d+i8AJ69OXHQCy07Jly15++WWzUwAArC8YDD7//PPvvvuu2UEAwHx/\n+tOfhBCFhYWLFi1KbwdThg8f/q1vfUvTtF/84hepkyNGjPjtb3/r8XgMw1i8ePHAxe0iu2YQ\nLlmy5M033xRClJeXz507t/cPTM0grK2t9Xg8U6dOLSsrs9vtn3766aZNmw4dOqRp2osvvhiP\nx5MTRQEAQJZgPdL+RfkHAAAAAACGhOSLGNddd10PCxZOmzZNCPH2228Hg8Hc3NzkyZEjR155\n5ZVLliwx9/0WWVQQ/v73v1+6dKkQYuTIkd///vf7tPdjqiC8/PLLb7755vSph1/72teee+65\nlStXCiGWLl06bdq0cePG9XCrlStXrl+//lhXd+/e3ftUAABgsEnvt/bv33/o0CETwwxmFIEA\nAAAAAGBIS77sM3r06B7GlJSUCCF0Xd+/f3+qIBRCnHHGGUKIurq6DGfsSVYUhNFo9Je//GWy\nlistLf3hD3+Yk5PTpzs8//zzhmFIktR1VVJVVb/xjW/U19e/9957Qojly5d/+9vf7uFWc+bM\nmTNnzrGuLly4sE/B0Fdjx46dO3du8r9JAAAyauLEiWPHjq2tre362172TDSkCASAgTFnzhxZ\nzro9RAAAAy8nJ2fu3Ll5eXlmBwEA87nd7mAwGAgEehiTeu94KBRKPx+JRIQQNpstc/GOy/oF\nYWNj409+8pN//vOfQogzzjjjgQce6HYp2J4dd7fC66+/PlkQVlVVJavEE0uLTPP7/X6/3+wU\nAICsUFRUVFRU1O2lHmqzIdcdUgECwGBQXl5udgQAQFZwOByVlZVmpwCAQaGsrGzbtm2vv/76\nXXfddawxq1evTh4UFhamn082SubOZbJ4Qbhjx46f/exnwWBQCHHxxRffcccdGepjx40bZ7PZ\n4vF4KBRqa2vr6wxFAACApN70bQNQIlL7AQAAAAAA9GDmzJnbtm374IMPfvOb39x+++1dB+zd\nu/exxx4TQhQXF6evRPrmm2+uXbtWCGHuWy6sXBBu3LjxkUceSSQSkiR95StfufrqqzP3XJIk\nORyOeDwuhIjFYpl7IgAAANo7AAAAAAAAc91yyy1PP/10JBJ58MEHq6qqvvrVr06ZMsVutwsh\nPv300z//+c+//OUvW1pahBA333xz6lG/+MUvnnjiCV3XhRA33nijWeGFhQvCjRs3Pvzww5qm\nORyOBQsWnHvuuRl9ulgs1tHRkTxm+iAAAAAAAAAAAICFFRcXP/jgg9/+9reFEK+++uqrr76q\nKIrP54vFYuk7Dn7uc5+79dZbUx++//770WhUCPHlL3952rRpAx87xZoF4a5dux599FFN05xO\n5w9/+MOTXIZr06ZNmzdvbmxsvOCCCy688MJux3z00UeGYQghysrKkv0wAAAAAAAAAAAArOrG\nG29UFOWBBx5INoKapiWnDKZMnz7917/+tcvlSp05/fTT33333TvuuGPBggUDHfezLFgQhkKh\nn//857FYTFXVBx544OQ36WltbX399deFEA0NDeedd17X/s8wjGXLliWPMz1VEQAAAAAAAAAA\nAIPB9ddff9FFF73wwgtr1qzZsWNHchO6nJycc84559/+7d8uv/xySZLSx99000133HFHYWGh\nSXmPsmBB+Lvf/a6hoUEI8eUvf3nChAl9euyzzz6b3EfwmmuuSX17vvCFLzz//PPBYHD//v3/\n/d//fdddd3m93tRDYrHYokWLtm/fLoRwuVxXXXVVv30myIB9+/Z9+OGHEydOLCsrMzsLAMDi\nduzYUV9fP336dKfTaXYWAIDFrV69WlGUiy++2OwgAACLa2trW7duXWlp6aRJk8zOAgCDRUFB\nwb333nvvvfcKITo6OlRVdTgcxxp82mmnDWC0nlitIGxoaFi9erUQQpKk9vb2l156qYfBXq93\nzpw56WdWrVoViUSEEDNnzkwVhA6H46677vrpT3+q6/qGDRu2bdt2/vnnl5SUSJJ08ODBDRs2\nBAKB5DPec889ubm5mfrc0B8aGxurqqpGjhxJQQgAyLT9+/fX1NRMmTKFghAAkGlbt25VVZWC\nEACQaZFIpKqqStd1CkIA6JbH4zE7Qm9ZrSCsqanRNE18dtnPYykuLu5UEB7LOeec853vfOeJ\nJ55oa2trb29/7bXXOg3Izc29++67zz777BOLDQAAAAAAAAAAAAwMqxWEmTNt2rQzzzxzzZo1\nVVVVn3zySXt7uyRJOTk5Y8aMOfvssy+++OIeZowCAAAAAAAAAADAejRN27x585YtWwKBQF5e\n3vTp0ydOnGh2qOOTDMMwOwOOWrhw4fz58ysrK80OAgBAH+zcudPsCEA3KioqzI4AAAAAAACs\nbMOGDffdd9/u3bvTT37+859/4okniouLkx++//77v/rVr957771IJFJaWnrVVVfdcccdXq/X\njLxHyeY+PQAAAAAAAAAAADDkvPPOO/PmzevUDgoh3n333euuu66trU0IsWjRoquvvvqNN95o\nb29PJBJ79ux5/PHHZ82a9emnn5oR+SiWGAUAAAAAAAAAAAD6IBqN3n333fF4XAhRWFh4ySWX\nlJSUtLe3v/XWWzt27NizZ8+TTz557rnnPvjgg10fu2fPnjvuuOPll1+WJGnAgx9GQQgAAAAA\n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\nixYtkh0HCKGWlpa6urqNGzfKDgIACL/t27fX1dXt2bNHdhAAQPi98MILdXV1mUxGdhAAQGhp\nmhaLxaLR6P/+7/++/PLLsVgsFoupQ1310jTNsrKyZDJZVlYWiUQKK5cCKFJMEI6ARx55xHEc\nIcSVV145hNFsAAAAAAAAAABGg67riUTCtu1IJDIiC6XQCwLhQEE4XD/96U9ffPFFIcSZZ565\nbNmyfs9vbW3t6Og41a25XG4kwwEAAAAAAAAAAADvRkE4LD/60Y9+9rOfCSGmTp361a9+Vdf7\n/35u2rTptddeO9Wtb7/99kjmA8IilUotX748kUjIDgIACL+5c+dWVVVVV1fLDgIACL8LL7xw\nyZIlkUhEdhAAQPh9+MMfZstbAN0pQRDIzlCUcrncAw888PLLLwshpk2b9vWvf72ysnL4l121\natWKFStqamqGfykAAAAAAAAAwHBs27ZNdgQUvXnz5smOAPSCCcKhaGpq+sY3vrF7924hxPz5\n8++6664RWbsZAAAAAAAAAAAAGG0UhIO2devWb37zm62trUKIiy+++POf/7xhGLJDAQAAAAAA\nAACAccR13Xw+39bWZpqmbduy4wDvQkE4OBs3brzvvvs8z1MU5dprr73yyitlJwIAABgvTrX2\nDqupAAAAAABKTWdn57FjxwzDOHToUDabnT59ekVFhexQwDsoCAdh48aNq1evzufzlmWtXLny\n3HPPlZ0IAACgCPS9aQf1IQAAAAAgZHK5XEtLSzweVxSlrKwsHo/v37/fsqxYLCY7GnACBeFA\n7dix41vf+lY+n7dt++tf/zrvZAEAAIwI6kMAAAAAQMi4rmuapqIohS9VVY1Go9lsloIQ4wcF\n4YCk0+l///d/dxxH1/W77rqLN6qAMdbW1vbiiy9Onz594cKFsrMAAMbU2NeHe/bseeONNxYv\nXjx16tQRvzgAAN29+uqrhw8fvuyyyyzLkp0FABByf/jDH0zTXLJkiewgpSIIAlVVux9RVdX3\nfVl5gJNREA7IE0880djYKIS4+uqrzz77bNlxgJKTyWTq6+uFEBSEAIDuRqM+bGxsrK+vnzlz\nJgUhAGC07dq1a/v27R/84AcpCAEAo23btm2xWIyCcMxomua6rq6/U8HkcjnDMCRGAnqgIOxf\nY2Pjc889J4RQFKWjo+O///u/+zg5Ho8vXbp0rKIBAADglPquDwXrlwIAAAAARodt267rZrNZ\n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\nO91OgeJx3nnnffe735Vluaen52Mf+1gymZzk4HXr1gkhJu8RFxoF4ZzE4/EPfvCDmzdv3rx5\n85NPPul2HADAFBgoBAAAAOYdi44CAAAIId71rnfdeOONQoi9e/dee+21kyyKUF5eLoRIpVL5\nC3cSCsLZs237u9/9rrv//QAAs0NTCAAAAMwvakIAAIC///u/v+KKK4QQDz/88Ne//vVTHdbR\n0SGEKCsry1+ykygunrvQPfzww3/+85/dTgGgRPn9/g0bNtTV1bkdpOCNdYR8lgEAp1JbW7th\nw4aqqiq3gwAACoDzd/WsL8U766yzysvLNU2b11AAAExg/fr1Xq/X7RQoQrfeemtbW9vu3bu/\n//3vh0Kha6+99oQDksnkb3/7WyHE8uXL3Qh4HAXhLMXj8R/84AdCiIqKir6+PrfjACg5gUDg\nkksucTtFUXE+wqAmBICT1dfX19fXu50CAFBIZl0Trl69egHiAAAwgYsvvtjtCChOmqbddddd\nl1122V/+8pdvfOMbr7zyyr/+679Go1Hn2VQq9cUvfrGrq0sIceGFF7qYk4JwNmzb/s53vmMY\nRjgc3rRp09133+12IgDA/GCgEAAAAJgvc5wmBAAAKFDRaPQnP/nJBz/4wba2tl/96lc7d+7c\nuHFjfX396Ojo448/3tnZKYTwer1XXnmliyEpCGfjoYceevHFF4UQV199NXsQAkBRoikEAAAA\n5gU1IQAAKEFLlix54IEHrrrqqj179hiGsXPnzhMOuPHGG0877TRXsjlkF89doLq7u3/4wx8K\nIdatW7dx40a34wAAFtaqVav4LAMAAACYo5aWFq69AwAAJaWiouLXv/71dddd5/f7xz8eiURu\nvfXWLVu2uBXMwQThzIwtLur3+z/72c+6HQcAkCcMFAIAAABzN/bnNBfhAQCAQrds2TIhRCQS\nmeQYVVW3bt366U9/+oknnujo6NA07fTTT7/gggt0Xc9XzFOiIJyZnTt3vvTSS0KIj3/845WV\nlW7HAQDkG00hAAAAMHesOwoAAArd008/Pc0jQ6HQe97zngUNMwssMToD3d3dd911lxBizZo1\n73jHO9yOA6CkpVKp3bt3t7e3ux2kdLH0KIDSEY/Hd+/e3dfX53YQAECxOXnd0UOHDu3evTuT\nybgVCQBQOvbs2fPyyy+7nQJwDROE0zW2uKjP55vL4qIdHR3d3d2nenZ4eHjW7wygpCQSie3b\n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\nMSAEAAAAAACAQyYWi40fP3727NlnnXVWFEWvvPJKWVnZ1KlTj5ylhAaEdFQzZsx47LHHQlcA\nkP4aGxunTp360ksvhQ4BIP1VV1dPnTr1zTffDB0CQPpbvHjx1KlTN23aFDoEIJ31799/2rRp\n9957b35+fm1t7W233XbFFVe8//77obuiyICQjmvt2rVVVVWhKwBIf83NzVVVVYlEInQIAOmv\ntra2qqqqpqYmdAgA6W/z5s1VVVX19fWhQwDS31VXXTV79uxzzjkniqJ58+aVlZUdCcufDAgB\nAAAAAADgcCktLX388cd/+tOfFhcX79ix4zvf+c4VV1yxdu3agEnxgF8bPoni4uJYLBa6AoD0\nl5GRUVpa2qNHj9AhAKS/nJyc0tLS/Pz80CEApL+CgoLS0tKsrKzQIQAd1aOPPvrRjXPmzNm4\nceN+zrr++uunTJmSSCTmzp177rnnvvXWW4ct8ABiR87jEImiaNKkSRMmTBg+fHjoEAAAAAAA\nAPatX79+n/yTBFxE6BajAAAAAAAA0Im4xSgAAAAAAAC0wS9+8Ys9P/za174WRdGNN9540kkn\nBSpqGwNCAAAAAAAAaIPPf/7ze37YMiA85ZRTLrrookBFbeMWowAAAAAAANCJWEEIAAAAAAAA\nB++GG26IomjQoEGhQ1rLgLANUqnUwoUL582bt2rVqpqammQy2bVr1/79+48YMWLs2LG9e/cO\nHdi51NfXNzc35+bmhg4BIM2lUqldu3ZlZmZmZ2eHbgEgzSWTyYaGhqysrHjcT+sAHF6NjY1N\nTU1dunTJyHCTOYBD4Pvf/37ohLbxI0drrV+//t577129evWeG7du3bp169Zly5b9/ve/v+qq\nqy699NJQeZ3QlClTEonEd7/73dAhAKS5hoaGioqKIUOGXHPNNaFbAEhzq1ateuKJJ8rKys48\n88zQLQCkuVmzZi1cuPCGG27o379/6BYAAjAgbJUPPvhg0qRJW7dujaIoOzt79OjR/fr1y8vL\n++CDDxYvXrx+/fpkMjl16tR4PP6FL3whdCwAAAAAAADtoa6u7tlnny0qKjr//PNDt7SBAWGr\n/PKXv2yZDg4bNuz2228vKiravevLX/7yI488UllZGUXR//2///e8887Ly8sLFgoAAAAAAEC7\neOmll771rW998MEHV1111Z4Dwu3bt5944okFBQWFhYWFhYUtL/b6sLCwcMyYMaHKDQgPrKam\n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\npOTxxx8/+uijd29/5plnoijKy8t78skn95oORlH0D//wD48//ng8Ho+i6Pe//3375X6EASEA\nAAAAAAC0QcvzaL74xS/m5ubuub1l+eAVV1wxcODAfZ44fPjwz33uc1EUvfrqq4c/82O5xSgd\n1RVXXJFMJkNXAJD+srOzJ06c2PKHXQBwWA0ZMmTixIl7/X4BAA6Hs846a/To0fn5+aFDADqq\nHTt2RFF01FFH7bW95fGun/nMZ/Zz7sknnzx9+vQNGzYcvrwDsoKQjqqgoKCoqCh0BQDpLxaL\nFRUV+bEZgHaQlZVVVFSUk5MTOgSA9JeXl1dUVORPIQEOWmFhYRRFW7Zs2Wt73759oyja/z+w\nGRkZURQ1NjYetroDMyAEAAAAAACANmi5g+hLL7201/aTTz45iqLly5fv59ylS5dGUVRSUnLY\n6g7MgBAAAAAAAADa4LzzzouiaMmSJY8//vie26+88sooiv7jP/6jrq5unye+8847lZWVURSd\n6LW9EAAAIABJREFUdNJJhz/zYxkQAgAAAAAAQBtceeWV3bt3j6LoO9/5TkVFRcujB6MoOv30\n0y+77LJEIvHNb36zqalpr7OWLl36pS99qb6+PoqiSy+9tJ2b9+Qe0wAAAAAAANAGvXr1uvfe\ne2+++eZkMvnAAw9MnTr1wgsvPPvss4899th//dd/zcvLmzJlyttvvz1+/PjBgwc3Nja+++67\nc+bM+c///M/m5uYois4///xzzz03YH8slUoF/PLsZdKkSRMmTBg+fHjoEAAAAAAAAPbnj3/8\n46233rpjx469tsfj8ebm5pZZ4Eedc845Dz/8cF5e3uEP/FhuMUpHNWPGjMceeyx0BQDpr7Gx\ncerUqR994jQAHHLV1dVTp0598803Q4cAkP4WL148derUTZs2hQ4B6NguuOCC+fPnX3fddQUF\nBXtub2pq2ud0sG/fvvfee+/UqVPDTgcjtxil41q7dm0ikQhdAUD6a25urqqqisVioUMASH+1\ntbVVVVWDBg0KHQJA+tu8eXNVVVXLQ7AA+CSKi4t/9KMffe9733v55Zdfe+21FStWVFdXb9++\nvWVZYdeuXQsKCgYPHjxs2LCzzz77s5/97BHyWyYDQgAAAAAAADh4WVlZZWVlZWVloUNay4CQ\njqq4uPgIGbMDkN4yMjJKS0t79OgROgSA9JeTk1NaWpqfnx86BID0V1BQUFpampWVFToEgDBi\n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\n4vG4FYQAAAAAdHQGhHRUl1xySVNTU+gKANJZZmbmrl27srOzr7766uzs7CiKksnk7gWFAHDI\nHX300TfddJOl6gC0g9NOO+2EE04oLi4OHQJAGAaEdFS9evUKnQBAmuvatWsikSgqKiopKYmi\nqK6urqioKC8vL3QXAGkrJyentLQ0dAUAnUJhYWFhYWHoCgCCMSAEANi3bt26DRw48L333svI\nyEilUiUlJYWFhfG4b58AAAAA6Nj8hgsA4GN17959xIgRjY2NGRkZWVlZGRkZoYsAAAAA4JMy\nIAQA2J94PG7VIAAAAADpxF/BAwAAAAAAQCdiQAgAAAAAAACdiPtltcry5cv/8pe/7Lnl3Xff\nbXkxb968v/3tb7u35+TkXHLJJe0a11nNmDGjpqbm6quvDh0CQJprbGycNm1a3759x44dG7oF\ngDRXXV09Z86ckSNHjhgxInQLAGlu8eLFK1asuOCCC3r16hW6BYAADAhbZfny5dOmTdvnrvnz\n58+fP3/3h927dzcgbB9r165NJBKhKwBIf83NzVVVVbFYLHQIAOmvtra2qqpq0KBBoUMASH+b\nN2+uqqqqr68PHQJAGG4xCgAAAAAAAJ1ILJVKhW7g726//fbNmzcXFRWFDukAVqxYsXPnzpNP\nPrmtJzY0NGRnZx+OJNKJ9wmtEfx90q9fv1tuueWgT583b9706dMPYU+6SiaTr7/+ekFBwdCh\nQ9t0YiqVampqysrKOkxhpI3g/5hw5EulUo2NjWHfJ2edddaFF1540KdPmTJlxYoVh7AnXW3Z\nsuWdd97p379/nz592nRiMplMpVLxuLsEsT9NTU1RFHmfsH/JZDKKoszMzIAN11577bHHHnvQ\np3/3u99taGg4hD3pqrq6esOGDccdd1zXrl3bdKJvX2mNxsbGeDzuZjzs35HwPvnhD3/YaX91\nY0B4ZNm5c6cfmw+3Bx988JP8Pp1OwvuE1gj+PsnLyzvuuOMO+vQNGza8//77h7CHvdTU1MyY\nMcPjctm/bdu2Pf300xMmTAgdwhFt586dTz755HXXXRewoaSkpH///gd9+jvvvLN169ZD2MNe\nFixYEI/HTznllNAhHNEWL17c3Nw8evTo0CEc0V5//fWdO3eeccYZARuOOeaYwsLCgz799ddf\nb25uPoQ97GXKlCmXXHJJQUFB6BCOaI8//vhFF13UvXv30CEc0Z544omxY8f27NkzYMNJJ52U\n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",
- "text/plain": [
- "plot without title"
- ]
- },
- "metadata": {
- "image/png": {
- "height": 1500,
- "width": 1200
- }
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "options(repr.plot.width=20, repr.plot.height=25)\n",
- "library(lubridate)\n",
- "df = rbind(gp_measurements %>% select(eid, date, meaning, name, value), data_mean) %>% \n",
- " filter(eid %in% eids) %>% \n",
- " filter(name %in% c(#\"O/E - Systolic BP reading\", \"O/E - Diastolic BP reading\", \n",
- " #\"O/E - weight\", \n",
- " \"Serum cholesterol level\", \"Serum triglycerides level\",\n",
- " \"Serum high density lipoprotein cholesterol level\", \"Serum low density lipoprotein cholesterol level\")) %>%\n",
- " filter(as.numeric(value)>0) %>% \n",
- " filter(!((name==\"Haemoglobin estimation\")&(value> 50))) %>%\n",
- " filter(!((name==\"O/E - Diastolic BP reading\")&(value> 400))) %>%\n",
- " filter(!((name==\"O/E - Systolic BP reading\")&(value> 400))) %>%\n",
- " filter(!((name==\"O/E - weight\")&(value> 300))) %>%\n",
- " filter(!((name==\"Serum cholesterol level\")&(value> 20))) %>%\n",
- " filter(!((name==\"Serum creatinine level\")&(value> 1000))) %>%\n",
- " filter(!((name==\"Serum high density lipoprotein cholesterol level\")&(value> 100))) %>%\n",
- " #filter(!((name==\"Finding of body mass index\")&(value> 50))) %>%\n",
- " left_join(data, on=\"eid\") %>% mutate(time = time_length(difftime(date, birth_date), \"years\"))%>% filter(time>0)\n",
- "\n",
- "ggplot(df, aes(x=time, y=as.numeric(value)), color=as.factor(name))+geom_point(alpha=0.1)+\n",
- " facet_grid(eid~name, scales=\"free\", labeller=label_wrap_gen(width = 10, multi_line = TRUE))+\n",
- " geom_smooth(method=\"lm\")+\n",
- " geom_vline(aes(xintercept=age_at_recruitment_f21022_0_0), linetype=\"24\", alpha=0.5)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 135,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A tibble: 216 × 97\n",
- "\n",
- "\teid | date | code | value1 | value2 | value3 | meaning | name | value | age_at_recruitment_f21022_0_0 | ⋯ | rheumatoid_factor_f30820_0_0 | shbg_f30830_0_0 | testosterone_f30850_0_0 | total_bilirubin_f30840_0_0 | total_protein_f30860_0_0 | triglycerides_f30870_0_0 | urate_f30880_0_0 | urea_f30670_0_0 | vitamin_d_f30890_0_0 | time |
\n",
- "\t<int> | <date> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <dbl> | <dbl> | ⋯ | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> |
\n",
- "\n",
- "\n",
- "\t1659367 | 2009-11-30 | 22A.. | 83.000 | NA | NA | 162763007 | O/E - weight | 83.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 42.24504 |
\n",
- "\t1659367 | 2009-12-21 | 22A.. | 86.000 | NA | NA | 162763007 | O/E - weight | 86.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 42.30253 |
\n",
- "\t1659367 | 2015-08-27 | 22A.. | 96.000 | NA | NA | 162763007 | O/E - weight | 96.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | 2469. | 122.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 122.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | 2469. | 135.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 135.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | 246A. | 77.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 77.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | 246A. | 79.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 79.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | 44P5. | 1.100 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 1.10 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | XE2eD | 5.200 | NA | NA | 1005671000000105 | Serum cholesterol level | 5.20 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t1659367 | 2015-08-27 | XE2q9 | 2.000 | NA | NA | 1005691000000109 | Serum triglycerides level | 2.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |
\n",
- "\t2091573 | 2005-04-22 | 2469. | 142.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 142.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 45.44285 |
\n",
- "\t2091573 | 2005-04-22 | 246A. | 82.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 82.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 45.44285 |
\n",
- "\t2091573 | 2008-01-18 | 2469. | 130.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 130.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 48.18344 |
\n",
- "\t2091573 | 2008-01-18 | 246A. | 84.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 84.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 48.18344 |
\n",
- "\t2091573 | 2011-12-21 | 44P5. | 1.200 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 1.20 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |
\n",
- "\t2091573 | 2011-12-21 | 44P6. | 3.700 | NA | NA | 1022191000000100 | Serum low density lipoprotein cholesterol level | 3.70 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |
\n",
- "\t2091573 | 2011-12-21 | XE2eD | 6.300 | NA | NA | 1005671000000105 | Serum cholesterol level | 6.30 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |
\n",
- "\t2091573 | 2011-12-21 | XE2q9 | 3.000 | NA | NA | 1005691000000109 | Serum triglycerides level | 3.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |
\n",
- "\t2091573 | 2014-02-11 | 22A.. | 74.000 | NA | NA | 162763007 | O/E - weight | 74.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |
\n",
- "\t2091573 | 2014-02-11 | 2469. | 115.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 115.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |
\n",
- "\t2091573 | 2014-02-11 | 246A. | 65.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 65.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |
\n",
- "\t2091573 | 2014-02-11 | 44P5. | 0.770 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 0.77 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |
\n",
- "\t2091573 | 2014-03-27 | 22A.. | 73.180 | NA | NA | 162763007 | O/E - weight | 73.18 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.37098 |
\n",
- "\t2091573 | 2014-04-08 | 44P5. | 1.100 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 1.10 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |
\n",
- "\t2091573 | 2014-04-08 | 44P6. | 0.800 | NA | NA | 1022191000000100 | Serum low density lipoprotein cholesterol level | 0.80 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |
\n",
- "\t2091573 | 2014-04-08 | XE2eD | 2.200 | NA | NA | 1005671000000105 | Serum cholesterol level | 2.20 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |
\n",
- "\t2091573 | 2014-04-08 | XE2q9 | 0.600 | NA | NA | 1005691000000109 | Serum triglycerides level | 0.60 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |
\n",
- "\t2091573 | 2014-05-12 | 22A.. | 72.000 | NA | NA | 162763007 | O/E - weight | 72.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.49692 |
\n",
- "\t2091573 | 2014-05-12 | 2469. | 116.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 116.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.49692 |
\n",
- "\t2091573 | 2014-05-12 | 246A. | 73.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 73.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.49692 |
\n",
- "\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋱ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
- "\t5550237 | 2015-09-29 | 246A. | 75.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 75.0 | 53 | ⋯ | NA | NA | 1.113 | 7.19 | NA | 2.563 | 320.7 | 4.10 | 50.3 | 60.24641 |
\n",
- "\t5708666 | 1998-07-29 | 22A.. | 62.100 | NA | NA | 162763007 | O/E - weight | 62.1 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 43.46886 |
\n",
- "\t5708666 | 1998-07-29 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 43.46886 |
\n",
- "\t5708666 | 1998-07-29 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 43.46886 |
\n",
- "\t5708666 | 2003-11-13 | 246.. | 110.000 | 50.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 48.76112 |
\n",
- "\t5708666 | 2003-11-13 | 246.. | 110.000 | 50.000 | NA | 163031004 | O/E - Diastolic BP reading | 50.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 48.76112 |
\n",
- "\t5708666 | 2004-06-17 | 246.. | 122.000 | 77.000 | NA | 163030003 | O/E - Systolic BP reading | 122.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 49.35524 |
\n",
- "\t5708666 | 2004-06-17 | 246.. | 122.000 | 77.000 | NA | 163031004 | O/E - Diastolic BP reading | 77.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 49.35524 |
\n",
- "\t5708666 | 2005-04-06 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.15743 |
\n",
- "\t5708666 | 2005-04-06 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.15743 |
\n",
- "\t5708666 | 2005-06-29 | 246.. | 120.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 120.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.38741 |
\n",
- "\t5708666 | 2005-06-29 | 246.. | 120.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.38741 |
\n",
- "\t5708666 | 2006-01-17 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.94045 |
\n",
- "\t5708666 | 2006-01-17 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.94045 |
\n",
- "\t5708666 | 2006-11-08 | 22A.. | 63.000 | NA | NA | 162763007 | O/E - weight | 63.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 51.74812 |
\n",
- "\t5708666 | 2006-11-08 | 246.. | 122.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 122.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 51.74812 |
\n",
- "\t5708666 | 2006-11-08 | 246.. | 122.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 51.74812 |
\n",
- "\t5708666 | 2013-04-04 | 246.. | 139.000 | 87.000 | NA | 163030003 | O/E - Systolic BP reading | 139.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 58.15195 |
\n",
- "\t5708666 | 2013-04-04 | 246.. | 139.000 | 87.000 | NA | 163031004 | O/E - Diastolic BP reading | 87.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 58.15195 |
\n",
- "\t5708666 | 2015-07-20 | 246.. | 130.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 130.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.44353 |
\n",
- "\t5708666 | 2015-07-20 | 246.. | 130.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.44353 |
\n",
- "\t5708666 | 2015-08-06 | 22A.. | 63.200 | NA | NA | 162763007 | O/E - weight | 63.2 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.49008 |
\n",
- "\t5708666 | 2015-08-06 | 246.. | 131.000 | 84.000 | NA | 163030003 | O/E - Systolic BP reading | 131.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.49008 |
\n",
- "\t5708666 | 2015-08-06 | 246.. | 131.000 | 84.000 | NA | 163031004 | O/E - Diastolic BP reading | 84.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.49008 |
\n",
- "\t5708666 | 2015-12-10 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.83504 |
\n",
- "\t5708666 | 2015-12-10 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.83504 |
\n",
- "\t5708666 | 2015-12-14 | XE2eD | 5.600 | NA | NA | 1005671000000105 | Serum cholesterol level | 5.6 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |
\n",
- "\t5708666 | 2015-12-14 | 44P5. | 2.000 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 2.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |
\n",
- "\t5708666 | 2015-12-14 | 44P6. | 3.100 | NA | NA | 1022191000000100 | Serum low density lipoprotein cholesterol level | 3.1 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |
\n",
- "\t5708666 | 2015-12-14 | XE2q9 | 1.100 | NA | NA | 1005691000000109 | Serum triglycerides level | 1.1 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A tibble: 216 × 97\n",
- "\\begin{tabular}{lllllllllllllllllllll}\n",
- " eid & date & code & value1 & value2 & value3 & meaning & name & value & age\\_at\\_recruitment\\_f21022\\_0\\_0 & ⋯ & rheumatoid\\_factor\\_f30820\\_0\\_0 & shbg\\_f30830\\_0\\_0 & testosterone\\_f30850\\_0\\_0 & total\\_bilirubin\\_f30840\\_0\\_0 & total\\_protein\\_f30860\\_0\\_0 & triglycerides\\_f30870\\_0\\_0 & urate\\_f30880\\_0\\_0 & urea\\_f30670\\_0\\_0 & vitamin\\_d\\_f30890\\_0\\_0 & time\\\\\n",
- " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 1659367 & 2009-11-30 & 22A.. & 83.000 & NA & NA & 162763007 & O/E - weight & 83.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 42.24504\\\\\n",
- "\t 1659367 & 2009-12-21 & 22A.. & 86.000 & NA & NA & 162763007 & O/E - weight & 86.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 42.30253\\\\\n",
- "\t 1659367 & 2015-08-27 & 22A.. & 96.000 & NA & NA & 162763007 & O/E - weight & 96.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & 2469. & 122.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 122.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & 2469. & 135.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 135.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & 246A. & 77.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 77.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & 246A. & 79.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 79.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & 44P5. & 1.100 & NA & NA & 1005681000000107 & Serum high density lipoprotein cholesterol level & 1.10 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & XE2eD & 5.200 & NA & NA & 1005671000000105 & Serum cholesterol level & 5.20 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 1659367 & 2015-08-27 & XE2q9 & 2.000 & NA & NA & 1005691000000109 & Serum triglycerides level & 2.00 & 42 & ⋯ & NA & NA & 11.148 & 8.89 & NA & 1.332 & 276.2 & 3.72 & 43.2 & 47.98357\\\\\n",
- "\t 2091573 & 2005-04-22 & 2469. & 142.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 142.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 45.44285\\\\\n",
- "\t 2091573 & 2005-04-22 & 246A. & 82.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 82.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 45.44285\\\\\n",
- "\t 2091573 & 2008-01-18 & 2469. & 130.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 130.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 48.18344\\\\\n",
- "\t 2091573 & 2008-01-18 & 246A. & 84.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 84.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 48.18344\\\\\n",
- "\t 2091573 & 2011-12-21 & 44P5. & 1.200 & NA & NA & 1005681000000107 & Serum high density lipoprotein cholesterol level & 1.20 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 52.10678\\\\\n",
- "\t 2091573 & 2011-12-21 & 44P6. & 3.700 & NA & NA & 1022191000000100 & Serum low density lipoprotein cholesterol level & 3.70 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 52.10678\\\\\n",
- "\t 2091573 & 2011-12-21 & XE2eD & 6.300 & NA & NA & 1005671000000105 & Serum cholesterol level & 6.30 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 52.10678\\\\\n",
- "\t 2091573 & 2011-12-21 & XE2q9 & 3.000 & NA & NA & 1005691000000109 & Serum triglycerides level & 3.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 52.10678\\\\\n",
- "\t 2091573 & 2014-02-11 & 22A.. & 74.000 & NA & NA & 162763007 & O/E - weight & 74.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.25051\\\\\n",
- "\t 2091573 & 2014-02-11 & 2469. & 115.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 115.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.25051\\\\\n",
- "\t 2091573 & 2014-02-11 & 246A. & 65.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 65.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.25051\\\\\n",
- "\t 2091573 & 2014-02-11 & 44P5. & 0.770 & NA & NA & 1005681000000107 & Serum high density lipoprotein cholesterol level & 0.77 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.25051\\\\\n",
- "\t 2091573 & 2014-03-27 & 22A.. & 73.180 & NA & NA & 162763007 & O/E - weight & 73.18 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.37098\\\\\n",
- "\t 2091573 & 2014-04-08 & 44P5. & 1.100 & NA & NA & 1005681000000107 & Serum high density lipoprotein cholesterol level & 1.10 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.40383\\\\\n",
- "\t 2091573 & 2014-04-08 & 44P6. & 0.800 & NA & NA & 1022191000000100 & Serum low density lipoprotein cholesterol level & 0.80 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.40383\\\\\n",
- "\t 2091573 & 2014-04-08 & XE2eD & 2.200 & NA & NA & 1005671000000105 & Serum cholesterol level & 2.20 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.40383\\\\\n",
- "\t 2091573 & 2014-04-08 & XE2q9 & 0.600 & NA & NA & 1005691000000109 & Serum triglycerides level & 0.60 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.40383\\\\\n",
- "\t 2091573 & 2014-05-12 & 22A.. & 72.000 & NA & NA & 162763007 & O/E - weight & 72.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.49692\\\\\n",
- "\t 2091573 & 2014-05-12 & 2469. & 116.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 116.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.49692\\\\\n",
- "\t 2091573 & 2014-05-12 & 246A. & 73.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 73.00 & 49 & ⋯ & NA & 51 & 10.978 & 11.12 & 79.19 & 2.321 & 425.1 & 4.52 & 81.4 & 54.49692\\\\\n",
- "\t ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋱ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮\\\\\n",
- "\t 5550237 & 2015-09-29 & 246A. & 75.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 75.0 & 53 & ⋯ & NA & NA & 1.113 & 7.19 & NA & 2.563 & 320.7 & 4.10 & 50.3 & 60.24641\\\\\n",
- "\t 5708666 & 1998-07-29 & 22A.. & 62.100 & NA & NA & 162763007 & O/E - weight & 62.1 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 43.46886\\\\\n",
- "\t 5708666 & 1998-07-29 & 246.. & 110.000 & 70.000 & NA & 163030003 & O/E - Systolic BP reading & 110.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 43.46886\\\\\n",
- "\t 5708666 & 1998-07-29 & 246.. & 110.000 & 70.000 & NA & 163031004 & O/E - Diastolic BP reading & 70.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 43.46886\\\\\n",
- "\t 5708666 & 2003-11-13 & 246.. & 110.000 & 50.000 & NA & 163030003 & O/E - Systolic BP reading & 110.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 48.76112\\\\\n",
- "\t 5708666 & 2003-11-13 & 246.. & 110.000 & 50.000 & NA & 163031004 & O/E - Diastolic BP reading & 50.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 48.76112\\\\\n",
- "\t 5708666 & 2004-06-17 & 246.. & 122.000 & 77.000 & NA & 163030003 & O/E - Systolic BP reading & 122.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 49.35524\\\\\n",
- "\t 5708666 & 2004-06-17 & 246.. & 122.000 & 77.000 & NA & 163031004 & O/E - Diastolic BP reading & 77.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 49.35524\\\\\n",
- "\t 5708666 & 2005-04-06 & 246.. & 110.000 & 70.000 & NA & 163030003 & O/E - Systolic BP reading & 110.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 50.15743\\\\\n",
- "\t 5708666 & 2005-04-06 & 246.. & 110.000 & 70.000 & NA & 163031004 & O/E - Diastolic BP reading & 70.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 50.15743\\\\\n",
- "\t 5708666 & 2005-06-29 & 246.. & 120.000 & 80.000 & NA & 163030003 & O/E - Systolic BP reading & 120.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 50.38741\\\\\n",
- "\t 5708666 & 2005-06-29 & 246.. & 120.000 & 80.000 & NA & 163031004 & O/E - Diastolic BP reading & 80.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 50.38741\\\\\n",
- "\t 5708666 & 2006-01-17 & 246.. & 110.000 & 70.000 & NA & 163030003 & O/E - Systolic BP reading & 110.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 50.94045\\\\\n",
- "\t 5708666 & 2006-01-17 & 246.. & 110.000 & 70.000 & NA & 163031004 & O/E - Diastolic BP reading & 70.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 50.94045\\\\\n",
- "\t 5708666 & 2006-11-08 & 22A.. & 63.000 & NA & NA & 162763007 & O/E - weight & 63.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 51.74812\\\\\n",
- "\t 5708666 & 2006-11-08 & 246.. & 122.000 & 80.000 & NA & 163030003 & O/E - Systolic BP reading & 122.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 51.74812\\\\\n",
- "\t 5708666 & 2006-11-08 & 246.. & 122.000 & 80.000 & NA & 163031004 & O/E - Diastolic BP reading & 80.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 51.74812\\\\\n",
- "\t 5708666 & 2013-04-04 & 246.. & 139.000 & 87.000 & NA & 163030003 & O/E - Systolic BP reading & 139.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 58.15195\\\\\n",
- "\t 5708666 & 2013-04-04 & 246.. & 139.000 & 87.000 & NA & 163031004 & O/E - Diastolic BP reading & 87.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 58.15195\\\\\n",
- "\t 5708666 & 2015-07-20 & 246.. & 130.000 & 70.000 & NA & 163030003 & O/E - Systolic BP reading & 130.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.44353\\\\\n",
- "\t 5708666 & 2015-07-20 & 246.. & 130.000 & 70.000 & NA & 163031004 & O/E - Diastolic BP reading & 70.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.44353\\\\\n",
- "\t 5708666 & 2015-08-06 & 22A.. & 63.200 & NA & NA & 162763007 & O/E - weight & 63.2 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.49008\\\\\n",
- "\t 5708666 & 2015-08-06 & 246.. & 131.000 & 84.000 & NA & 163030003 & O/E - Systolic BP reading & 131.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.49008\\\\\n",
- "\t 5708666 & 2015-08-06 & 246.. & 131.000 & 84.000 & NA & 163031004 & O/E - Diastolic BP reading & 84.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.49008\\\\\n",
- "\t 5708666 & 2015-12-10 & 246.. & 110.000 & 70.000 & NA & 163030003 & O/E - Systolic BP reading & 110.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.83504\\\\\n",
- "\t 5708666 & 2015-12-10 & 246.. & 110.000 & 70.000 & NA & 163031004 & O/E - Diastolic BP reading & 70.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.83504\\\\\n",
- "\t 5708666 & 2015-12-14 & XE2eD & 5.600 & NA & NA & 1005671000000105 & Serum cholesterol level & 5.6 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.84600\\\\\n",
- "\t 5708666 & 2015-12-14 & 44P5. & 2.000 & NA & NA & 1005681000000107 & Serum high density lipoprotein cholesterol level & 2.0 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.84600\\\\\n",
- "\t 5708666 & 2015-12-14 & 44P6. & 3.100 & NA & NA & 1022191000000100 & Serum low density lipoprotein cholesterol level & 3.1 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.84600\\\\\n",
- "\t 5708666 & 2015-12-14 & XE2q9 & 1.100 & NA & NA & 1005691000000109 & Serum triglycerides level & 1.1 & 53 & ⋯ & NA & NA & 0.963 & 17.84 & NA & 0.864 & 213.6 & 2.61 & 35.2 & 60.84600\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A tibble: 216 × 97\n",
- "\n",
- "| eid <int> | date <date> | code <chr> | value1 <chr> | value2 <chr> | value3 <chr> | meaning <chr> | name <chr> | value <dbl> | age_at_recruitment_f21022_0_0 <dbl> | ⋯ ⋯ | rheumatoid_factor_f30820_0_0 <dbl> | shbg_f30830_0_0 <dbl> | testosterone_f30850_0_0 <dbl> | total_bilirubin_f30840_0_0 <dbl> | total_protein_f30860_0_0 <dbl> | triglycerides_f30870_0_0 <dbl> | urate_f30880_0_0 <dbl> | urea_f30670_0_0 <dbl> | vitamin_d_f30890_0_0 <dbl> | time <dbl> |\n",
- "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
- "| 1659367 | 2009-11-30 | 22A.. | 83.000 | NA | NA | 162763007 | O/E - weight | 83.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 42.24504 |\n",
- "| 1659367 | 2009-12-21 | 22A.. | 86.000 | NA | NA | 162763007 | O/E - weight | 86.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 42.30253 |\n",
- "| 1659367 | 2015-08-27 | 22A.. | 96.000 | NA | NA | 162763007 | O/E - weight | 96.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | 2469. | 122.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 122.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | 2469. | 135.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 135.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | 246A. | 77.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 77.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | 246A. | 79.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 79.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | 44P5. | 1.100 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 1.10 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | XE2eD | 5.200 | NA | NA | 1005671000000105 | Serum cholesterol level | 5.20 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 1659367 | 2015-08-27 | XE2q9 | 2.000 | NA | NA | 1005691000000109 | Serum triglycerides level | 2.00 | 42 | ⋯ | NA | NA | 11.148 | 8.89 | NA | 1.332 | 276.2 | 3.72 | 43.2 | 47.98357 |\n",
- "| 2091573 | 2005-04-22 | 2469. | 142.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 142.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 45.44285 |\n",
- "| 2091573 | 2005-04-22 | 246A. | 82.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 82.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 45.44285 |\n",
- "| 2091573 | 2008-01-18 | 2469. | 130.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 130.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 48.18344 |\n",
- "| 2091573 | 2008-01-18 | 246A. | 84.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 84.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 48.18344 |\n",
- "| 2091573 | 2011-12-21 | 44P5. | 1.200 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 1.20 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |\n",
- "| 2091573 | 2011-12-21 | 44P6. | 3.700 | NA | NA | 1022191000000100 | Serum low density lipoprotein cholesterol level | 3.70 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |\n",
- "| 2091573 | 2011-12-21 | XE2eD | 6.300 | NA | NA | 1005671000000105 | Serum cholesterol level | 6.30 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |\n",
- "| 2091573 | 2011-12-21 | XE2q9 | 3.000 | NA | NA | 1005691000000109 | Serum triglycerides level | 3.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 52.10678 |\n",
- "| 2091573 | 2014-02-11 | 22A.. | 74.000 | NA | NA | 162763007 | O/E - weight | 74.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |\n",
- "| 2091573 | 2014-02-11 | 2469. | 115.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 115.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |\n",
- "| 2091573 | 2014-02-11 | 246A. | 65.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 65.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |\n",
- "| 2091573 | 2014-02-11 | 44P5. | 0.770 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 0.77 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.25051 |\n",
- "| 2091573 | 2014-03-27 | 22A.. | 73.180 | NA | NA | 162763007 | O/E - weight | 73.18 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.37098 |\n",
- "| 2091573 | 2014-04-08 | 44P5. | 1.100 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 1.10 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |\n",
- "| 2091573 | 2014-04-08 | 44P6. | 0.800 | NA | NA | 1022191000000100 | Serum low density lipoprotein cholesterol level | 0.80 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |\n",
- "| 2091573 | 2014-04-08 | XE2eD | 2.200 | NA | NA | 1005671000000105 | Serum cholesterol level | 2.20 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |\n",
- "| 2091573 | 2014-04-08 | XE2q9 | 0.600 | NA | NA | 1005691000000109 | Serum triglycerides level | 0.60 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.40383 |\n",
- "| 2091573 | 2014-05-12 | 22A.. | 72.000 | NA | NA | 162763007 | O/E - weight | 72.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.49692 |\n",
- "| 2091573 | 2014-05-12 | 2469. | 116.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 116.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.49692 |\n",
- "| 2091573 | 2014-05-12 | 246A. | 73.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 73.00 | 49 | ⋯ | NA | 51 | 10.978 | 11.12 | 79.19 | 2.321 | 425.1 | 4.52 | 81.4 | 54.49692 |\n",
- "| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋱ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |\n",
- "| 5550237 | 2015-09-29 | 246A. | 75.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 75.0 | 53 | ⋯ | NA | NA | 1.113 | 7.19 | NA | 2.563 | 320.7 | 4.10 | 50.3 | 60.24641 |\n",
- "| 5708666 | 1998-07-29 | 22A.. | 62.100 | NA | NA | 162763007 | O/E - weight | 62.1 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 43.46886 |\n",
- "| 5708666 | 1998-07-29 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 43.46886 |\n",
- "| 5708666 | 1998-07-29 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 43.46886 |\n",
- "| 5708666 | 2003-11-13 | 246.. | 110.000 | 50.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 48.76112 |\n",
- "| 5708666 | 2003-11-13 | 246.. | 110.000 | 50.000 | NA | 163031004 | O/E - Diastolic BP reading | 50.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 48.76112 |\n",
- "| 5708666 | 2004-06-17 | 246.. | 122.000 | 77.000 | NA | 163030003 | O/E - Systolic BP reading | 122.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 49.35524 |\n",
- "| 5708666 | 2004-06-17 | 246.. | 122.000 | 77.000 | NA | 163031004 | O/E - Diastolic BP reading | 77.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 49.35524 |\n",
- "| 5708666 | 2005-04-06 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.15743 |\n",
- "| 5708666 | 2005-04-06 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.15743 |\n",
- "| 5708666 | 2005-06-29 | 246.. | 120.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 120.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.38741 |\n",
- "| 5708666 | 2005-06-29 | 246.. | 120.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.38741 |\n",
- "| 5708666 | 2006-01-17 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.94045 |\n",
- "| 5708666 | 2006-01-17 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 50.94045 |\n",
- "| 5708666 | 2006-11-08 | 22A.. | 63.000 | NA | NA | 162763007 | O/E - weight | 63.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 51.74812 |\n",
- "| 5708666 | 2006-11-08 | 246.. | 122.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 122.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 51.74812 |\n",
- "| 5708666 | 2006-11-08 | 246.. | 122.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 51.74812 |\n",
- "| 5708666 | 2013-04-04 | 246.. | 139.000 | 87.000 | NA | 163030003 | O/E - Systolic BP reading | 139.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 58.15195 |\n",
- "| 5708666 | 2013-04-04 | 246.. | 139.000 | 87.000 | NA | 163031004 | O/E - Diastolic BP reading | 87.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 58.15195 |\n",
- "| 5708666 | 2015-07-20 | 246.. | 130.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 130.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.44353 |\n",
- "| 5708666 | 2015-07-20 | 246.. | 130.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.44353 |\n",
- "| 5708666 | 2015-08-06 | 22A.. | 63.200 | NA | NA | 162763007 | O/E - weight | 63.2 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.49008 |\n",
- "| 5708666 | 2015-08-06 | 246.. | 131.000 | 84.000 | NA | 163030003 | O/E - Systolic BP reading | 131.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.49008 |\n",
- "| 5708666 | 2015-08-06 | 246.. | 131.000 | 84.000 | NA | 163031004 | O/E - Diastolic BP reading | 84.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.49008 |\n",
- "| 5708666 | 2015-12-10 | 246.. | 110.000 | 70.000 | NA | 163030003 | O/E - Systolic BP reading | 110.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.83504 |\n",
- "| 5708666 | 2015-12-10 | 246.. | 110.000 | 70.000 | NA | 163031004 | O/E - Diastolic BP reading | 70.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.83504 |\n",
- "| 5708666 | 2015-12-14 | XE2eD | 5.600 | NA | NA | 1005671000000105 | Serum cholesterol level | 5.6 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |\n",
- "| 5708666 | 2015-12-14 | 44P5. | 2.000 | NA | NA | 1005681000000107 | Serum high density lipoprotein cholesterol level | 2.0 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |\n",
- "| 5708666 | 2015-12-14 | 44P6. | 3.100 | NA | NA | 1022191000000100 | Serum low density lipoprotein cholesterol level | 3.1 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |\n",
- "| 5708666 | 2015-12-14 | XE2q9 | 1.100 | NA | NA | 1005691000000109 | Serum triglycerides level | 1.1 | 53 | ⋯ | NA | NA | 0.963 | 17.84 | NA | 0.864 | 213.6 | 2.61 | 35.2 | 60.84600 |\n",
- "\n"
- ],
- "text/plain": [
- " eid date code value1 value2 value3 meaning \n",
- "1 1659367 2009-11-30 22A.. 83.000 NA NA 162763007 \n",
- "2 1659367 2009-12-21 22A.. 86.000 NA NA 162763007 \n",
- "3 1659367 2015-08-27 22A.. 96.000 NA NA 162763007 \n",
- "4 1659367 2015-08-27 2469. 122.000 NA NA 163030003 \n",
- "5 1659367 2015-08-27 2469. 135.000 NA NA 163030003 \n",
- "6 1659367 2015-08-27 246A. 77.000 NA NA 163031004 \n",
- "7 1659367 2015-08-27 246A. 79.000 NA NA 163031004 \n",
- "8 1659367 2015-08-27 44P5. 1.100 NA NA 1005681000000107\n",
- "9 1659367 2015-08-27 XE2eD 5.200 NA NA 1005671000000105\n",
- "10 1659367 2015-08-27 XE2q9 2.000 NA NA 1005691000000109\n",
- "11 2091573 2005-04-22 2469. 142.000 NA NA 163030003 \n",
- "12 2091573 2005-04-22 246A. 82.000 NA NA 163031004 \n",
- "13 2091573 2008-01-18 2469. 130.000 NA NA 163030003 \n",
- "14 2091573 2008-01-18 246A. 84.000 NA NA 163031004 \n",
- "15 2091573 2011-12-21 44P5. 1.200 NA NA 1005681000000107\n",
- "16 2091573 2011-12-21 44P6. 3.700 NA NA 1022191000000100\n",
- "17 2091573 2011-12-21 XE2eD 6.300 NA NA 1005671000000105\n",
- "18 2091573 2011-12-21 XE2q9 3.000 NA NA 1005691000000109\n",
- "19 2091573 2014-02-11 22A.. 74.000 NA NA 162763007 \n",
- "20 2091573 2014-02-11 2469. 115.000 NA NA 163030003 \n",
- "21 2091573 2014-02-11 246A. 65.000 NA NA 163031004 \n",
- "22 2091573 2014-02-11 44P5. 0.770 NA NA 1005681000000107\n",
- "23 2091573 2014-03-27 22A.. 73.180 NA NA 162763007 \n",
- "24 2091573 2014-04-08 44P5. 1.100 NA NA 1005681000000107\n",
- "25 2091573 2014-04-08 44P6. 0.800 NA NA 1022191000000100\n",
- "26 2091573 2014-04-08 XE2eD 2.200 NA NA 1005671000000105\n",
- "27 2091573 2014-04-08 XE2q9 0.600 NA NA 1005691000000109\n",
- "28 2091573 2014-05-12 22A.. 72.000 NA NA 162763007 \n",
- "29 2091573 2014-05-12 2469. 116.000 NA NA 163030003 \n",
- "30 2091573 2014-05-12 246A. 73.000 NA NA 163031004 \n",
- " \n",
- "187 5550237 2015-09-29 246A. 75.000 NA NA 163031004 \n",
- "188 5708666 1998-07-29 22A.. 62.100 NA NA 162763007 \n",
- "189 5708666 1998-07-29 246.. 110.000 70.000 NA 163030003 \n",
- "190 5708666 1998-07-29 246.. 110.000 70.000 NA 163031004 \n",
- "191 5708666 2003-11-13 246.. 110.000 50.000 NA 163030003 \n",
- "192 5708666 2003-11-13 246.. 110.000 50.000 NA 163031004 \n",
- "193 5708666 2004-06-17 246.. 122.000 77.000 NA 163030003 \n",
- "194 5708666 2004-06-17 246.. 122.000 77.000 NA 163031004 \n",
- "195 5708666 2005-04-06 246.. 110.000 70.000 NA 163030003 \n",
- "196 5708666 2005-04-06 246.. 110.000 70.000 NA 163031004 \n",
- "197 5708666 2005-06-29 246.. 120.000 80.000 NA 163030003 \n",
- "198 5708666 2005-06-29 246.. 120.000 80.000 NA 163031004 \n",
- "199 5708666 2006-01-17 246.. 110.000 70.000 NA 163030003 \n",
- "200 5708666 2006-01-17 246.. 110.000 70.000 NA 163031004 \n",
- "201 5708666 2006-11-08 22A.. 63.000 NA NA 162763007 \n",
- "202 5708666 2006-11-08 246.. 122.000 80.000 NA 163030003 \n",
- "203 5708666 2006-11-08 246.. 122.000 80.000 NA 163031004 \n",
- "204 5708666 2013-04-04 246.. 139.000 87.000 NA 163030003 \n",
- "205 5708666 2013-04-04 246.. 139.000 87.000 NA 163031004 \n",
- "206 5708666 2015-07-20 246.. 130.000 70.000 NA 163030003 \n",
- "207 5708666 2015-07-20 246.. 130.000 70.000 NA 163031004 \n",
- "208 5708666 2015-08-06 22A.. 63.200 NA NA 162763007 \n",
- "209 5708666 2015-08-06 246.. 131.000 84.000 NA 163030003 \n",
- "210 5708666 2015-08-06 246.. 131.000 84.000 NA 163031004 \n",
- "211 5708666 2015-12-10 246.. 110.000 70.000 NA 163030003 \n",
- "212 5708666 2015-12-10 246.. 110.000 70.000 NA 163031004 \n",
- "213 5708666 2015-12-14 XE2eD 5.600 NA NA 1005671000000105\n",
- "214 5708666 2015-12-14 44P5. 2.000 NA NA 1005681000000107\n",
- "215 5708666 2015-12-14 44P6. 3.100 NA NA 1022191000000100\n",
- "216 5708666 2015-12-14 XE2q9 1.100 NA NA 1005691000000109\n",
- " name value \n",
- "1 O/E - weight 83.00\n",
- "2 O/E - weight 86.00\n",
- "3 O/E - weight 96.00\n",
- "4 O/E - Systolic BP reading 122.00\n",
- "5 O/E - Systolic BP reading 135.00\n",
- "6 O/E - Diastolic BP reading 77.00\n",
- "7 O/E - Diastolic BP reading 79.00\n",
- "8 Serum high density lipoprotein cholesterol level 1.10\n",
- "9 Serum cholesterol level 5.20\n",
- "10 Serum triglycerides level 2.00\n",
- "11 O/E - Systolic BP reading 142.00\n",
- "12 O/E - Diastolic BP reading 82.00\n",
- "13 O/E - Systolic BP reading 130.00\n",
- "14 O/E - Diastolic BP reading 84.00\n",
- "15 Serum high density lipoprotein cholesterol level 1.20\n",
- "16 Serum low density lipoprotein cholesterol level 3.70\n",
- "17 Serum cholesterol level 6.30\n",
- "18 Serum triglycerides level 3.00\n",
- "19 O/E - weight 74.00\n",
- "20 O/E - Systolic BP reading 115.00\n",
- "21 O/E - Diastolic BP reading 65.00\n",
- "22 Serum high density lipoprotein cholesterol level 0.77\n",
- "23 O/E - weight 73.18\n",
- "24 Serum high density lipoprotein cholesterol level 1.10\n",
- "25 Serum low density lipoprotein cholesterol level 0.80\n",
- "26 Serum cholesterol level 2.20\n",
- "27 Serum triglycerides level 0.60\n",
- "28 O/E - weight 72.00\n",
- "29 O/E - Systolic BP reading 116.00\n",
- "30 O/E - Diastolic BP reading 73.00\n",
- " \n",
- "187 O/E - Diastolic BP reading 75.0 \n",
- "188 O/E - weight 62.1 \n",
- "189 O/E - Systolic BP reading 110.0 \n",
- "190 O/E - Diastolic BP reading 70.0 \n",
- "191 O/E - Systolic BP reading 110.0 \n",
- "192 O/E - Diastolic BP reading 50.0 \n",
- "193 O/E - Systolic BP reading 122.0 \n",
- "194 O/E - Diastolic BP reading 77.0 \n",
- "195 O/E - Systolic BP reading 110.0 \n",
- "196 O/E - Diastolic BP reading 70.0 \n",
- "197 O/E - Systolic BP reading 120.0 \n",
- "198 O/E - Diastolic BP reading 80.0 \n",
- "199 O/E - Systolic BP reading 110.0 \n",
- "200 O/E - Diastolic BP reading 70.0 \n",
- "201 O/E - weight 63.0 \n",
- "202 O/E - Systolic BP reading 122.0 \n",
- "203 O/E - Diastolic BP reading 80.0 \n",
- "204 O/E - Systolic BP reading 139.0 \n",
- "205 O/E - Diastolic BP reading 87.0 \n",
- "206 O/E - Systolic BP reading 130.0 \n",
- "207 O/E - Diastolic BP reading 70.0 \n",
- "208 O/E - weight 63.2 \n",
- "209 O/E - Systolic BP reading 131.0 \n",
- "210 O/E - Diastolic BP reading 84.0 \n",
- "211 O/E - Systolic BP reading 110.0 \n",
- "212 O/E - Diastolic BP reading 70.0 \n",
- "213 Serum cholesterol level 5.6 \n",
- "214 Serum high density lipoprotein cholesterol level 2.0 \n",
- "215 Serum low density lipoprotein cholesterol level 3.1 \n",
- "216 Serum triglycerides level 1.1 \n",
- " age_at_recruitment_f21022_0_0 rheumatoid_factor_f30820_0_0\n",
- "1 42 NA \n",
- "2 42 NA \n",
- "3 42 NA \n",
- "4 42 NA \n",
- "5 42 NA \n",
- "6 42 NA \n",
- "7 42 NA \n",
- "8 42 NA \n",
- "9 42 NA \n",
- "10 42 NA \n",
- "11 49 NA \n",
- "12 49 NA \n",
- "13 49 NA \n",
- "14 49 NA \n",
- "15 49 NA \n",
- "16 49 NA \n",
- "17 49 NA \n",
- "18 49 NA \n",
- "19 49 NA \n",
- "20 49 NA \n",
- "21 49 NA \n",
- "22 49 NA \n",
- "23 49 NA \n",
- "24 49 NA \n",
- "25 49 NA \n",
- "26 49 NA \n",
- "27 49 NA \n",
- "28 49 NA \n",
- "29 49 NA \n",
- "30 49 NA \n",
- " \n",
- "187 53 NA \n",
- "188 53 NA \n",
- "189 53 NA \n",
- "190 53 NA \n",
- "191 53 NA \n",
- "192 53 NA \n",
- "193 53 NA \n",
- "194 53 NA \n",
- "195 53 NA \n",
- "196 53 NA \n",
- "197 53 NA \n",
- "198 53 NA \n",
- "199 53 NA \n",
- "200 53 NA \n",
- "201 53 NA \n",
- "202 53 NA \n",
- "203 53 NA \n",
- "204 53 NA \n",
- "205 53 NA \n",
- "206 53 NA \n",
- "207 53 NA \n",
- "208 53 NA \n",
- "209 53 NA \n",
- "210 53 NA \n",
- "211 53 NA \n",
- "212 53 NA \n",
- "213 53 NA \n",
- "214 53 NA \n",
- "215 53 NA \n",
- "216 53 NA \n",
- " shbg_f30830_0_0 testosterone_f30850_0_0 total_bilirubin_f30840_0_0\n",
- "1 NA 11.148 8.89 \n",
- "2 NA 11.148 8.89 \n",
- "3 NA 11.148 8.89 \n",
- "4 NA 11.148 8.89 \n",
- "5 NA 11.148 8.89 \n",
- "6 NA 11.148 8.89 \n",
- "7 NA 11.148 8.89 \n",
- "8 NA 11.148 8.89 \n",
- "9 NA 11.148 8.89 \n",
- "10 NA 11.148 8.89 \n",
- "11 51 10.978 11.12 \n",
- "12 51 10.978 11.12 \n",
- "13 51 10.978 11.12 \n",
- "14 51 10.978 11.12 \n",
- "15 51 10.978 11.12 \n",
- "16 51 10.978 11.12 \n",
- "17 51 10.978 11.12 \n",
- "18 51 10.978 11.12 \n",
- "19 51 10.978 11.12 \n",
- "20 51 10.978 11.12 \n",
- "21 51 10.978 11.12 \n",
- "22 51 10.978 11.12 \n",
- "23 51 10.978 11.12 \n",
- "24 51 10.978 11.12 \n",
- "25 51 10.978 11.12 \n",
- "26 51 10.978 11.12 \n",
- "27 51 10.978 11.12 \n",
- "28 51 10.978 11.12 \n",
- "29 51 10.978 11.12 \n",
- "30 51 10.978 11.12 \n",
- " \n",
- "187 NA 1.113 7.19 \n",
- "188 NA 0.963 17.84 \n",
- "189 NA 0.963 17.84 \n",
- "190 NA 0.963 17.84 \n",
- "191 NA 0.963 17.84 \n",
- "192 NA 0.963 17.84 \n",
- "193 NA 0.963 17.84 \n",
- "194 NA 0.963 17.84 \n",
- "195 NA 0.963 17.84 \n",
- "196 NA 0.963 17.84 \n",
- "197 NA 0.963 17.84 \n",
- "198 NA 0.963 17.84 \n",
- "199 NA 0.963 17.84 \n",
- "200 NA 0.963 17.84 \n",
- "201 NA 0.963 17.84 \n",
- "202 NA 0.963 17.84 \n",
- "203 NA 0.963 17.84 \n",
- "204 NA 0.963 17.84 \n",
- "205 NA 0.963 17.84 \n",
- "206 NA 0.963 17.84 \n",
- "207 NA 0.963 17.84 \n",
- "208 NA 0.963 17.84 \n",
- "209 NA 0.963 17.84 \n",
- "210 NA 0.963 17.84 \n",
- "211 NA 0.963 17.84 \n",
- "212 NA 0.963 17.84 \n",
- "213 NA 0.963 17.84 \n",
- "214 NA 0.963 17.84 \n",
- "215 NA 0.963 17.84 \n",
- "216 NA 0.963 17.84 \n",
- " total_protein_f30860_0_0 triglycerides_f30870_0_0 urate_f30880_0_0\n",
- "1 NA 1.332 276.2 \n",
- "2 NA 1.332 276.2 \n",
- "3 NA 1.332 276.2 \n",
- "4 NA 1.332 276.2 \n",
- "5 NA 1.332 276.2 \n",
- "6 NA 1.332 276.2 \n",
- "7 NA 1.332 276.2 \n",
- "8 NA 1.332 276.2 \n",
- "9 NA 1.332 276.2 \n",
- "10 NA 1.332 276.2 \n",
- "11 79.19 2.321 425.1 \n",
- "12 79.19 2.321 425.1 \n",
- "13 79.19 2.321 425.1 \n",
- "14 79.19 2.321 425.1 \n",
- "15 79.19 2.321 425.1 \n",
- "16 79.19 2.321 425.1 \n",
- "17 79.19 2.321 425.1 \n",
- "18 79.19 2.321 425.1 \n",
- "19 79.19 2.321 425.1 \n",
- "20 79.19 2.321 425.1 \n",
- "21 79.19 2.321 425.1 \n",
- "22 79.19 2.321 425.1 \n",
- "23 79.19 2.321 425.1 \n",
- "24 79.19 2.321 425.1 \n",
- "25 79.19 2.321 425.1 \n",
- "26 79.19 2.321 425.1 \n",
- "27 79.19 2.321 425.1 \n",
- "28 79.19 2.321 425.1 \n",
- "29 79.19 2.321 425.1 \n",
- "30 79.19 2.321 425.1 \n",
- " \n",
- "187 NA 2.563 320.7 \n",
- "188 NA 0.864 213.6 \n",
- "189 NA 0.864 213.6 \n",
- "190 NA 0.864 213.6 \n",
- "191 NA 0.864 213.6 \n",
- "192 NA 0.864 213.6 \n",
- "193 NA 0.864 213.6 \n",
- "194 NA 0.864 213.6 \n",
- "195 NA 0.864 213.6 \n",
- "196 NA 0.864 213.6 \n",
- "197 NA 0.864 213.6 \n",
- "198 NA 0.864 213.6 \n",
- "199 NA 0.864 213.6 \n",
- "200 NA 0.864 213.6 \n",
- "201 NA 0.864 213.6 \n",
- "202 NA 0.864 213.6 \n",
- "203 NA 0.864 213.6 \n",
- "204 NA 0.864 213.6 \n",
- "205 NA 0.864 213.6 \n",
- "206 NA 0.864 213.6 \n",
- "207 NA 0.864 213.6 \n",
- "208 NA 0.864 213.6 \n",
- "209 NA 0.864 213.6 \n",
- "210 NA 0.864 213.6 \n",
- "211 NA 0.864 213.6 \n",
- "212 NA 0.864 213.6 \n",
- "213 NA 0.864 213.6 \n",
- "214 NA 0.864 213.6 \n",
- "215 NA 0.864 213.6 \n",
- "216 NA 0.864 213.6 \n",
- " urea_f30670_0_0 vitamin_d_f30890_0_0 time \n",
- "1 3.72 43.2 42.24504\n",
- "2 3.72 43.2 42.30253\n",
- "3 3.72 43.2 47.98357\n",
- "4 3.72 43.2 47.98357\n",
- "5 3.72 43.2 47.98357\n",
- "6 3.72 43.2 47.98357\n",
- "7 3.72 43.2 47.98357\n",
- "8 3.72 43.2 47.98357\n",
- "9 3.72 43.2 47.98357\n",
- "10 3.72 43.2 47.98357\n",
- "11 4.52 81.4 45.44285\n",
- "12 4.52 81.4 45.44285\n",
- "13 4.52 81.4 48.18344\n",
- "14 4.52 81.4 48.18344\n",
- "15 4.52 81.4 52.10678\n",
- "16 4.52 81.4 52.10678\n",
- "17 4.52 81.4 52.10678\n",
- "18 4.52 81.4 52.10678\n",
- "19 4.52 81.4 54.25051\n",
- "20 4.52 81.4 54.25051\n",
- "21 4.52 81.4 54.25051\n",
- "22 4.52 81.4 54.25051\n",
- "23 4.52 81.4 54.37098\n",
- "24 4.52 81.4 54.40383\n",
- "25 4.52 81.4 54.40383\n",
- "26 4.52 81.4 54.40383\n",
- "27 4.52 81.4 54.40383\n",
- "28 4.52 81.4 54.49692\n",
- "29 4.52 81.4 54.49692\n",
- "30 4.52 81.4 54.49692\n",
- " \n",
- "187 4.10 50.3 60.24641\n",
- "188 2.61 35.2 43.46886\n",
- "189 2.61 35.2 43.46886\n",
- "190 2.61 35.2 43.46886\n",
- "191 2.61 35.2 48.76112\n",
- "192 2.61 35.2 48.76112\n",
- "193 2.61 35.2 49.35524\n",
- "194 2.61 35.2 49.35524\n",
- "195 2.61 35.2 50.15743\n",
- "196 2.61 35.2 50.15743\n",
- "197 2.61 35.2 50.38741\n",
- "198 2.61 35.2 50.38741\n",
- "199 2.61 35.2 50.94045\n",
- "200 2.61 35.2 50.94045\n",
- "201 2.61 35.2 51.74812\n",
- "202 2.61 35.2 51.74812\n",
- "203 2.61 35.2 51.74812\n",
- "204 2.61 35.2 58.15195\n",
- "205 2.61 35.2 58.15195\n",
- "206 2.61 35.2 60.44353\n",
- "207 2.61 35.2 60.44353\n",
- "208 2.61 35.2 60.49008\n",
- "209 2.61 35.2 60.49008\n",
- "210 2.61 35.2 60.49008\n",
- "211 2.61 35.2 60.83504\n",
- "212 2.61 35.2 60.83504\n",
- "213 2.61 35.2 60.84600\n",
- "214 2.61 35.2 60.84600\n",
- "215 2.61 35.2 60.84600\n",
- "216 2.61 35.2 60.84600"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "options(repr.plot.width=20, repr.plot.height=25)\n",
- "library(lubridate)\n",
- "df = gp_measurements %>% filter(eid %in% eids) %>% filter(name %in% c(\"O/E - Systolic BP reading\", \"O/E - Diastolic BP reading\", \n",
- " \"Serum creatinine level\", \"Haemoglobin estimation\",\n",
- " \"GFR (glomerular filtration rate) calculated by abbreviated Modification of Diet in Renal Disease Study Group calculation\", \"Serum glucose level\", \t\n",
- " \"Total white cell count\", \"O/E - weight\", \"Serum cholesterol level\", \n",
- " \"Serum high density lipoprotein cholesterol level\", \"Serum low density lipoprotein cholesterol level\",\n",
- " \"Serum triglycerides level\")) %>%\n",
- " filter(as.numeric(value1)>0) %>% \n",
- " filter(!((name==\"Haemoglobin estimation\")&(value> 50))) %>%\n",
- " filter(!((name==\"O/E - Diastolic BP reading\")&(value> 400))) %>%\n",
- " filter(!((name==\"O/E - Systolic BP reading\")&(value> 400))) %>%\n",
- " filter(!((name==\"O/E - weight\")&(value> 300))) %>%\n",
- " filter(!((name==\"Serum cholesterol level\")&(value> 20))) %>%\n",
- " filter(!((name==\"Serum creatinine level\")&(value> 1000))) %>%\n",
- " filter(!((name==\"Serum high density lipoprotein cholesterol level\")&(value> 100))) %>%\n",
- " #filter(!((name==\"Finding of body mass index\")&(value> 50))) %>%\n",
- " left_join(data, on=\"eid\") %>% mutate(time = time_length(difftime(date, birth_date), \"years\"))%>% filter(time>0)\n",
- "\n",
- "ggplot(df, aes(x=time, y=as.numeric(value)), color=as.factor(name))+geom_point(alpha=0.1)+\n",
- " facet_grid(eid~name, scales=\"free_y\", labeller=label_wrap_gen(width = 10, multi_line = TRUE))+\n",
- " geom_smooth(method=\"lm\")#+\n",
- " #geom_vline(aes(xintercept=age_at_recruitment_f21022_0_0))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A tibble: 16306 × 2\n",
- "\n",
- "\tname | n |
\n",
- "\t<chr> | <int> |
\n",
- "\n",
- "\n",
- "\tO/E - Diastolic BP reading | 4142442 |
\n",
- "\tO/E - Systolic BP reading | 3963088 |
\n",
- "\tSerum creatinine level | 1670214 |
\n",
- "\tHaemoglobin estimation | 1662102 |
\n",
- "\tTotal white cell count | 1630899 |
\n",
- "\tO/E - weight | 1588105 |
\n",
- "\tSerum sodium level | 1587227 |
\n",
- "\tSerum potassium level | 1582109 |
\n",
- "\tFinding of body mass index | 1371580 |
\n",
- "\tSerum alanine aminotransferase level | 1364116 |
\n",
- "\tSerum urea level | 1349233 |
\n",
- "\tSerum albumin level | 1344654 |
\n",
- "\tSerum alkaline phosphatase level | 1314225 |
\n",
- "\tPlatelet count | 1264036 |
\n",
- "\tSerum cholesterol level | 1248251 |
\n",
- "\tHaematocrit - packed cell volume | 1247902 |
\n",
- "\tMCV - Mean corpuscular volume | 1246810 |
\n",
- "\tErythrocyte count | 1238243 |
\n",
- "\tMCH - Mean corpuscular haemoglobin | 1224630 |
\n",
- "\tGFR (glomerular filtration rate) calculated by abbreviated Modification of Diet in Renal Disease Study Group calculation | 1212917 |
\n",
- "\tGranulocyte count | 1211942 |
\n",
- "\tLymphocyte count | 1206974 |
\n",
- "\tMonocyte count | 1205707 |
\n",
- "\tEosinophil count | 1204617 |
\n",
- "\tBasophil count | 1165935 |
\n",
- "\tSerum high density lipoprotein cholesterol level | 1059995 |
\n",
- "\tSerum triglycerides level | 1033506 |
\n",
- "\tO/E - height | 955235 |
\n",
- "\tReview of medication | 955104 |
\n",
- "\tSerum TSH (thyroid stimulating hormone) level | 862321 |
\n",
- "\t⋮ | ⋮ |
\n",
- "\tX-ray of tibia/fibula abnormal | 1 |
\n",
- "\tX-ray of tibia/fibula normal | 1 |
\n",
- "\tX-ray pelvimetry abnormal | 1 |
\n",
- "\tX-ray phalanges of fingers abnormal | 1 |
\n",
- "\tXiphoid cartilage sprain | 1 |
\n",
- "\tXylose absorption test | 1 |
\n",
- "\tZenker's diverticulum | 1 |
\n",
- "\tZygomatic complex of bones | 1 |
\n",
- "\t[D]Abnormal reflex, unspecified | 1 |
\n",
- "\t[D]Anorexia | 1 |
\n",
- "\t[D]Bony lytic lesions on X-ray | 1 |
\n",
- "\t[D]Local superficial swelling, mass or lump | 1 |
\n",
- "\t[D]Lump on shin | 1 |
\n",
- "\t[D]Other abdominal or pelvic symptom | 1 |
\n",
- "\t[D]Swelling, mass and lump of chest | 1 |
\n",
- "\t[M]Tubular adenoma or adenocarcinoma NOS | 1 |
\n",
- "\t[SO]Skin of umbilicus | 1 |
\n",
- "\t[V]Assessment for procedure | 1 |
\n",
- "\t[V]Bone marrow donor | 1 |
\n",
- "\t[V]Examination of ears and hearing | 1 |
\n",
- "\t[V]Fitting or adjustment of hearing aid | 1 |
\n",
- "\t[V]Kidney donor | 1 |
\n",
- "\t[V]Parent - child conflict | 1 |
\n",
- "\t[V]Personal history of malignant neoplasm of male genital organ | 1 |
\n",
- "\t[V]Plastic surgery used in aftercare | 1 |
\n",
- "\t[X]Otorhinolaryngological drugs and preparations causing adverse effects in therapeutic use | 1 |
\n",
- "\t[X]Schizophrenia, schizotypal and delusional disorders | 1 |
\n",
- "\tcups/day | 1 |
\n",
- "\tvon Jaksch's anemia | 1 |
\n",
- "\tvon Willebrand disorder | 1 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A tibble: 16306 × 2\n",
- "\\begin{tabular}{ll}\n",
- " name & n\\\\\n",
- " & \\\\\n",
- "\\hline\n",
- "\t O/E - Diastolic BP reading & 4142442\\\\\n",
- "\t O/E - Systolic BP reading & 3963088\\\\\n",
- "\t Serum creatinine level & 1670214\\\\\n",
- "\t Haemoglobin estimation & 1662102\\\\\n",
- "\t Total white cell count & 1630899\\\\\n",
- "\t O/E - weight & 1588105\\\\\n",
- "\t Serum sodium level & 1587227\\\\\n",
- "\t Serum potassium level & 1582109\\\\\n",
- "\t Finding of body mass index & 1371580\\\\\n",
- "\t Serum alanine aminotransferase level & 1364116\\\\\n",
- "\t Serum urea level & 1349233\\\\\n",
- "\t Serum albumin level & 1344654\\\\\n",
- "\t Serum alkaline phosphatase level & 1314225\\\\\n",
- "\t Platelet count & 1264036\\\\\n",
- "\t Serum cholesterol level & 1248251\\\\\n",
- "\t Haematocrit - packed cell volume & 1247902\\\\\n",
- "\t MCV - Mean corpuscular volume & 1246810\\\\\n",
- "\t Erythrocyte count & 1238243\\\\\n",
- "\t MCH - Mean corpuscular haemoglobin & 1224630\\\\\n",
- "\t GFR (glomerular filtration rate) calculated by abbreviated Modification of Diet in Renal Disease Study Group calculation & 1212917\\\\\n",
- "\t Granulocyte count & 1211942\\\\\n",
- "\t Lymphocyte count & 1206974\\\\\n",
- "\t Monocyte count & 1205707\\\\\n",
- "\t Eosinophil count & 1204617\\\\\n",
- "\t Basophil count & 1165935\\\\\n",
- "\t Serum high density lipoprotein cholesterol level & 1059995\\\\\n",
- "\t Serum triglycerides level & 1033506\\\\\n",
- "\t O/E - height & 955235\\\\\n",
- "\t Review of medication & 955104\\\\\n",
- "\t Serum TSH (thyroid stimulating hormone) level & 862321\\\\\n",
- "\t ⋮ & ⋮\\\\\n",
- "\t X-ray of tibia/fibula abnormal & 1\\\\\n",
- "\t X-ray of tibia/fibula normal & 1\\\\\n",
- "\t X-ray pelvimetry abnormal & 1\\\\\n",
- "\t X-ray phalanges of fingers abnormal & 1\\\\\n",
- "\t Xiphoid cartilage sprain & 1\\\\\n",
- "\t Xylose absorption test & 1\\\\\n",
- "\t Zenker's diverticulum & 1\\\\\n",
- "\t Zygomatic complex of bones & 1\\\\\n",
- "\t {[}D{]}Abnormal reflex, unspecified & 1\\\\\n",
- "\t {[}D{]}Anorexia & 1\\\\\n",
- "\t {[}D{]}Bony lytic lesions on X-ray & 1\\\\\n",
- "\t {[}D{]}Local superficial swelling, mass or lump & 1\\\\\n",
- "\t {[}D{]}Lump on shin & 1\\\\\n",
- "\t {[}D{]}Other abdominal or pelvic symptom & 1\\\\\n",
- "\t {[}D{]}Swelling, mass and lump of chest & 1\\\\\n",
- "\t {[}M{]}Tubular adenoma or adenocarcinoma NOS & 1\\\\\n",
- "\t {[}SO{]}Skin of umbilicus & 1\\\\\n",
- "\t {[}V{]}Assessment for procedure & 1\\\\\n",
- "\t {[}V{]}Bone marrow donor & 1\\\\\n",
- "\t {[}V{]}Examination of ears and hearing & 1\\\\\n",
- "\t {[}V{]}Fitting or adjustment of hearing aid & 1\\\\\n",
- "\t {[}V{]}Kidney donor & 1\\\\\n",
- "\t {[}V{]}Parent - child conflict & 1\\\\\n",
- "\t {[}V{]}Personal history of malignant neoplasm of male genital organ & 1\\\\\n",
- "\t {[}V{]}Plastic surgery used in aftercare & 1\\\\\n",
- "\t {[}X{]}Otorhinolaryngological drugs and preparations causing adverse effects in therapeutic use & 1\\\\\n",
- "\t {[}X{]}Schizophrenia, schizotypal and delusional disorders & 1\\\\\n",
- "\t cups/day & 1\\\\\n",
- "\t von Jaksch's anemia & 1\\\\\n",
- "\t von Willebrand disorder & 1\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A tibble: 16306 × 2\n",
- "\n",
- "| name <chr> | n <int> |\n",
- "|---|---|\n",
- "| O/E - Diastolic BP reading | 4142442 |\n",
- "| O/E - Systolic BP reading | 3963088 |\n",
- "| Serum creatinine level | 1670214 |\n",
- "| Haemoglobin estimation | 1662102 |\n",
- "| Total white cell count | 1630899 |\n",
- "| O/E - weight | 1588105 |\n",
- "| Serum sodium level | 1587227 |\n",
- "| Serum potassium level | 1582109 |\n",
- "| Finding of body mass index | 1371580 |\n",
- "| Serum alanine aminotransferase level | 1364116 |\n",
- "| Serum urea level | 1349233 |\n",
- "| Serum albumin level | 1344654 |\n",
- "| Serum alkaline phosphatase level | 1314225 |\n",
- "| Platelet count | 1264036 |\n",
- "| Serum cholesterol level | 1248251 |\n",
- "| Haematocrit - packed cell volume | 1247902 |\n",
- "| MCV - Mean corpuscular volume | 1246810 |\n",
- "| Erythrocyte count | 1238243 |\n",
- "| MCH - Mean corpuscular haemoglobin | 1224630 |\n",
- "| GFR (glomerular filtration rate) calculated by abbreviated Modification of Diet in Renal Disease Study Group calculation | 1212917 |\n",
- "| Granulocyte count | 1211942 |\n",
- "| Lymphocyte count | 1206974 |\n",
- "| Monocyte count | 1205707 |\n",
- "| Eosinophil count | 1204617 |\n",
- "| Basophil count | 1165935 |\n",
- "| Serum high density lipoprotein cholesterol level | 1059995 |\n",
- "| Serum triglycerides level | 1033506 |\n",
- "| O/E - height | 955235 |\n",
- "| Review of medication | 955104 |\n",
- "| Serum TSH (thyroid stimulating hormone) level | 862321 |\n",
- "| ⋮ | ⋮ |\n",
- "| X-ray of tibia/fibula abnormal | 1 |\n",
- "| X-ray of tibia/fibula normal | 1 |\n",
- "| X-ray pelvimetry abnormal | 1 |\n",
- "| X-ray phalanges of fingers abnormal | 1 |\n",
- "| Xiphoid cartilage sprain | 1 |\n",
- "| Xylose absorption test | 1 |\n",
- "| Zenker's diverticulum | 1 |\n",
- "| Zygomatic complex of bones | 1 |\n",
- "| [D]Abnormal reflex, unspecified | 1 |\n",
- "| [D]Anorexia | 1 |\n",
- "| [D]Bony lytic lesions on X-ray | 1 |\n",
- "| [D]Local superficial swelling, mass or lump | 1 |\n",
- "| [D]Lump on shin | 1 |\n",
- "| [D]Other abdominal or pelvic symptom | 1 |\n",
- "| [D]Swelling, mass and lump of chest | 1 |\n",
- "| [M]Tubular adenoma or adenocarcinoma NOS | 1 |\n",
- "| [SO]Skin of umbilicus | 1 |\n",
- "| [V]Assessment for procedure | 1 |\n",
- "| [V]Bone marrow donor | 1 |\n",
- "| [V]Examination of ears and hearing | 1 |\n",
- "| [V]Fitting or adjustment of hearing aid | 1 |\n",
- "| [V]Kidney donor | 1 |\n",
- "| [V]Parent - child conflict | 1 |\n",
- "| [V]Personal history of malignant neoplasm of male genital organ | 1 |\n",
- "| [V]Plastic surgery used in aftercare | 1 |\n",
- "| [X]Otorhinolaryngological drugs and preparations causing adverse effects in therapeutic use | 1 |\n",
- "| [X]Schizophrenia, schizotypal and delusional disorders | 1 |\n",
- "| cups/day | 1 |\n",
- "| von Jaksch's anemia | 1 |\n",
- "| von Willebrand disorder | 1 |\n",
- "\n"
- ],
- "text/plain": [
- " name \n",
- "1 O/E - Diastolic BP reading \n",
- "2 O/E - Systolic BP reading \n",
- "3 Serum creatinine level \n",
- "4 Haemoglobin estimation \n",
- "5 Total white cell count \n",
- "6 O/E - weight \n",
- "7 Serum sodium level \n",
- "8 Serum potassium level \n",
- "9 Finding of body mass index \n",
- "10 Serum alanine aminotransferase level \n",
- "11 Serum urea level \n",
- "12 Serum albumin level \n",
- "13 Serum alkaline phosphatase level \n",
- "14 Platelet count \n",
- "15 Serum cholesterol level \n",
- "16 Haematocrit - packed cell volume \n",
- "17 MCV - Mean corpuscular volume \n",
- "18 Erythrocyte count \n",
- "19 MCH - Mean corpuscular haemoglobin \n",
- "20 GFR (glomerular filtration rate) calculated by abbreviated Modification of Diet in Renal Disease Study Group calculation\n",
- "21 Granulocyte count \n",
- "22 Lymphocyte count \n",
- "23 Monocyte count \n",
- "24 Eosinophil count \n",
- "25 Basophil count \n",
- "26 Serum high density lipoprotein cholesterol level \n",
- "27 Serum triglycerides level \n",
- "28 O/E - height \n",
- "29 Review of medication \n",
- "30 Serum TSH (thyroid stimulating hormone) level \n",
- " \n",
- "16277 X-ray of tibia/fibula abnormal \n",
- "16278 X-ray of tibia/fibula normal \n",
- "16279 X-ray pelvimetry abnormal \n",
- "16280 X-ray phalanges of fingers abnormal \n",
- "16281 Xiphoid cartilage sprain \n",
- "16282 Xylose absorption test \n",
- "16283 Zenker's diverticulum \n",
- "16284 Zygomatic complex of bones \n",
- "16285 [D]Abnormal reflex, unspecified \n",
- "16286 [D]Anorexia \n",
- "16287 [D]Bony lytic lesions on X-ray \n",
- "16288 [D]Local superficial swelling, mass or lump \n",
- "16289 [D]Lump on shin \n",
- "16290 [D]Other abdominal or pelvic symptom \n",
- "16291 [D]Swelling, mass and lump of chest \n",
- "16292 [M]Tubular adenoma or adenocarcinoma NOS \n",
- "16293 [SO]Skin of umbilicus \n",
- "16294 [V]Assessment for procedure \n",
- "16295 [V]Bone marrow donor \n",
- "16296 [V]Examination of ears and hearing \n",
- "16297 [V]Fitting or adjustment of hearing aid \n",
- "16298 [V]Kidney donor \n",
- "16299 [V]Parent - child conflict \n",
- "16300 [V]Personal history of malignant neoplasm of male genital organ \n",
- "16301 [V]Plastic surgery used in aftercare \n",
- "16302 [X]Otorhinolaryngological drugs and preparations causing adverse effects in therapeutic use \n",
- "16303 [X]Schizophrenia, schizotypal and delusional disorders \n",
- "16304 cups/day \n",
- "16305 von Jaksch's anemia \n",
- "16306 von Willebrand disorder \n",
- " n \n",
- "1 4142442\n",
- "2 3963088\n",
- "3 1670214\n",
- "4 1662102\n",
- "5 1630899\n",
- "6 1588105\n",
- "7 1587227\n",
- "8 1582109\n",
- "9 1371580\n",
- "10 1364116\n",
- "11 1349233\n",
- "12 1344654\n",
- "13 1314225\n",
- "14 1264036\n",
- "15 1248251\n",
- "16 1247902\n",
- "17 1246810\n",
- "18 1238243\n",
- "19 1224630\n",
- "20 1212917\n",
- "21 1211942\n",
- "22 1206974\n",
- "23 1205707\n",
- "24 1204617\n",
- "25 1165935\n",
- "26 1059995\n",
- "27 1033506\n",
- "28 955235\n",
- "29 955104\n",
- "30 862321\n",
- " \n",
- "16277 1 \n",
- "16278 1 \n",
- "16279 1 \n",
- "16280 1 \n",
- "16281 1 \n",
- "16282 1 \n",
- "16283 1 \n",
- "16284 1 \n",
- "16285 1 \n",
- "16286 1 \n",
- "16287 1 \n",
- "16288 1 \n",
- "16289 1 \n",
- "16290 1 \n",
- "16291 1 \n",
- "16292 1 \n",
- "16293 1 \n",
- "16294 1 \n",
- "16295 1 \n",
- "16296 1 \n",
- "16297 1 \n",
- "16298 1 \n",
- "16299 1 \n",
- "16300 1 \n",
- "16301 1 \n",
- "16302 1 \n",
- "16303 1 \n",
- "16304 1 \n",
- "16305 1 \n",
- "16306 1 "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "gp_measurements %>% count(name, sort=TRUE)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A tibble: 3729 × 17\n",
- "\n",
- "\teid | date | code | value1 | value2 | value3 | meaning | name | value | age_at_recruitment_f21022_0_0 | sex_f31_0_0 | ethnic_background_f21000_0_0 | townsend_deprivation_index_at_recruitment_f189_0_0 | date_of_attending_assessment_centre_f53_0_0 | uk_biobank_assessment_centre_f54_0_0 | birth_date | time |
\n",
- "\t<int> | <date> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <dbl> | <dbl> | <fct> | <fct> | <dbl> | <date> | <chr> | <date> | <dbl> |
\n",
- "\n",
- "\n",
- "\t1005194 | 1993-06-30 | 246.. | 120.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 120 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 48.68446 |
\n",
- "\t1005194 | 1993-06-30 | 246.. | 120.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 48.68446 |
\n",
- "\t1005194 | 1997-07-14 | 246.. | 130.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 130 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 52.72279 |
\n",
- "\t1005194 | 1997-07-14 | 246.. | 130.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 52.72279 |
\n",
- "\t1005194 | 1999-01-21 | 246.. | 142.000 | 94.000 | NA | 163030003 | O/E - Systolic BP reading | 142 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.24504 |
\n",
- "\t1005194 | 1999-01-21 | 246.. | 142.000 | 94.000 | NA | 163031004 | O/E - Diastolic BP reading | 94 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.24504 |
\n",
- "\t1005194 | 1999-01-27 | 246.. | 142.000 | 92.000 | NA | 163030003 | O/E - Systolic BP reading | 142 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.26146 |
\n",
- "\t1005194 | 1999-01-27 | 246.. | 142.000 | 92.000 | NA | 163031004 | O/E - Diastolic BP reading | 92 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.26146 |
\n",
- "\t1005194 | 1999-10-06 | 246.. | 140.000 | 86.000 | NA | 163030003 | O/E - Systolic BP reading | 140 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.95140 |
\n",
- "\t1005194 | 1999-10-06 | 246.. | 140.000 | 86.000 | NA | 163031004 | O/E - Diastolic BP reading | 86 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.95140 |
\n",
- "\t1005194 | 1999-12-08 | 246.. | 148.000 | 82.000 | NA | 163030003 | O/E - Systolic BP reading | 148 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.12389 |
\n",
- "\t1005194 | 1999-12-08 | 246.. | 148.000 | 82.000 | NA | 163031004 | O/E - Diastolic BP reading | 82 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.12389 |
\n",
- "\t1005194 | 2000-06-19 | 246.. | 120.000 | 84.000 | NA | 163030003 | O/E - Systolic BP reading | 120 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.65503 |
\n",
- "\t1005194 | 2000-06-19 | 246.. | 120.000 | 84.000 | NA | 163031004 | O/E - Diastolic BP reading | 84 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.65503 |
\n",
- "\t1005194 | 2001-01-05 | 246.. | 150.000 | 90.000 | NA | 163030003 | O/E - Systolic BP reading | 150 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.20260 |
\n",
- "\t1005194 | 2001-01-05 | 246.. | 150.000 | 90.000 | NA | 163031004 | O/E - Diastolic BP reading | 90 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.20260 |
\n",
- "\t1005194 | 2001-02-02 | 246.. | 140.000 | 90.000 | NA | 163030003 | O/E - Systolic BP reading | 140 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.27926 |
\n",
- "\t1005194 | 2001-02-02 | 246.. | 140.000 | 90.000 | NA | 163031004 | O/E - Diastolic BP reading | 90 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.27926 |
\n",
- "\t1005194 | 2001-07-05 | 246.. | 130.000 | 74.000 | NA | 163030003 | O/E - Systolic BP reading | 130 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.69815 |
\n",
- "\t1005194 | 2001-07-05 | 246.. | 130.000 | 74.000 | NA | 163031004 | O/E - Diastolic BP reading | 74 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.69815 |
\n",
- "\t1005194 | 2002-05-01 | 246.. | 144.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 144 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 57.51951 |
\n",
- "\t1005194 | 2002-05-01 | 246.. | 144.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 57.51951 |
\n",
- "\t1005194 | 2003-03-03 | 246.. | 145.000 | 81.000 | NA | 163030003 | O/E - Systolic BP reading | 145 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.35729 |
\n",
- "\t1005194 | 2003-03-03 | 246.. | 145.000 | 81.000 | NA | 163031004 | O/E - Diastolic BP reading | 81 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.35729 |
\n",
- "\t1005194 | 2003-03-18 | 246.. | 137.000 | 67.000 | NA | 163030003 | O/E - Systolic BP reading | 137 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |
\n",
- "\t1005194 | 2003-03-18 | 246.. | 137.000 | 67.000 | NA | 163031004 | O/E - Diastolic BP reading | 67 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |
\n",
- "\t1005194 | 2003-03-18 | 246.. | 146.000 | 92.000 | NA | 163030003 | O/E - Systolic BP reading | 146 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |
\n",
- "\t1005194 | 2003-03-18 | 246.. | 146.000 | 92.000 | NA | 163031004 | O/E - Diastolic BP reading | 92 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |
\n",
- "\t1005194 | 2003-03-19 | 246.. | 145.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 145 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.40110 |
\n",
- "\t1005194 | 2003-03-19 | 246.. | 145.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.40110 |
\n",
- "\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
- "\t5996198 | 2005-09-28 | 2469. | 120.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 120 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 37.58795 |
\n",
- "\t5996198 | 2005-09-28 | 246A. | 84.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 84 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 37.58795 |
\n",
- "\t5996198 | 2006-03-10 | 2469. | 129.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 129 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 38.03422 |
\n",
- "\t5996198 | 2006-03-10 | 246A. | 89.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 89 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 38.03422 |
\n",
- "\t5996198 | 2007-09-19 | 2469. | 126.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 126 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 39.56194 |
\n",
- "\t5996198 | 2007-09-19 | 246A. | 80.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 80 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 39.56194 |
\n",
- "\t5996198 | 2012-08-09 | 2469. | 132.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 132 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.45175 |
\n",
- "\t5996198 | 2012-08-09 | 246A. | 86.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 86 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.45175 |
\n",
- "\t5996198 | 2012-11-07 | 2469. | 140.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 140 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.69815 |
\n",
- "\t5996198 | 2012-11-07 | 246A. | 68.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 68 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.69815 |
\n",
- "\t5996198 | 2013-03-06 | 2469. | 139.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 139 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.02396 |
\n",
- "\t5996198 | 2013-03-06 | 246A. | 88.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 88 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.02396 |
\n",
- "\t5996198 | 2014-01-17 | 2469. | 148.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 148 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.89185 |
\n",
- "\t5996198 | 2014-01-17 | 246A. | 72.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 72 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.89185 |
\n",
- "\t5996198 | 2014-02-03 | 2469. | 145.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 145 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.93840 |
\n",
- "\t5996198 | 2014-02-03 | 246A. | 98.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 98 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.93840 |
\n",
- "\t5996198 | 2014-02-07 | 2469. | 137.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 137 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.94935 |
\n",
- "\t5996198 | 2014-02-07 | 246A. | 85.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 85 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.94935 |
\n",
- "\t5996198 | 2014-03-18 | 2469. | 145.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 145 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.05613 |
\n",
- "\t5996198 | 2014-03-18 | 246A. | 98.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 98 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.05613 |
\n",
- "\t5996198 | 2014-04-11 | 2469. | 130.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 130 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.12183 |
\n",
- "\t5996198 | 2014-04-11 | 246A. | 60.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 60 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.12183 |
\n",
- "\t5996198 | 2014-05-14 | 2469. | 132.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 132 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.21218 |
\n",
- "\t5996198 | 2014-05-14 | 246A. | 84.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 84 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.21218 |
\n",
- "\t5996198 | 2015-09-22 | 2469. | 124.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 124 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.57016 |
\n",
- "\t5996198 | 2015-09-22 | 246A. | 88.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 88 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.57016 |
\n",
- "\t5996198 | 2015-10-01 | 2469. | 133.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 133 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.59480 |
\n",
- "\t5996198 | 2015-10-01 | 246A. | 95.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 95 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.59480 |
\n",
- "\t5996198 | 2015-11-12 | 2469. | 134.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 134 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.70979 |
\n",
- "\t5996198 | 2015-11-12 | 246A. | 82.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 82 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.70979 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A tibble: 3729 × 17\n",
- "\\begin{tabular}{lllllllllllllllll}\n",
- " eid & date & code & value1 & value2 & value3 & meaning & name & value & age\\_at\\_recruitment\\_f21022\\_0\\_0 & sex\\_f31\\_0\\_0 & ethnic\\_background\\_f21000\\_0\\_0 & townsend\\_deprivation\\_index\\_at\\_recruitment\\_f189\\_0\\_0 & date\\_of\\_attending\\_assessment\\_centre\\_f53\\_0\\_0 & uk\\_biobank\\_assessment\\_centre\\_f54\\_0\\_0 & birth\\_date & time\\\\\n",
- " & & & & & & & & & & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 1005194 & 1993-06-30 & 246.. & 120.000 & 80.000 & NA & 163030003 & O/E - Systolic BP reading & 120 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 48.68446\\\\\n",
- "\t 1005194 & 1993-06-30 & 246.. & 120.000 & 80.000 & NA & 163031004 & O/E - Diastolic BP reading & 80 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 48.68446\\\\\n",
- "\t 1005194 & 1997-07-14 & 246.. & 130.000 & 80.000 & NA & 163030003 & O/E - Systolic BP reading & 130 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 52.72279\\\\\n",
- "\t 1005194 & 1997-07-14 & 246.. & 130.000 & 80.000 & NA & 163031004 & O/E - Diastolic BP reading & 80 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 52.72279\\\\\n",
- "\t 1005194 & 1999-01-21 & 246.. & 142.000 & 94.000 & NA & 163030003 & O/E - Systolic BP reading & 142 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 54.24504\\\\\n",
- "\t 1005194 & 1999-01-21 & 246.. & 142.000 & 94.000 & NA & 163031004 & O/E - Diastolic BP reading & 94 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 54.24504\\\\\n",
- "\t 1005194 & 1999-01-27 & 246.. & 142.000 & 92.000 & NA & 163030003 & O/E - Systolic BP reading & 142 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 54.26146\\\\\n",
- "\t 1005194 & 1999-01-27 & 246.. & 142.000 & 92.000 & NA & 163031004 & O/E - Diastolic BP reading & 92 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 54.26146\\\\\n",
- "\t 1005194 & 1999-10-06 & 246.. & 140.000 & 86.000 & NA & 163030003 & O/E - Systolic BP reading & 140 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 54.95140\\\\\n",
- "\t 1005194 & 1999-10-06 & 246.. & 140.000 & 86.000 & NA & 163031004 & O/E - Diastolic BP reading & 86 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 54.95140\\\\\n",
- "\t 1005194 & 1999-12-08 & 246.. & 148.000 & 82.000 & NA & 163030003 & O/E - Systolic BP reading & 148 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 55.12389\\\\\n",
- "\t 1005194 & 1999-12-08 & 246.. & 148.000 & 82.000 & NA & 163031004 & O/E - Diastolic BP reading & 82 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 55.12389\\\\\n",
- "\t 1005194 & 2000-06-19 & 246.. & 120.000 & 84.000 & NA & 163030003 & O/E - Systolic BP reading & 120 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 55.65503\\\\\n",
- "\t 1005194 & 2000-06-19 & 246.. & 120.000 & 84.000 & NA & 163031004 & O/E - Diastolic BP reading & 84 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 55.65503\\\\\n",
- "\t 1005194 & 2001-01-05 & 246.. & 150.000 & 90.000 & NA & 163030003 & O/E - Systolic BP reading & 150 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 56.20260\\\\\n",
- "\t 1005194 & 2001-01-05 & 246.. & 150.000 & 90.000 & NA & 163031004 & O/E - Diastolic BP reading & 90 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 56.20260\\\\\n",
- "\t 1005194 & 2001-02-02 & 246.. & 140.000 & 90.000 & NA & 163030003 & O/E - Systolic BP reading & 140 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 56.27926\\\\\n",
- "\t 1005194 & 2001-02-02 & 246.. & 140.000 & 90.000 & NA & 163031004 & O/E - Diastolic BP reading & 90 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 56.27926\\\\\n",
- "\t 1005194 & 2001-07-05 & 246.. & 130.000 & 74.000 & NA & 163030003 & O/E - Systolic BP reading & 130 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 56.69815\\\\\n",
- "\t 1005194 & 2001-07-05 & 246.. & 130.000 & 74.000 & NA & 163031004 & O/E - Diastolic BP reading & 74 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 56.69815\\\\\n",
- "\t 1005194 & 2002-05-01 & 246.. & 144.000 & 80.000 & NA & 163030003 & O/E - Systolic BP reading & 144 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 57.51951\\\\\n",
- "\t 1005194 & 2002-05-01 & 246.. & 144.000 & 80.000 & NA & 163031004 & O/E - Diastolic BP reading & 80 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 57.51951\\\\\n",
- "\t 1005194 & 2003-03-03 & 246.. & 145.000 & 81.000 & NA & 163030003 & O/E - Systolic BP reading & 145 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.35729\\\\\n",
- "\t 1005194 & 2003-03-03 & 246.. & 145.000 & 81.000 & NA & 163031004 & O/E - Diastolic BP reading & 81 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.35729\\\\\n",
- "\t 1005194 & 2003-03-18 & 246.. & 137.000 & 67.000 & NA & 163030003 & O/E - Systolic BP reading & 137 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.39836\\\\\n",
- "\t 1005194 & 2003-03-18 & 246.. & 137.000 & 67.000 & NA & 163031004 & O/E - Diastolic BP reading & 67 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.39836\\\\\n",
- "\t 1005194 & 2003-03-18 & 246.. & 146.000 & 92.000 & NA & 163030003 & O/E - Systolic BP reading & 146 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.39836\\\\\n",
- "\t 1005194 & 2003-03-18 & 246.. & 146.000 & 92.000 & NA & 163031004 & O/E - Diastolic BP reading & 92 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.39836\\\\\n",
- "\t 1005194 & 2003-03-19 & 246.. & 145.000 & 80.000 & NA & 163030003 & O/E - Systolic BP reading & 145 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.40110\\\\\n",
- "\t 1005194 & 2003-03-19 & 246.. & 145.000 & 80.000 & NA & 163031004 & O/E - Diastolic BP reading & 80 & 65 & Male & White & 1.80551 & 2009-10-23 & Sheffield & 1944-10-23 & 58.40110\\\\\n",
- "\t ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮\\\\\n",
- "\t 5996198 & 2005-09-28 & 2469. & 120.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 120 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 37.58795\\\\\n",
- "\t 5996198 & 2005-09-28 & 246A. & 84.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 84 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 37.58795\\\\\n",
- "\t 5996198 & 2006-03-10 & 2469. & 129.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 129 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 38.03422\\\\\n",
- "\t 5996198 & 2006-03-10 & 246A. & 89.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 89 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 38.03422\\\\\n",
- "\t 5996198 & 2007-09-19 & 2469. & 126.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 126 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 39.56194\\\\\n",
- "\t 5996198 & 2007-09-19 & 246A. & 80.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 80 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 39.56194\\\\\n",
- "\t 5996198 & 2012-08-09 & 2469. & 132.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 132 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 44.45175\\\\\n",
- "\t 5996198 & 2012-08-09 & 246A. & 86.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 86 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 44.45175\\\\\n",
- "\t 5996198 & 2012-11-07 & 2469. & 140.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 140 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 44.69815\\\\\n",
- "\t 5996198 & 2012-11-07 & 246A. & 68.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 68 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 44.69815\\\\\n",
- "\t 5996198 & 2013-03-06 & 2469. & 139.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 139 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.02396\\\\\n",
- "\t 5996198 & 2013-03-06 & 246A. & 88.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 88 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.02396\\\\\n",
- "\t 5996198 & 2014-01-17 & 2469. & 148.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 148 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.89185\\\\\n",
- "\t 5996198 & 2014-01-17 & 246A. & 72.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 72 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.89185\\\\\n",
- "\t 5996198 & 2014-02-03 & 2469. & 145.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 145 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.93840\\\\\n",
- "\t 5996198 & 2014-02-03 & 246A. & 98.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 98 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.93840\\\\\n",
- "\t 5996198 & 2014-02-07 & 2469. & 137.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 137 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.94935\\\\\n",
- "\t 5996198 & 2014-02-07 & 246A. & 85.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 85 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 45.94935\\\\\n",
- "\t 5996198 & 2014-03-18 & 2469. & 145.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 145 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 46.05613\\\\\n",
- "\t 5996198 & 2014-03-18 & 246A. & 98.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 98 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 46.05613\\\\\n",
- "\t 5996198 & 2014-04-11 & 2469. & 130.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 130 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 46.12183\\\\\n",
- "\t 5996198 & 2014-04-11 & 246A. & 60.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 60 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 46.12183\\\\\n",
- "\t 5996198 & 2014-05-14 & 2469. & 132.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 132 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 46.21218\\\\\n",
- "\t 5996198 & 2014-05-14 & 246A. & 84.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 84 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 46.21218\\\\\n",
- "\t 5996198 & 2015-09-22 & 2469. & 124.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 124 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 47.57016\\\\\n",
- "\t 5996198 & 2015-09-22 & 246A. & 88.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 88 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 47.57016\\\\\n",
- "\t 5996198 & 2015-10-01 & 2469. & 133.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 133 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 47.59480\\\\\n",
- "\t 5996198 & 2015-10-01 & 246A. & 95.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 95 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 47.59480\\\\\n",
- "\t 5996198 & 2015-11-12 & 2469. & 134.000 & NA & NA & 163030003 & O/E - Systolic BP reading & 134 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 47.70979\\\\\n",
- "\t 5996198 & 2015-11-12 & 246A. & 82.000 & NA & NA & 163031004 & O/E - Diastolic BP reading & 82 & 41 & Female & White & -0.297723 & 2009-02-26 & Oxford & 1968-02-26 & 47.70979\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A tibble: 3729 × 17\n",
- "\n",
- "| eid <int> | date <date> | code <chr> | value1 <chr> | value2 <chr> | value3 <chr> | meaning <chr> | name <chr> | value <dbl> | age_at_recruitment_f21022_0_0 <dbl> | sex_f31_0_0 <fct> | ethnic_background_f21000_0_0 <fct> | townsend_deprivation_index_at_recruitment_f189_0_0 <dbl> | date_of_attending_assessment_centre_f53_0_0 <date> | uk_biobank_assessment_centre_f54_0_0 <chr> | birth_date <date> | time <dbl> |\n",
- "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
- "| 1005194 | 1993-06-30 | 246.. | 120.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 120 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 48.68446 |\n",
- "| 1005194 | 1993-06-30 | 246.. | 120.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 48.68446 |\n",
- "| 1005194 | 1997-07-14 | 246.. | 130.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 130 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 52.72279 |\n",
- "| 1005194 | 1997-07-14 | 246.. | 130.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 52.72279 |\n",
- "| 1005194 | 1999-01-21 | 246.. | 142.000 | 94.000 | NA | 163030003 | O/E - Systolic BP reading | 142 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.24504 |\n",
- "| 1005194 | 1999-01-21 | 246.. | 142.000 | 94.000 | NA | 163031004 | O/E - Diastolic BP reading | 94 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.24504 |\n",
- "| 1005194 | 1999-01-27 | 246.. | 142.000 | 92.000 | NA | 163030003 | O/E - Systolic BP reading | 142 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.26146 |\n",
- "| 1005194 | 1999-01-27 | 246.. | 142.000 | 92.000 | NA | 163031004 | O/E - Diastolic BP reading | 92 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.26146 |\n",
- "| 1005194 | 1999-10-06 | 246.. | 140.000 | 86.000 | NA | 163030003 | O/E - Systolic BP reading | 140 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.95140 |\n",
- "| 1005194 | 1999-10-06 | 246.. | 140.000 | 86.000 | NA | 163031004 | O/E - Diastolic BP reading | 86 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 54.95140 |\n",
- "| 1005194 | 1999-12-08 | 246.. | 148.000 | 82.000 | NA | 163030003 | O/E - Systolic BP reading | 148 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.12389 |\n",
- "| 1005194 | 1999-12-08 | 246.. | 148.000 | 82.000 | NA | 163031004 | O/E - Diastolic BP reading | 82 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.12389 |\n",
- "| 1005194 | 2000-06-19 | 246.. | 120.000 | 84.000 | NA | 163030003 | O/E - Systolic BP reading | 120 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.65503 |\n",
- "| 1005194 | 2000-06-19 | 246.. | 120.000 | 84.000 | NA | 163031004 | O/E - Diastolic BP reading | 84 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 55.65503 |\n",
- "| 1005194 | 2001-01-05 | 246.. | 150.000 | 90.000 | NA | 163030003 | O/E - Systolic BP reading | 150 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.20260 |\n",
- "| 1005194 | 2001-01-05 | 246.. | 150.000 | 90.000 | NA | 163031004 | O/E - Diastolic BP reading | 90 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.20260 |\n",
- "| 1005194 | 2001-02-02 | 246.. | 140.000 | 90.000 | NA | 163030003 | O/E - Systolic BP reading | 140 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.27926 |\n",
- "| 1005194 | 2001-02-02 | 246.. | 140.000 | 90.000 | NA | 163031004 | O/E - Diastolic BP reading | 90 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.27926 |\n",
- "| 1005194 | 2001-07-05 | 246.. | 130.000 | 74.000 | NA | 163030003 | O/E - Systolic BP reading | 130 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.69815 |\n",
- "| 1005194 | 2001-07-05 | 246.. | 130.000 | 74.000 | NA | 163031004 | O/E - Diastolic BP reading | 74 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 56.69815 |\n",
- "| 1005194 | 2002-05-01 | 246.. | 144.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 144 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 57.51951 |\n",
- "| 1005194 | 2002-05-01 | 246.. | 144.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 57.51951 |\n",
- "| 1005194 | 2003-03-03 | 246.. | 145.000 | 81.000 | NA | 163030003 | O/E - Systolic BP reading | 145 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.35729 |\n",
- "| 1005194 | 2003-03-03 | 246.. | 145.000 | 81.000 | NA | 163031004 | O/E - Diastolic BP reading | 81 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.35729 |\n",
- "| 1005194 | 2003-03-18 | 246.. | 137.000 | 67.000 | NA | 163030003 | O/E - Systolic BP reading | 137 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |\n",
- "| 1005194 | 2003-03-18 | 246.. | 137.000 | 67.000 | NA | 163031004 | O/E - Diastolic BP reading | 67 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |\n",
- "| 1005194 | 2003-03-18 | 246.. | 146.000 | 92.000 | NA | 163030003 | O/E - Systolic BP reading | 146 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |\n",
- "| 1005194 | 2003-03-18 | 246.. | 146.000 | 92.000 | NA | 163031004 | O/E - Diastolic BP reading | 92 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.39836 |\n",
- "| 1005194 | 2003-03-19 | 246.. | 145.000 | 80.000 | NA | 163030003 | O/E - Systolic BP reading | 145 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.40110 |\n",
- "| 1005194 | 2003-03-19 | 246.. | 145.000 | 80.000 | NA | 163031004 | O/E - Diastolic BP reading | 80 | 65 | Male | White | 1.80551 | 2009-10-23 | Sheffield | 1944-10-23 | 58.40110 |\n",
- "| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |\n",
- "| 5996198 | 2005-09-28 | 2469. | 120.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 120 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 37.58795 |\n",
- "| 5996198 | 2005-09-28 | 246A. | 84.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 84 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 37.58795 |\n",
- "| 5996198 | 2006-03-10 | 2469. | 129.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 129 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 38.03422 |\n",
- "| 5996198 | 2006-03-10 | 246A. | 89.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 89 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 38.03422 |\n",
- "| 5996198 | 2007-09-19 | 2469. | 126.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 126 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 39.56194 |\n",
- "| 5996198 | 2007-09-19 | 246A. | 80.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 80 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 39.56194 |\n",
- "| 5996198 | 2012-08-09 | 2469. | 132.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 132 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.45175 |\n",
- "| 5996198 | 2012-08-09 | 246A. | 86.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 86 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.45175 |\n",
- "| 5996198 | 2012-11-07 | 2469. | 140.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 140 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.69815 |\n",
- "| 5996198 | 2012-11-07 | 246A. | 68.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 68 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 44.69815 |\n",
- "| 5996198 | 2013-03-06 | 2469. | 139.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 139 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.02396 |\n",
- "| 5996198 | 2013-03-06 | 246A. | 88.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 88 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.02396 |\n",
- "| 5996198 | 2014-01-17 | 2469. | 148.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 148 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.89185 |\n",
- "| 5996198 | 2014-01-17 | 246A. | 72.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 72 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.89185 |\n",
- "| 5996198 | 2014-02-03 | 2469. | 145.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 145 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.93840 |\n",
- "| 5996198 | 2014-02-03 | 246A. | 98.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 98 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.93840 |\n",
- "| 5996198 | 2014-02-07 | 2469. | 137.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 137 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.94935 |\n",
- "| 5996198 | 2014-02-07 | 246A. | 85.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 85 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 45.94935 |\n",
- "| 5996198 | 2014-03-18 | 2469. | 145.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 145 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.05613 |\n",
- "| 5996198 | 2014-03-18 | 246A. | 98.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 98 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.05613 |\n",
- "| 5996198 | 2014-04-11 | 2469. | 130.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 130 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.12183 |\n",
- "| 5996198 | 2014-04-11 | 246A. | 60.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 60 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.12183 |\n",
- "| 5996198 | 2014-05-14 | 2469. | 132.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 132 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.21218 |\n",
- "| 5996198 | 2014-05-14 | 246A. | 84.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 84 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 46.21218 |\n",
- "| 5996198 | 2015-09-22 | 2469. | 124.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 124 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.57016 |\n",
- "| 5996198 | 2015-09-22 | 246A. | 88.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 88 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.57016 |\n",
- "| 5996198 | 2015-10-01 | 2469. | 133.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 133 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.59480 |\n",
- "| 5996198 | 2015-10-01 | 246A. | 95.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 95 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.59480 |\n",
- "| 5996198 | 2015-11-12 | 2469. | 134.000 | NA | NA | 163030003 | O/E - Systolic BP reading | 134 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.70979 |\n",
- "| 5996198 | 2015-11-12 | 246A. | 82.000 | NA | NA | 163031004 | O/E - Diastolic BP reading | 82 | 41 | Female | White | -0.297723 | 2009-02-26 | Oxford | 1968-02-26 | 47.70979 |\n",
- "\n"
- ],
- "text/plain": [
- " eid date code value1 value2 value3 meaning \n",
- "1 1005194 1993-06-30 246.. 120.000 80.000 NA 163030003\n",
- "2 1005194 1993-06-30 246.. 120.000 80.000 NA 163031004\n",
- "3 1005194 1997-07-14 246.. 130.000 80.000 NA 163030003\n",
- "4 1005194 1997-07-14 246.. 130.000 80.000 NA 163031004\n",
- "5 1005194 1999-01-21 246.. 142.000 94.000 NA 163030003\n",
- "6 1005194 1999-01-21 246.. 142.000 94.000 NA 163031004\n",
- "7 1005194 1999-01-27 246.. 142.000 92.000 NA 163030003\n",
- "8 1005194 1999-01-27 246.. 142.000 92.000 NA 163031004\n",
- "9 1005194 1999-10-06 246.. 140.000 86.000 NA 163030003\n",
- "10 1005194 1999-10-06 246.. 140.000 86.000 NA 163031004\n",
- "11 1005194 1999-12-08 246.. 148.000 82.000 NA 163030003\n",
- "12 1005194 1999-12-08 246.. 148.000 82.000 NA 163031004\n",
- "13 1005194 2000-06-19 246.. 120.000 84.000 NA 163030003\n",
- "14 1005194 2000-06-19 246.. 120.000 84.000 NA 163031004\n",
- "15 1005194 2001-01-05 246.. 150.000 90.000 NA 163030003\n",
- "16 1005194 2001-01-05 246.. 150.000 90.000 NA 163031004\n",
- "17 1005194 2001-02-02 246.. 140.000 90.000 NA 163030003\n",
- "18 1005194 2001-02-02 246.. 140.000 90.000 NA 163031004\n",
- "19 1005194 2001-07-05 246.. 130.000 74.000 NA 163030003\n",
- "20 1005194 2001-07-05 246.. 130.000 74.000 NA 163031004\n",
- "21 1005194 2002-05-01 246.. 144.000 80.000 NA 163030003\n",
- "22 1005194 2002-05-01 246.. 144.000 80.000 NA 163031004\n",
- "23 1005194 2003-03-03 246.. 145.000 81.000 NA 163030003\n",
- "24 1005194 2003-03-03 246.. 145.000 81.000 NA 163031004\n",
- "25 1005194 2003-03-18 246.. 137.000 67.000 NA 163030003\n",
- "26 1005194 2003-03-18 246.. 137.000 67.000 NA 163031004\n",
- "27 1005194 2003-03-18 246.. 146.000 92.000 NA 163030003\n",
- "28 1005194 2003-03-18 246.. 146.000 92.000 NA 163031004\n",
- "29 1005194 2003-03-19 246.. 145.000 80.000 NA 163030003\n",
- "30 1005194 2003-03-19 246.. 145.000 80.000 NA 163031004\n",
- " \n",
- "3700 5996198 2005-09-28 2469. 120.000 NA NA 163030003\n",
- "3701 5996198 2005-09-28 246A. 84.000 NA NA 163031004\n",
- "3702 5996198 2006-03-10 2469. 129.000 NA NA 163030003\n",
- "3703 5996198 2006-03-10 246A. 89.000 NA NA 163031004\n",
- "3704 5996198 2007-09-19 2469. 126.000 NA NA 163030003\n",
- "3705 5996198 2007-09-19 246A. 80.000 NA NA 163031004\n",
- "3706 5996198 2012-08-09 2469. 132.000 NA NA 163030003\n",
- "3707 5996198 2012-08-09 246A. 86.000 NA NA 163031004\n",
- "3708 5996198 2012-11-07 2469. 140.000 NA NA 163030003\n",
- "3709 5996198 2012-11-07 246A. 68.000 NA NA 163031004\n",
- "3710 5996198 2013-03-06 2469. 139.000 NA NA 163030003\n",
- "3711 5996198 2013-03-06 246A. 88.000 NA NA 163031004\n",
- "3712 5996198 2014-01-17 2469. 148.000 NA NA 163030003\n",
- "3713 5996198 2014-01-17 246A. 72.000 NA NA 163031004\n",
- "3714 5996198 2014-02-03 2469. 145.000 NA NA 163030003\n",
- "3715 5996198 2014-02-03 246A. 98.000 NA NA 163031004\n",
- "3716 5996198 2014-02-07 2469. 137.000 NA NA 163030003\n",
- "3717 5996198 2014-02-07 246A. 85.000 NA NA 163031004\n",
- "3718 5996198 2014-03-18 2469. 145.000 NA NA 163030003\n",
- "3719 5996198 2014-03-18 246A. 98.000 NA NA 163031004\n",
- "3720 5996198 2014-04-11 2469. 130.000 NA NA 163030003\n",
- "3721 5996198 2014-04-11 246A. 60.000 NA NA 163031004\n",
- "3722 5996198 2014-05-14 2469. 132.000 NA NA 163030003\n",
- "3723 5996198 2014-05-14 246A. 84.000 NA NA 163031004\n",
- "3724 5996198 2015-09-22 2469. 124.000 NA NA 163030003\n",
- "3725 5996198 2015-09-22 246A. 88.000 NA NA 163031004\n",
- "3726 5996198 2015-10-01 2469. 133.000 NA NA 163030003\n",
- "3727 5996198 2015-10-01 246A. 95.000 NA NA 163031004\n",
- "3728 5996198 2015-11-12 2469. 134.000 NA NA 163030003\n",
- "3729 5996198 2015-11-12 246A. 82.000 NA NA 163031004\n",
- " name value age_at_recruitment_f21022_0_0\n",
- "1 O/E - Systolic BP reading 120 65 \n",
- "2 O/E - Diastolic BP reading 80 65 \n",
- "3 O/E - Systolic BP reading 130 65 \n",
- "4 O/E - Diastolic BP reading 80 65 \n",
- "5 O/E - Systolic BP reading 142 65 \n",
- "6 O/E - Diastolic BP reading 94 65 \n",
- "7 O/E - Systolic BP reading 142 65 \n",
- "8 O/E - Diastolic BP reading 92 65 \n",
- "9 O/E - Systolic BP reading 140 65 \n",
- "10 O/E - Diastolic BP reading 86 65 \n",
- "11 O/E - Systolic BP reading 148 65 \n",
- "12 O/E - Diastolic BP reading 82 65 \n",
- "13 O/E - Systolic BP reading 120 65 \n",
- "14 O/E - Diastolic BP reading 84 65 \n",
- "15 O/E - Systolic BP reading 150 65 \n",
- "16 O/E - Diastolic BP reading 90 65 \n",
- "17 O/E - Systolic BP reading 140 65 \n",
- "18 O/E - Diastolic BP reading 90 65 \n",
- "19 O/E - Systolic BP reading 130 65 \n",
- "20 O/E - Diastolic BP reading 74 65 \n",
- "21 O/E - Systolic BP reading 144 65 \n",
- "22 O/E - Diastolic BP reading 80 65 \n",
- "23 O/E - Systolic BP reading 145 65 \n",
- "24 O/E - Diastolic BP reading 81 65 \n",
- "25 O/E - Systolic BP reading 137 65 \n",
- "26 O/E - Diastolic BP reading 67 65 \n",
- "27 O/E - Systolic BP reading 146 65 \n",
- "28 O/E - Diastolic BP reading 92 65 \n",
- "29 O/E - Systolic BP reading 145 65 \n",
- "30 O/E - Diastolic BP reading 80 65 \n",
- " \n",
- "3700 O/E - Systolic BP reading 120 41 \n",
- "3701 O/E - Diastolic BP reading 84 41 \n",
- "3702 O/E - Systolic BP reading 129 41 \n",
- "3703 O/E - Diastolic BP reading 89 41 \n",
- "3704 O/E - Systolic BP reading 126 41 \n",
- "3705 O/E - Diastolic BP reading 80 41 \n",
- "3706 O/E - Systolic BP reading 132 41 \n",
- "3707 O/E - Diastolic BP reading 86 41 \n",
- "3708 O/E - Systolic BP reading 140 41 \n",
- "3709 O/E - Diastolic BP reading 68 41 \n",
- "3710 O/E - Systolic BP reading 139 41 \n",
- "3711 O/E - Diastolic BP reading 88 41 \n",
- "3712 O/E - Systolic BP reading 148 41 \n",
- "3713 O/E - Diastolic BP reading 72 41 \n",
- "3714 O/E - Systolic BP reading 145 41 \n",
- "3715 O/E - Diastolic BP reading 98 41 \n",
- "3716 O/E - Systolic BP reading 137 41 \n",
- "3717 O/E - Diastolic BP reading 85 41 \n",
- "3718 O/E - Systolic BP reading 145 41 \n",
- "3719 O/E - Diastolic BP reading 98 41 \n",
- "3720 O/E - Systolic BP reading 130 41 \n",
- "3721 O/E - Diastolic BP reading 60 41 \n",
- "3722 O/E - Systolic BP reading 132 41 \n",
- "3723 O/E - Diastolic BP reading 84 41 \n",
- "3724 O/E - Systolic BP reading 124 41 \n",
- "3725 O/E - Diastolic BP reading 88 41 \n",
- "3726 O/E - Systolic BP reading 133 41 \n",
- "3727 O/E - Diastolic BP reading 95 41 \n",
- "3728 O/E - Systolic BP reading 134 41 \n",
- "3729 O/E - Diastolic BP reading 82 41 \n",
- " sex_f31_0_0 ethnic_background_f21000_0_0\n",
- "1 Male White \n",
- "2 Male White \n",
- "3 Male White \n",
- "4 Male White \n",
- "5 Male White \n",
- "6 Male White \n",
- "7 Male White \n",
- "8 Male White \n",
- "9 Male White \n",
- "10 Male White \n",
- "11 Male White \n",
- "12 Male White \n",
- "13 Male White \n",
- "14 Male White \n",
- "15 Male White \n",
- "16 Male White \n",
- "17 Male White \n",
- "18 Male White \n",
- "19 Male White \n",
- "20 Male White \n",
- "21 Male White \n",
- "22 Male White \n",
- "23 Male White \n",
- "24 Male White \n",
- "25 Male White \n",
- "26 Male White \n",
- "27 Male White \n",
- "28 Male White \n",
- "29 Male White \n",
- "30 Male White \n",
- " \n",
- "3700 Female White \n",
- "3701 Female White \n",
- "3702 Female White \n",
- "3703 Female White \n",
- "3704 Female White \n",
- "3705 Female White \n",
- "3706 Female White \n",
- "3707 Female White \n",
- "3708 Female White \n",
- "3709 Female White \n",
- "3710 Female White \n",
- "3711 Female White \n",
- "3712 Female White \n",
- "3713 Female White \n",
- "3714 Female White \n",
- "3715 Female White \n",
- "3716 Female White \n",
- "3717 Female White \n",
- "3718 Female White \n",
- "3719 Female White \n",
- "3720 Female White \n",
- "3721 Female White \n",
- "3722 Female White \n",
- "3723 Female White \n",
- "3724 Female White \n",
- "3725 Female White \n",
- "3726 Female White \n",
- "3727 Female White \n",
- "3728 Female White \n",
- "3729 Female White \n",
- " townsend_deprivation_index_at_recruitment_f189_0_0\n",
- "1 1.80551 \n",
- "2 1.80551 \n",
- "3 1.80551 \n",
- "4 1.80551 \n",
- "5 1.80551 \n",
- "6 1.80551 \n",
- "7 1.80551 \n",
- "8 1.80551 \n",
- "9 1.80551 \n",
- "10 1.80551 \n",
- "11 1.80551 \n",
- "12 1.80551 \n",
- "13 1.80551 \n",
- "14 1.80551 \n",
- "15 1.80551 \n",
- "16 1.80551 \n",
- "17 1.80551 \n",
- "18 1.80551 \n",
- "19 1.80551 \n",
- "20 1.80551 \n",
- "21 1.80551 \n",
- "22 1.80551 \n",
- "23 1.80551 \n",
- "24 1.80551 \n",
- "25 1.80551 \n",
- "26 1.80551 \n",
- "27 1.80551 \n",
- "28 1.80551 \n",
- "29 1.80551 \n",
- "30 1.80551 \n",
- " \n",
- "3700 -0.297723 \n",
- "3701 -0.297723 \n",
- "3702 -0.297723 \n",
- "3703 -0.297723 \n",
- "3704 -0.297723 \n",
- "3705 -0.297723 \n",
- "3706 -0.297723 \n",
- "3707 -0.297723 \n",
- "3708 -0.297723 \n",
- "3709 -0.297723 \n",
- "3710 -0.297723 \n",
- "3711 -0.297723 \n",
- "3712 -0.297723 \n",
- "3713 -0.297723 \n",
- "3714 -0.297723 \n",
- "3715 -0.297723 \n",
- "3716 -0.297723 \n",
- "3717 -0.297723 \n",
- "3718 -0.297723 \n",
- "3719 -0.297723 \n",
- "3720 -0.297723 \n",
- "3721 -0.297723 \n",
- "3722 -0.297723 \n",
- "3723 -0.297723 \n",
- "3724 -0.297723 \n",
- "3725 -0.297723 \n",
- "3726 -0.297723 \n",
- "3727 -0.297723 \n",
- "3728 -0.297723 \n",
- "3729 -0.297723 \n",
- " date_of_attending_assessment_centre_f53_0_0\n",
- "1 2009-10-23 \n",
- "2 2009-10-23 \n",
- "3 2009-10-23 \n",
- "4 2009-10-23 \n",
- "5 2009-10-23 \n",
- "6 2009-10-23 \n",
- "7 2009-10-23 \n",
- "8 2009-10-23 \n",
- "9 2009-10-23 \n",
- "10 2009-10-23 \n",
- "11 2009-10-23 \n",
- "12 2009-10-23 \n",
- "13 2009-10-23 \n",
- "14 2009-10-23 \n",
- "15 2009-10-23 \n",
- "16 2009-10-23 \n",
- "17 2009-10-23 \n",
- "18 2009-10-23 \n",
- "19 2009-10-23 \n",
- "20 2009-10-23 \n",
- "21 2009-10-23 \n",
- "22 2009-10-23 \n",
- "23 2009-10-23 \n",
- "24 2009-10-23 \n",
- "25 2009-10-23 \n",
- "26 2009-10-23 \n",
- "27 2009-10-23 \n",
- "28 2009-10-23 \n",
- "29 2009-10-23 \n",
- "30 2009-10-23 \n",
- " \n",
- "3700 2009-02-26 \n",
- "3701 2009-02-26 \n",
- "3702 2009-02-26 \n",
- "3703 2009-02-26 \n",
- "3704 2009-02-26 \n",
- "3705 2009-02-26 \n",
- "3706 2009-02-26 \n",
- "3707 2009-02-26 \n",
- "3708 2009-02-26 \n",
- "3709 2009-02-26 \n",
- "3710 2009-02-26 \n",
- "3711 2009-02-26 \n",
- "3712 2009-02-26 \n",
- "3713 2009-02-26 \n",
- "3714 2009-02-26 \n",
- "3715 2009-02-26 \n",
- "3716 2009-02-26 \n",
- "3717 2009-02-26 \n",
- "3718 2009-02-26 \n",
- "3719 2009-02-26 \n",
- "3720 2009-02-26 \n",
- "3721 2009-02-26 \n",
- "3722 2009-02-26 \n",
- "3723 2009-02-26 \n",
- "3724 2009-02-26 \n",
- "3725 2009-02-26 \n",
- "3726 2009-02-26 \n",
- "3727 2009-02-26 \n",
- "3728 2009-02-26 \n",
- "3729 2009-02-26 \n",
- " uk_biobank_assessment_centre_f54_0_0 birth_date time \n",
- "1 Sheffield 1944-10-23 48.68446\n",
- "2 Sheffield 1944-10-23 48.68446\n",
- "3 Sheffield 1944-10-23 52.72279\n",
- "4 Sheffield 1944-10-23 52.72279\n",
- "5 Sheffield 1944-10-23 54.24504\n",
- "6 Sheffield 1944-10-23 54.24504\n",
- "7 Sheffield 1944-10-23 54.26146\n",
- "8 Sheffield 1944-10-23 54.26146\n",
- "9 Sheffield 1944-10-23 54.95140\n",
- "10 Sheffield 1944-10-23 54.95140\n",
- "11 Sheffield 1944-10-23 55.12389\n",
- "12 Sheffield 1944-10-23 55.12389\n",
- "13 Sheffield 1944-10-23 55.65503\n",
- "14 Sheffield 1944-10-23 55.65503\n",
- "15 Sheffield 1944-10-23 56.20260\n",
- "16 Sheffield 1944-10-23 56.20260\n",
- "17 Sheffield 1944-10-23 56.27926\n",
- "18 Sheffield 1944-10-23 56.27926\n",
- "19 Sheffield 1944-10-23 56.69815\n",
- "20 Sheffield 1944-10-23 56.69815\n",
- "21 Sheffield 1944-10-23 57.51951\n",
- "22 Sheffield 1944-10-23 57.51951\n",
- "23 Sheffield 1944-10-23 58.35729\n",
- "24 Sheffield 1944-10-23 58.35729\n",
- "25 Sheffield 1944-10-23 58.39836\n",
- "26 Sheffield 1944-10-23 58.39836\n",
- "27 Sheffield 1944-10-23 58.39836\n",
- "28 Sheffield 1944-10-23 58.39836\n",
- "29 Sheffield 1944-10-23 58.40110\n",
- "30 Sheffield 1944-10-23 58.40110\n",
- " \n",
- "3700 Oxford 1968-02-26 37.58795\n",
- "3701 Oxford 1968-02-26 37.58795\n",
- "3702 Oxford 1968-02-26 38.03422\n",
- "3703 Oxford 1968-02-26 38.03422\n",
- "3704 Oxford 1968-02-26 39.56194\n",
- "3705 Oxford 1968-02-26 39.56194\n",
- "3706 Oxford 1968-02-26 44.45175\n",
- "3707 Oxford 1968-02-26 44.45175\n",
- "3708 Oxford 1968-02-26 44.69815\n",
- "3709 Oxford 1968-02-26 44.69815\n",
- "3710 Oxford 1968-02-26 45.02396\n",
- "3711 Oxford 1968-02-26 45.02396\n",
- "3712 Oxford 1968-02-26 45.89185\n",
- "3713 Oxford 1968-02-26 45.89185\n",
- "3714 Oxford 1968-02-26 45.93840\n",
- "3715 Oxford 1968-02-26 45.93840\n",
- "3716 Oxford 1968-02-26 45.94935\n",
- "3717 Oxford 1968-02-26 45.94935\n",
- "3718 Oxford 1968-02-26 46.05613\n",
- "3719 Oxford 1968-02-26 46.05613\n",
- "3720 Oxford 1968-02-26 46.12183\n",
- "3721 Oxford 1968-02-26 46.12183\n",
- "3722 Oxford 1968-02-26 46.21218\n",
- "3723 Oxford 1968-02-26 46.21218\n",
- "3724 Oxford 1968-02-26 47.57016\n",
- "3725 Oxford 1968-02-26 47.57016\n",
- "3726 Oxford 1968-02-26 47.59480\n",
- "3727 Oxford 1968-02-26 47.59480\n",
- "3728 Oxford 1968-02-26 47.70979\n",
- "3729 Oxford 1968-02-26 47.70979"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "library(lubridate)\n",
- "df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "163031004 4142442\n",
- "163030003 3963088\n",
- "1000731000000107 1670214\n",
- "1022431000000105 1662102\n",
- "1022541000000102 1630899\n",
- " ... \n",
- "173842008 1\n",
- "77329001 1\n",
- "265404007 1\n",
- "81977006 1\n",
- "211427006 1\n",
- "Name: meaning, Length: 16366, dtype: int64"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "codes_gp_measurements.meaning.value_counts(normalize=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Basics"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {},
- "outputs": [],
- "source": [
- "coding10 = pd.read_csv(f\"{path}/mapping/codings/coding10.tsv\", sep=\"\\t\").assign(coding = lambda x: x.coding.astype(\"int\")).rename(columns={\"coding\":\"uk_biobank_assessment_centre_f54_0_0\"})\n",
- "coding10[\"uk_biobank_assessment_centre_f54_0_0\"] = coding10[\"uk_biobank_assessment_centre_f54_0_0\"].astype(\"int\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:06.176411Z",
- "start_time": "2020-11-04T12:34:05.891730Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "502504\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " age_at_recruitment_f21022_0_0 | \n",
- " sex_f31_0_0 | \n",
- " ethnic_background_f21000_0_0 | \n",
- " townsend_deprivation_index_at_recruitment_f189_0_0 | \n",
- " date_of_attending_assessment_centre_f53_0_0 | \n",
- " uk_biobank_assessment_centre_f54_0_0 | \n",
- " birth_date | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " 49.0 | \n",
- " Female | \n",
- " White | \n",
- " -1.852930 | \n",
- " 2009-11-12 | \n",
- " Sheffield | \n",
- " 1960-11-12 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000020 | \n",
- " 59.0 | \n",
- " Male | \n",
- " White | \n",
- " 0.204248 | \n",
- " 2008-02-19 | \n",
- " Sheffield | \n",
- " 1949-02-19 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000037 | \n",
- " 59.0 | \n",
- " Female | \n",
- " White | \n",
- " -3.498860 | \n",
- " 2008-11-11 | \n",
- " Sheffield | \n",
- " 1949-11-11 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000043 | \n",
- " 63.0 | \n",
- " Male | \n",
- " White | \n",
- " -5.351150 | \n",
- " 2009-06-03 | \n",
- " Sheffield | \n",
- " 1946-06-03 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000051 | \n",
- " 51.0 | \n",
- " Female | \n",
- " White | \n",
- " -1.799080 | \n",
- " 2006-06-10 | \n",
- " Sheffield | \n",
- " 1955-06-10 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " eid age_at_recruitment_f21022_0_0 sex_f31_0_0 \\\n",
- "0 1000018 49.0 Female \n",
- "1 1000020 59.0 Male \n",
- "2 1000037 59.0 Female \n",
- "3 1000043 63.0 Male \n",
- "4 1000051 51.0 Female \n",
- "\n",
- " ethnic_background_f21000_0_0 \\\n",
- "0 White \n",
- "1 White \n",
- "2 White \n",
- "3 White \n",
- "4 White \n",
- "\n",
- " townsend_deprivation_index_at_recruitment_f189_0_0 \\\n",
- "0 -1.852930 \n",
- "1 0.204248 \n",
- "2 -3.498860 \n",
- "3 -5.351150 \n",
- "4 -1.799080 \n",
- "\n",
- " date_of_attending_assessment_centre_f53_0_0 \\\n",
- "0 2009-11-12 \n",
- "1 2008-02-19 \n",
- "2 2008-11-11 \n",
- "3 2009-06-03 \n",
- "4 2006-06-10 \n",
- "\n",
- " uk_biobank_assessment_centre_f54_0_0 birth_date \n",
- "0 Sheffield 1960-11-12 \n",
- "1 Sheffield 1949-02-19 \n",
- "2 Sheffield 1949-11-11 \n",
- "3 Sheffield 1946-06-03 \n",
- "4 Sheffield 1955-06-10 "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fields_basics = [\n",
- " \"21022\", # age at recruitment\n",
- " \"31\", # sex\n",
- " \"21000\", # ethnicity\n",
- " \"189\", # Townsend index\n",
- " \"53\", # date of baseline assessment\n",
- " \"54\", # assessment center\n",
- "]\n",
- "\n",
- "temp = get_data_fields(fields_basics, data, data_field)\n",
- "\n",
- "temp[\"sex_f31_0_0\"] = temp[\"sex_f31_0_0\"].cat.set_categories([\"Female\", 'Male'], ordered=False)\n",
- "\n",
- "#temp[\"ethnic_background_f21000_0_0\"] = temp[\"ethnic_background_f21000_0_0\"].astype(\"string\")\n",
- "\n",
- "ethn_bg_def = {\"White\": [\"White\", \"British\", \"Irish\", \"Any other white background\"],\n",
- " \"Mixed\": [\"Mixed\", \"White and Black Caribbean\", \"White and Black African\", \"White and Asian\", \"Any other mixed background\"], \n",
- " \"Asian\": [\"Asian or Asian British\", \"Indian\", \"Pakistani\", \"Bangladeshi\", \"Any other Asian background\"], \n",
- " \"Black\": [\"Black or Black British\", \"Caribbean\", \"African\", \"Any other Black background\"],\n",
- " \"Chinese\": [\"Chinese\"], \n",
- " np.nan: [\"Other ethnic group\", \"Do not know\", \"Prefer not to answer\"]}\n",
- "\n",
- "ethn_bg_dict = {}\n",
- "for key, values in ethn_bg_def.items(): \n",
- " for value in values:\n",
- " ethn_bg_dict[value]=key \n",
- " \n",
- "temp[\"ethnic_background_f21000_0_0\"].replace(ethn_bg_dict, inplace=True)\n",
- "temp[\"ethnic_background_f21000_0_0\"] = temp[\"ethnic_background_f21000_0_0\"].astype(\"category\")\n",
- "\n",
- "#\n",
- "#temp[\"ethnic_background_f21000_0_0\"] = temp[\"ethnic_background_f21000_0_0\"].astype(\"category\").cat.set_categories(['White', 'Black', 'Asien', 'Mixed', 'Chinese'], ordered=False)\n",
- "\n",
- "basics = temp\n",
- "print(len(temp))\n",
- "\n",
- "from dateutil.relativedelta import relativedelta\n",
- "calc_birth_date = [date_of_attending_assessment_centre - relativedelta(years=age_at_recruitment) \n",
- " for date_of_attending_assessment_centre, age_at_recruitment \n",
- " in zip(basics[\"date_of_attending_assessment_centre_f53_0_0\"], basics[\"age_at_recruitment_f21022_0_0\"])]\n",
- "\n",
- "basics = basics.assign(birth_date = calc_birth_date)\n",
- "basics[\"uk_biobank_assessment_centre_f54_0_0\"] = basics.assign(uk_biobank_assessment_centre_f54_0_0 = lambda x: x.uk_biobank_assessment_centre_f54_0_0.astype(\"int\")).merge(coding10, on=\"uk_biobank_assessment_centre_f54_0_0\")[\"meaning\"]\n",
- "\n",
- "\n",
- "display(basics.head())\n",
- "basics.to_feather(os.path.join(path, dataset_path, 'temp_basics.feather'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:06.186613Z",
- "start_time": "2020-11-04T12:34:06.178111Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['White', 'Black', NaN, 'Asian', 'Mixed', 'Chinese']\n",
- "Categories (5, object): ['White', 'Black', 'Asian', 'Mixed', 'Chinese']\n"
- ]
- }
- ],
- "source": [
- " print(temp[\"ethnic_background_f21000_0_0\"].unique())"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Questionnaire"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:06.389467Z",
- "start_time": "2020-11-04T12:34:06.188206Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "502504\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " overall_health_rating_f2178_0_0 | \n",
- " smoking_status_f20116_0_0 | \n",
- " alcohol_intake_frequency_f1558_0_0 | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " Fair | \n",
- " Current | \n",
- " Once or twice a week | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000020 | \n",
- " Good | \n",
- " Current | \n",
- " Once or twice a week | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000037 | \n",
- " Good | \n",
- " Previous | \n",
- " Once or twice a week | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000043 | \n",
- " Fair | \n",
- " Previous | \n",
- " Three or four times a week | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000051 | \n",
- " Poor | \n",
- " Never | \n",
- " One to three times a month | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " eid overall_health_rating_f2178_0_0 smoking_status_f20116_0_0 \\\n",
- "0 1000018 Fair Current \n",
- "1 1000020 Good Current \n",
- "2 1000037 Good Previous \n",
- "3 1000043 Fair Previous \n",
- "4 1000051 Poor Never \n",
- "\n",
- " alcohol_intake_frequency_f1558_0_0 \n",
- "0 Once or twice a week \n",
- "1 Once or twice a week \n",
- "2 Once or twice a week \n",
- "3 Three or four times a week \n",
- "4 One to three times a month "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fields_questionnaire = [\n",
- " \"2178\", # Overall health\n",
- " \"20116\", # Smoking status\n",
- " \"1558\",\n",
- "]\n",
- "\n",
- "temp = get_data_fields(fields_questionnaire, data, data_field)\n",
- "\n",
- "temp[\"overall_health_rating_f2178_0_0\"] = temp[\"overall_health_rating_f2178_0_0\"]\\\n",
- " .replace({\"Do not know\": np.nan, \"Prefer not to answer\": np.nan})\\\n",
- " .astype(\"category\").cat.set_categories(['Poor', 'Fair', 'Good', 'Excellent'], ordered=True)\n",
- "\n",
- "\n",
- "temp[\"smoking_status_f20116_0_0\"] = temp[\"smoking_status_f20116_0_0\"]\\\n",
- " .replace({\"Prefer not to answer\": np.nan}, inplace=False)\\\n",
- " .astype(\"category\").cat.set_categories(['Current', 'Previous', 'Never'], ordered=True)\n",
- "\n",
- "temp[\"alcohol_intake_frequency_f1558_0_0\"] = temp[\"alcohol_intake_frequency_f1558_0_0\"]\\\n",
- " .replace({\"Prefer not to answer\": np.nan}, inplace=False)\\\n",
- " .astype(\"category\").cat.set_categories([\n",
- " 'Daily or almost daily', \n",
- " 'Three or four times a week', \n",
- " 'Once or twice a week',\n",
- " 'One to three times a month',\n",
- " 'Special occasions only', \n",
- " 'Never'], ordered=True)\n",
- "\n",
- "questionnaire = temp\n",
- "print(len(temp))\n",
- "display(temp.head())\n",
- "\n",
- "questionnaire.to_feather(os.path.join(path, dataset_path, 'temp_questionnaire.feather'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:06.398168Z",
- "start_time": "2020-11-04T12:34:06.391082Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['Once or twice a week', 'Three or four times a week', 'One to three times a month', 'Daily or almost daily', 'Special occasions only', 'Never', NaN]\n",
- "Categories (6, object): ['Daily or almost daily' < 'Three or four times a week' < 'Once or twice a week' < 'One to three times a month' < 'Special occasions only' < 'Never']\n"
- ]
- }
- ],
- "source": [
- "print(temp[\"alcohol_intake_frequency_f1558_0_0\"].unique())"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Physical measurements"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:07.052989Z",
- "start_time": "2020-11-04T12:34:06.400858Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "502504\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " body_mass_index_bmi_f21001_0_0 | \n",
- " weight_f21002_0_0 | \n",
- " pulse_wave_arterial_stiffness_index_f21021_0_0 | \n",
- " pulse_wave_reflection_index_f4195_0_0 | \n",
- " waist_circumference_f48_0_0 | \n",
- " hip_circumference_f49_0_0 | \n",
- " standing_height_f50_0_0 | \n",
- " trunk_fat_percentage_f23127_0_0 | \n",
- " body_fat_percentage_f23099_0_0 | \n",
- " basal_metabolic_rate_f23105_0_0 | \n",
- " forced_vital_capacity_fvc_best_measure_f20151_0_0 | \n",
- " forced_expiratory_volume_in_1second_fev1_best_measure_f20150_0_0 | \n",
- " fev1_fvc_ratio_zscore_f20258_0_0 | \n",
- " peak_expiratory_flow_pef_f3064_0_2 | \n",
- " peak_expiratory_flow_pef_f3064_0_1 | \n",
- " peak_expiratory_flow_pef_f3064_0_0 | \n",
- " systolic_blood_pressure_automated_reading_f4080 | \n",
- " diastolic_blood_pressure_automated_reading_f4079 | \n",
- " pulse_rate_automated_reading_f102 | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " 26.5557 | \n",
- " 63.8 | \n",
- " 7.2770 | \n",
- " 80.0 | \n",
- " 85.0 | \n",
- " 107.0 | \n",
- " 155.0 | \n",
- " 37.5 | \n",
- " 39.5 | \n",
- " 5012.0 | \n",
- " 3.21 | \n",
- " 2.16 | \n",
- " 1.978 | \n",
- " 317.0 | \n",
- " 312.0 | \n",
- " 339.0 | \n",
- " 159.5 | \n",
- " 88.0 | \n",
- " 50.0 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000020 | \n",
- " 22.7465 | \n",
- " 70.7 | \n",
- " NaN | \n",
- " NaN | \n",
- " 87.8 | \n",
- " 94.4 | \n",
- " 176.3 | \n",
- " 33.4 | \n",
- " 28.7 | \n",
- " 6171.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " 1.375 | \n",
- " 301.0 | \n",
- " 496.0 | \n",
- " 504.0 | \n",
- " 133.0 | \n",
- " 81.0 | \n",
- " 74.0 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000037 | \n",
- " 32.4211 | \n",
- " 78.9 | \n",
- " NaN | \n",
- " NaN | \n",
- " 101.0 | \n",
- " 112.0 | \n",
- " 156.0 | \n",
- " 47.5 | \n",
- " 48.4 | \n",
- " 5397.0 | \n",
- " 1.61 | \n",
- " 1.27 | \n",
- " 0.138 | \n",
- " NaN | \n",
- " 185.0 | \n",
- " 208.0 | \n",
- " 118.5 | \n",
- " 78.0 | \n",
- " 62.5 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000043 | \n",
- " 29.5679 | \n",
- " 95.8 | \n",
- " 11.1111 | \n",
- " 78.0 | \n",
- " 98.0 | \n",
- " 104.0 | \n",
- " 180.0 | \n",
- " 27.6 | \n",
- " 25.6 | \n",
- " 8711.0 | \n",
- " 4.14 | \n",
- " 2.84 | \n",
- " 1.096 | \n",
- " 557.0 | \n",
- " 513.0 | \n",
- " 530.0 | \n",
- " 141.5 | \n",
- " 93.5 | \n",
- " 64.5 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000051 | \n",
- " 41.0222 | \n",
- " 92.3 | \n",
- " NaN | \n",
- " NaN | \n",
- " 123.0 | \n",
- " 129.0 | \n",
- " 150.0 | \n",
- " 48.9 | \n",
- " 50.4 | \n",
- " 6100.0 | \n",
- " NaN | \n",
- " NaN | \n",
- " 0.518 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 117.0 | \n",
- " 81.0 | \n",
- " 79.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " eid body_mass_index_bmi_f21001_0_0 weight_f21002_0_0 \\\n",
- "0 1000018 26.5557 63.8 \n",
- "1 1000020 22.7465 70.7 \n",
- "2 1000037 32.4211 78.9 \n",
- "3 1000043 29.5679 95.8 \n",
- "4 1000051 41.0222 92.3 \n",
- "\n",
- " pulse_wave_arterial_stiffness_index_f21021_0_0 \\\n",
- "0 7.2770 \n",
- "1 NaN \n",
- "2 NaN \n",
- "3 11.1111 \n",
- "4 NaN \n",
- "\n",
- " pulse_wave_reflection_index_f4195_0_0 waist_circumference_f48_0_0 \\\n",
- "0 80.0 85.0 \n",
- "1 NaN 87.8 \n",
- "2 NaN 101.0 \n",
- "3 78.0 98.0 \n",
- "4 NaN 123.0 \n",
- "\n",
- " hip_circumference_f49_0_0 standing_height_f50_0_0 \\\n",
- "0 107.0 155.0 \n",
- "1 94.4 176.3 \n",
- "2 112.0 156.0 \n",
- "3 104.0 180.0 \n",
- "4 129.0 150.0 \n",
- "\n",
- " trunk_fat_percentage_f23127_0_0 body_fat_percentage_f23099_0_0 \\\n",
- "0 37.5 39.5 \n",
- "1 33.4 28.7 \n",
- "2 47.5 48.4 \n",
- "3 27.6 25.6 \n",
- "4 48.9 50.4 \n",
- "\n",
- " basal_metabolic_rate_f23105_0_0 \\\n",
- "0 5012.0 \n",
- "1 6171.0 \n",
- "2 5397.0 \n",
- "3 8711.0 \n",
- "4 6100.0 \n",
- "\n",
- " forced_vital_capacity_fvc_best_measure_f20151_0_0 \\\n",
- "0 3.21 \n",
- "1 NaN \n",
- "2 1.61 \n",
- "3 4.14 \n",
- "4 NaN \n",
- "\n",
- " forced_expiratory_volume_in_1second_fev1_best_measure_f20150_0_0 \\\n",
- "0 2.16 \n",
- "1 NaN \n",
- "2 1.27 \n",
- "3 2.84 \n",
- "4 NaN \n",
- "\n",
- " fev1_fvc_ratio_zscore_f20258_0_0 peak_expiratory_flow_pef_f3064_0_2 \\\n",
- "0 1.978 317.0 \n",
- "1 1.375 301.0 \n",
- "2 0.138 NaN \n",
- "3 1.096 557.0 \n",
- "4 0.518 NaN \n",
- "\n",
- " peak_expiratory_flow_pef_f3064_0_1 peak_expiratory_flow_pef_f3064_0_0 \\\n",
- "0 312.0 339.0 \n",
- "1 496.0 504.0 \n",
- "2 185.0 208.0 \n",
- "3 513.0 530.0 \n",
- "4 NaN NaN \n",
- "\n",
- " systolic_blood_pressure_automated_reading_f4080 \\\n",
- "0 159.5 \n",
- "1 133.0 \n",
- "2 118.5 \n",
- "3 141.5 \n",
- "4 117.0 \n",
- "\n",
- " diastolic_blood_pressure_automated_reading_f4079 \\\n",
- "0 88.0 \n",
- "1 81.0 \n",
- "2 78.0 \n",
- "3 93.5 \n",
- "4 81.0 \n",
- "\n",
- " pulse_rate_automated_reading_f102 \n",
- "0 50.0 \n",
- "1 74.0 \n",
- "2 62.5 \n",
- "3 64.5 \n",
- "4 79.0 "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "from statistics import mean\n",
- "\n",
- "fields_measurements = [\n",
- "# \"100313\", # Walking speed !!! MISSING !!!\n",
- " \"21001\", # BMI\n",
- " \"21002\", # weight\n",
- " \"4080\", # Syst. BP\n",
- " \"4079\", # Diast. BP\n",
- " \"102\",\n",
- " \"21021\",\n",
- " \"4195\",\n",
- " \"48\",\n",
- " \"49\",\n",
- " \"50\",\n",
- " \"23127\",\n",
- " \"23099\",\n",
- " \"23105\",\n",
- " \"20151\",\n",
- " \"20150\",\n",
- " \"20258\",\n",
- " \"3064\",\n",
- " \n",
- "]\n",
- "temp = get_data_fields(fields_measurements, data, data_field)\n",
- "\n",
- "sbp_cols = [\"systolic_blood_pressure_automated_reading_f4080_0_0\", \"systolic_blood_pressure_automated_reading_f4080_0_1\"]\n",
- "dbp_cols = [\"diastolic_blood_pressure_automated_reading_f4079_0_0\", \"diastolic_blood_pressure_automated_reading_f4079_0_1\"]\n",
- "pr_cols = [\"pulse_rate_automated_reading_f102_0_0\", \"pulse_rate_automated_reading_f102_0_1\"]\n",
- "\n",
- "temp = temp.assign(systolic_blood_pressure_automated_reading_f4080 = temp[sbp_cols].mean(axis=1),\n",
- " diastolic_blood_pressure_automated_reading_f4079 = temp[dbp_cols].mean(axis=1),\n",
- " pulse_rate_automated_reading_f102 = temp[pr_cols].mean(axis=1))\\\n",
- " .drop(sbp_cols + dbp_cols + pr_cols, axis=1)\n",
- "\n",
- "measurements = temp\n",
- "print(len(temp))\n",
- "display(temp.head())\n",
- "\n",
- "measurements.to_feather(os.path.join(path, dataset_path, 'temp_measurements.feather'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Lab measurements"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:07.647955Z",
- "start_time": "2020-11-04T12:34:07.055242Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "502504\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " basophill_count_f30160_0_0 | \n",
- " basophill_percentage_f30220_0_0 | \n",
- " eosinophill_count_f30150_0_0 | \n",
- " eosinophill_percentage_f30210_0_0 | \n",
- " haematocrit_percentage_f30030_0_0 | \n",
- " haemoglobin_concentration_f30020_0_0 | \n",
- " high_light_scatter_reticulocyte_count_f30300_0_0 | \n",
- " high_light_scatter_reticulocyte_percentage_f30290_0_0 | \n",
- " immature_reticulocyte_fraction_f30280_0_0 | \n",
- " ... | \n",
- " phosphate_f30810_0_0 | \n",
- " rheumatoid_factor_f30820_0_0 | \n",
- " shbg_f30830_0_0 | \n",
- " testosterone_f30850_0_0 | \n",
- " total_bilirubin_f30840_0_0 | \n",
- " total_protein_f30860_0_0 | \n",
- " triglycerides_f30870_0_0 | \n",
- " urate_f30880_0_0 | \n",
- " urea_f30670_0_0 | \n",
- " vitamin_d_f30890_0_0 | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " 0.04 | \n",
- " 0.26 | \n",
- " 0.25 | \n",
- " 1.75 | \n",
- " 39.79 | \n",
- " 13.90 | \n",
- " 0.022 | \n",
- " 0.464 | \n",
- " 0.378 | \n",
- " ... | \n",
- " 1.422 | \n",
- " NaN | \n",
- " 70.11 | \n",
- " 1.560 | \n",
- " 7.41 | \n",
- " 71.97 | \n",
- " 1.247 | \n",
- " 221.3 | \n",
- " 5.48 | \n",
- " 70.7 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000020 | \n",
- " 0.00 | \n",
- " 0.30 | \n",
- " 0.30 | \n",
- " 2.50 | \n",
- " 45.00 | \n",
- " 15.60 | \n",
- " 0.014 | \n",
- " 0.290 | \n",
- " 0.300 | \n",
- " ... | \n",
- " 1.264 | \n",
- " NaN | \n",
- " 55.31 | \n",
- " 12.237 | \n",
- " 8.07 | \n",
- " 78.45 | \n",
- " 1.906 | \n",
- " 374.7 | \n",
- " 5.28 | \n",
- " 35.9 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000037 | \n",
- " 0.04 | \n",
- " 0.57 | \n",
- " 0.10 | \n",
- " 1.43 | \n",
- " 39.48 | \n",
- " 13.58 | \n",
- " 0.031 | \n",
- " 0.686 | \n",
- " 0.380 | \n",
- " ... | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000043 | \n",
- " 0.02 | \n",
- " 0.32 | \n",
- " 0.11 | \n",
- " 1.80 | \n",
- " 44.31 | \n",
- " 14.99 | \n",
- " 0.025 | \n",
- " 0.508 | \n",
- " 0.250 | \n",
- " ... | \n",
- " 0.928 | \n",
- " NaN | \n",
- " 31.63 | \n",
- " 11.398 | \n",
- " 8.65 | \n",
- " 69.70 | \n",
- " 5.184 | \n",
- " 322.8 | \n",
- " 6.67 | \n",
- " 63.6 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000051 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " ... | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- "
\n",
- " \n",
- "
\n",
- "
5 rows × 62 columns
\n",
- "
"
- ],
- "text/plain": [
- " eid basophill_count_f30160_0_0 basophill_percentage_f30220_0_0 \\\n",
- "0 1000018 0.04 0.26 \n",
- "1 1000020 0.00 0.30 \n",
- "2 1000037 0.04 0.57 \n",
- "3 1000043 0.02 0.32 \n",
- "4 1000051 NaN NaN \n",
- "\n",
- " eosinophill_count_f30150_0_0 eosinophill_percentage_f30210_0_0 \\\n",
- "0 0.25 1.75 \n",
- "1 0.30 2.50 \n",
- "2 0.10 1.43 \n",
- "3 0.11 1.80 \n",
- "4 NaN NaN \n",
- "\n",
- " haematocrit_percentage_f30030_0_0 haemoglobin_concentration_f30020_0_0 \\\n",
- "0 39.79 13.90 \n",
- "1 45.00 15.60 \n",
- "2 39.48 13.58 \n",
- "3 44.31 14.99 \n",
- "4 NaN NaN \n",
- "\n",
- " high_light_scatter_reticulocyte_count_f30300_0_0 \\\n",
- "0 0.022 \n",
- "1 0.014 \n",
- "2 0.031 \n",
- "3 0.025 \n",
- "4 NaN \n",
- "\n",
- " high_light_scatter_reticulocyte_percentage_f30290_0_0 \\\n",
- "0 0.464 \n",
- "1 0.290 \n",
- "2 0.686 \n",
- "3 0.508 \n",
- "4 NaN \n",
- "\n",
- " immature_reticulocyte_fraction_f30280_0_0 ... phosphate_f30810_0_0 \\\n",
- "0 0.378 ... 1.422 \n",
- "1 0.300 ... 1.264 \n",
- "2 0.380 ... NaN \n",
- "3 0.250 ... 0.928 \n",
- "4 NaN ... NaN \n",
- "\n",
- " rheumatoid_factor_f30820_0_0 shbg_f30830_0_0 testosterone_f30850_0_0 \\\n",
- "0 NaN 70.11 1.560 \n",
- "1 NaN 55.31 12.237 \n",
- "2 NaN NaN NaN \n",
- "3 NaN 31.63 11.398 \n",
- "4 NaN NaN NaN \n",
- "\n",
- " total_bilirubin_f30840_0_0 total_protein_f30860_0_0 \\\n",
- "0 7.41 71.97 \n",
- "1 8.07 78.45 \n",
- "2 NaN NaN \n",
- "3 8.65 69.70 \n",
- "4 NaN NaN \n",
- "\n",
- " triglycerides_f30870_0_0 urate_f30880_0_0 urea_f30670_0_0 \\\n",
- "0 1.247 221.3 5.48 \n",
- "1 1.906 374.7 5.28 \n",
- "2 NaN NaN NaN \n",
- "3 5.184 322.8 6.67 \n",
- "4 NaN NaN NaN \n",
- "\n",
- " vitamin_d_f30890_0_0 \n",
- "0 70.7 \n",
- "1 35.9 \n",
- "2 NaN \n",
- "3 63.6 \n",
- "4 NaN \n",
- "\n",
- "[5 rows x 62 columns]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fields_blood_count = [\n",
- " \"30160\", #\tBasophill count\n",
- " \"30220\", #\tBasophill percentage\n",
- " \"30150\", #\tEosinophill count\n",
- " \"30210\", #\tEosinophill percentage\n",
- " \"30030\", #\tHaematocrit percentage\n",
- " \"30020\", #\tHaemoglobin concentration\n",
- " \"30300\", #\tHigh light scatter reticulocyte count\n",
- " \"30290\", #\tHigh light scatter reticulocyte percentage\n",
- " \"30280\", #\tImmature reticulocyte fraction\n",
- " \"30120\", #\tLymphocyte count\n",
- " \"30180\", #\tLymphocyte percentage\n",
- " \"30050\", #\tMean corpuscular haemoglobin\n",
- " \"30060\", #\tMean corpuscular haemoglobin concentration\n",
- " \"30040\", #\tMean corpuscular volume\n",
- " \"30100\", #\tMean platelet (thrombocyte) volume\n",
- " \"30260\", #\tMean reticulocyte volume\n",
- " \"30270\", #\tMean sphered cell volume\n",
- " \"30130\", #\tMonocyte count\n",
- " \"30190\", #\tMonocyte percentage\n",
- " \"30140\", #\tNeutrophill count\n",
- " \"30200\", #\tNeutrophill percentage\n",
- " \"30170\", #\tNucleated red blood cell count\n",
- " \"30230\", #\tNucleated red blood cell percentage\n",
- " \"30080\", #\tPlatelet count\n",
- " \"30090\", #\tPlatelet crit\n",
- " \"30110\", #\tPlatelet distribution width\n",
- " \"30010\", #\tRed blood cell (erythrocyte) count\n",
- " \"30070\", #\tRed blood cell (erythrocyte) distribution width\n",
- " \"30250\", #\tReticulocyte count\n",
- " \"30240\", #\tReticulocyte percentage\n",
- " \"30000\", #\tWhite blood cell (leukocyte) count\n",
- "]\n",
- "\n",
- "fields_blood_biochemistry = [\n",
- " \"30620\",#\tAlanine aminotransferase\n",
- " \"30600\",#\tAlbumin\n",
- " \"30610\",#\tAlkaline phosphatase\n",
- " \"30630\",#\tApolipoprotein A\n",
- " \"30640\",#\tApolipoprotein B\n",
- " \"30650\",#\tAspartate aminotransferase\n",
- " \"30710\",#\tC-reactive protein\n",
- " \"30680\",#\tCalcium\n",
- " \"30690\",#\tCholesterol\n",
- " \"30700\",#\tCreatinine\n",
- " \"30720\",#\tCystatin C\n",
- " \"30660\",#\tDirect bilirubin\n",
- " \"30730\",#\tGamma glutamyltransferase\n",
- " \"30740\",#\tGlucose\n",
- " \"30750\",#\tGlycated haemoglobin (HbA1c)\n",
- " \"30760\",#\tHDL cholesterol\n",
- " \"30770\",#\tIGF-1\n",
- " \"30780\",#\tLDL direct\n",
- " \"30790\",#\tLipoprotein A\n",
- " \"30800\",#\tOestradiol\n",
- " \"30810\",#\tPhosphate\n",
- " \"30820\",#\tRheumatoid factor\n",
- " \"30830\",#\tSHBG\n",
- " \"30850\",#\tTestosterone\n",
- " \"30840\",#\tTotal bilirubin\n",
- " \"30860\",#\tTotal protein\n",
- " \"30870\",#\tTriglycerides\n",
- " \"30880\",#\tUrate\n",
- " \"30670\",#\tUrea\n",
- " \"30890\",#\tVitamin D\n",
- "]\n",
- "\n",
- "fields_blood_infectious = [\n",
- " \"23000\", #\t1gG antigen for Herpes Simplex virus-1\n",
- " \"23001\", #\t2mgG unique antigen for Herpes Simplex virus-2\n",
- " \"23049\", #\tAntigen assay QC indicator\n",
- " \"23048\", #\tAntigen assay date\n",
- " \"23026\", #\tBK VP1 antigen for Human Polyomavirus BKV\n",
- " \"23039\", #\tCagA antigen for Helicobacter pylori\n",
- " \"23043\", #\tCatalase antigen for Helicobacter pylori\n",
- " \"23018\", #\tCore antigen for Hepatitis C Virus\n",
- " \"23030\", #\tE6 antigen for Human Papillomavirus type-16\n",
- " \"23031\", #\tE7 antigen for Human Papillomavirus type-16\n",
- " \"23006\", #\tEA-D antigen for Epstein-Barr Virus\n",
- " \"23004\", #\tEBNA-1 antigen for Epstein-Barr Virus\n",
- " \"23042\", #\tGroEL antigen for Helicobacter pylori\n",
- " \"23016\", #\tHBc antigen for Hepatitis B Virus\n",
- " \"23017\", #\tHBe antigen for Hepatitis B Virus\n",
- " \"23025\", #\tHIV-1 env antigen for Human Immunodeficiency Virus\n",
- " \"23024\", #\tHIV-1 gag antigen for Human Immunodeficiency Virus\n",
- " \"23023\", #\tHTLV-1 env antigen for Human T-Lymphotropic Virus 1\n",
- " \"23022\", #\tHTLV-1 gag antigen for Human T-Lymphotropic Virus 1\n",
- " \"23010\", #\tIE1A antigen for Human Herpesvirus-6\n",
- " \"23011\", #\tIE1B antigen for Human Herpesvirus-6\n",
- " \"23027\", #\tJC VP1 antigen for Human Polyomavirus JCV\n",
- " \"23015\", #\tK8.1 antigen for Kaposi's Sarcoma-Associated Herpesvirus\n",
- " \"23029\", #\tL1 antigen for Human Papillomavirus type-16\n",
- " \"23032\", #\tL1 antigen for Human Papillomavirus type-18\n",
- " \"23014\", #\tLANA antigen for Kaposi's Sarcoma-Associated Herpesvirus\n",
- " \"23028\", #\tMC VP1 antigen for Merkel Cell Polyomavirus\n",
- " \"23019\", #\tNS3 antigen for Hepatitis C Virus\n",
- " \"23041\", #\tOMP antigen for Helicobacter pylori\n",
- " \"23037\", #\tPorB antigen for Chlamydia trachomatis\n",
- " \"23013\", #\tU14 antigen for Human Herpesvirus-7\n",
- " \"23044\", #\tUreA antigen for Helicobacter pylori\n",
- " \"23003\", #\tVCA p18 antigen for Epstein-Barr Virus\n",
- " \"23040\", #\tVacA antigen for Helicobacter pylori\n",
- " \"23005\", #\tZEBRA antigen for Epstein-Barr Virus\n",
- " \"23002\", #\tgE / gI antigen for Varicella Zoster Virus\n",
- " \"23034\", #\tmomp A antigen for Chlamydia trachomatis\n",
- " \"23033\", #\tmomp D antigen for Chlamydia trachomatis\n",
- " \"23012\", #\tp101 k antigen for Human Herpesvirus-6\n",
- " \"23020\", #\tp22 antigen for Toxoplasma gondii\n",
- " \"23038\", #\tpGP3 antigen for Chlamydia trachomatis\n",
- " \"23009\", #\tpp 28 antigen for Human Cytomegalovirus\n",
- " \"23008\", #\tpp 52 antigen for Human Cytomegalovirus\n",
- " \"23007\", #\tpp150 Nter antigen for Human Cytomegalovirus\n",
- " \"23021\", #\tsag1 antigen for Toxoplasma gondii\n",
- " \"23035\", #\ttarp-D F1 antigen for Chlamydia trachomatis\n",
- " \"23036\", #\ttarp-D F2 antigen for Chlamydia trachomatis\n",
- "]\n",
- "\n",
- "labs = temp = get_data_fields(fields_blood_count+fields_blood_biochemistry+fields_blood_infectious, data, data_field)\n",
- "print(len(temp))\n",
- "display(temp.head())\n",
- "\n",
- "labs.to_feather(os.path.join(path, dataset_path, 'temp_labs.feather'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Family History"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:25.838958Z",
- "start_time": "2020-11-04T12:34:07.649920Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "502504\n"
- ]
- }
- ],
- "source": [
- "fh_list=[\"Heart disease\", \"Stroke\", \"High blood pressure\", \"Diabetes\", \"Lung cancer\", \"Severe depression\", \"Parkinson's disease\", \"Alzheimer's disease/dementia\", \"Chronic bronchitis/emphysema\", \"Breast cancer\", \"Bowel cancer\"]\n",
- "with open(os.path.join(path, dataset_path, 'fh_list.yaml'), 'w') as file: yaml.dump(fh_list, file, default_flow_style=False)\n",
- "\n",
- "fields_family_history = [\n",
- " \"20107\", # Family history \n",
- " \"20110\" # Family history\n",
- "]\n",
- "\n",
- "raw = get_data_fields(fields_family_history, data, data_field)\n",
- "temp = pd.melt(raw, id_vars=[\"eid\"], value_vars=raw.drop(\"eid\", axis=1).columns.to_list(), var_name = \"field\", value_name=\"family_history\").drop(\"field\", axis=1)\n",
- "temp = temp[temp.family_history.isin(fh_list)].assign(family_history=temp[\"family_history\"].str.lower().replace(\" \", \"_\", regex=True))\n",
- "\n",
- "temp = temp.drop_duplicates().sort_values(\"eid\").reset_index().drop(\"index\", axis=1).assign(n=True)\n",
- "temp = pd.pivot_table(temp, index=\"eid\", columns=\"family_history\", values=\"n\", observed=True).add_prefix('fh_')\n",
- "family_history = temp = data[[\"eid\"]].copy().merge(temp, how=\"left\", on=\"eid\").fillna(False)\n",
- "\n",
- "print(len(temp))\n",
- "temp.head()\n",
- "\n",
- "family_history.to_feather(os.path.join(path, dataset_path, 'temp_family_history.feather'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Medications"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:25.842601Z",
- "start_time": "2020-11-04T12:34:25.840607Z"
- }
- },
- "outputs": [],
- "source": [
- "# https://list.essentialmeds.org/?showRemoved=0\n",
- "# essential medicines WHO?!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:32.471831Z",
- "start_time": "2020-11-04T12:34:25.844339Z"
- }
- },
- "outputs": [],
- "source": [
- "atc_mapping = pd.read_csv(f\"{path}/mapping/atc/atc_matched_list.csv\")\n",
- "athena_concepts = pd.read_csv(f\"{data_path}/athena_vocabulary/CONCEPT.csv\", sep=\"\\t\").assign(vocabulary_id = lambda x: x.vocabulary_id.astype(\"string\"), concept_class_id = lambda x: x.concept_class_id.astype(\"string\"))\n",
- "atc_concepts = athena_concepts[athena_concepts.vocabulary_id==\"ATC\"]\n",
- "atc2_concepts = atc_concepts[atc_concepts.concept_class_id==\"ATC 2nd\"].sort_values(\"concept_code\")\n",
- "medication_list = dict(zip([x.lower().replace(\" \", \"_\") for x in atc2_concepts.concept_name.to_list()], [[x] for x in atc2_concepts.concept_code.to_list()]))\n",
- "medication_list_extra = {\n",
- " \"antihypertensives\": [\"C02\"],\n",
- " \"statins\": [\"C10A\", \"C10B\"],\n",
- " \"ass\": [\"B01\"],\n",
- " \"atypical_antipsychotics\" : [\"N05\"],\n",
- " \"glucocorticoids\" : [\"H02\"] \n",
- "}\n",
- "medication_list.update(medication_list_extra)\n",
- "\n",
- "with open(os.path.join(path, dataset_path, 'medication_list.yaml'), 'w') as file: yaml.dump(medication_list, file, default_flow_style=False)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:34:32.481137Z",
- "start_time": "2020-11-04T12:34:32.473698Z"
- }
- },
- "outputs": [],
- "source": [
- "def had_medication_before(data, data_field, medications, atc_mapping):\n",
- " fields = [\"20003\"]\n",
- " raw = get_data_fields(fields, data, data_field)\n",
- " temp = pd.melt(raw, id_vars=[\"eid\"], value_vars=raw.drop(\"eid\", axis=1).columns.to_list(), var_name = \"field\", value_name=\"UKBB_code\").drop(\"field\", axis=1).drop_duplicates()\n",
- "\n",
- " temp.UKBB_code = temp.UKBB_code.astype(str)\n",
- " temp = temp[temp.UKBB_code!=\"None\"].copy()\n",
- " temp = temp[temp.UKBB_code!=\"nan\"].copy()\n",
- " temp.UKBB_code = temp.UKBB_code.astype(int)\n",
- "\n",
- " temp_atc = temp.merge(atc_mapping, how=\"left\", on=\"UKBB_code\").sort_values(\"eid\").reset_index(drop=True).dropna(subset=[\"ATC_code\"], axis=0)\n",
- " temp_atc.ATC_code = temp_atc.ATC_code.astype(\"string\")\n",
- " temp = data[[\"eid\"]].copy()\n",
- " for med, med_codes in tqdm(medication_list.items()):\n",
- " regex_str = \"^\"+\"|^\".join(med_codes)\n",
- " df = temp_atc[temp_atc.ATC_code.str.contains(regex_str, case=False)][[\"eid\"]]\\\n",
- " .drop_duplicates(subset=[\"eid\"])\\\n",
- " .assign(medication=True)\n",
- " temp[med] = temp.merge(df, how=\"left\", on=\"eid\").fillna(False).medication\n",
- " \n",
- " return temp.sort_values(\"eid\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:36:14.425612Z",
- "start_time": "2020-11-04T12:34:32.482863Z"
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "4ea3a79139e04f94a00e3a35c527fa25",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=98.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "502504\n"
- ]
- }
- ],
- "source": [
- "medications = had_medication_before(data, data_field, medication_list, atc_mapping)\n",
- "print(len(medications))\n",
- "medications.head(10)\n",
- "\n",
- "medications.to_feather(os.path.join(path, dataset_path, 'temp_medications.feather'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Diagnoses and events"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:37:14.667281Z",
- "start_time": "2020-11-04T12:36:14.427693Z"
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/data/analysis/ag-reils/ag-reils-shared/deps/miniconda3/envs/pl1.x/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3146: DtypeWarning: Columns (5,6,9) have mixed types.Specify dtype option on import or set low_memory=False.\n",
- " interactivity=interactivity, compiler=compiler, result=result)\n",
- "/data/analysis/ag-reils/ag-reils-shared/deps/miniconda3/envs/pl1.x/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3146: DtypeWarning: Columns (11) have mixed types.Specify dtype option on import or set low_memory=False.\n",
- " interactivity=interactivity, compiler=compiler, result=result)\n"
- ]
- }
- ],
- "source": [
- "vocab_dir = f\"{data_path}/athena_vocabulary_covid\"\n",
- "vocab = {\n",
- " \"concept\": pd.read_csv(f\"{vocab_dir}/CONCEPT.csv\", sep='\\t'),\n",
- " \"domain\": pd.read_csv(f\"{vocab_dir}/DOMAIN.csv\", sep='\\t'),\n",
- " \"class\": pd.read_csv(f\"{vocab_dir}/CONCEPT_CLASS.csv\", sep='\\t'),\n",
- " \"relationship\": pd.read_csv(f\"{vocab_dir}/RELATIONSHIP.csv\", sep='\\t'),\n",
- " \"drug_strength\": pd.read_csv(f\"{vocab_dir}/DRUG_STRENGTH.csv\", sep='\\t'),\n",
- " \"vocabulary\": pd.read_csv(f\"{vocab_dir}/VOCABULARY.csv\", sep='\\t'),\n",
- " \"concept_synonym\": pd.read_csv(f\"{vocab_dir}/CONCEPT_SYNONYM.csv\", sep='\\t'),\n",
- " \"concept_ancestor\": pd.read_csv(f\"{vocab_dir}/CONCEPT_ANCESTOR.csv\", sep='\\t'),\n",
- " \"concept_relationship\": pd.read_csv(f\"{vocab_dir}/CONCEPT_RELATIONSHIP.csv\", sep='\\t') \n",
- "}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Definitions"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:37:14.772869Z",
- "start_time": "2020-11-04T12:37:14.669541Z"
- }
- },
- "outputs": [],
- "source": [
- "coding1836 = pd.read_csv(f\"{path}/mapping/codings/coding1836.tsv\", sep=\"\\t\").rename(columns={\"coding\":\"code\"})\n",
- "phecodes = pd.read_csv(f\"{path}/mapping/phecodes/phecode_icd10.csv\")\n",
- "def phenotype_children(phecodes, phenotype_list):\n",
- " l={}\n",
- " phecodes = phecodes.dropna(subset=[\"Phenotype\"], axis=0)\n",
- " for ph, ph_names in phenotype_list.items():\n",
- " regex = \"|\".join(ph_names)\n",
- " l[ph] = list(phecodes[phecodes.Phenotype.str.contains(regex, case=False)].ICD10.str.replace(\"\\\\.\", \"\").str.slice(0, 3).unique())\n",
- " return l"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:37:14.851438Z",
- "start_time": "2020-11-04T12:37:14.774599Z"
- }
- },
- "outputs": [],
- "source": [
- "snomed_core = pd.read_csv(f\"{path}/mapping/snomed_core_list.txt\", sep=\"|\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:37:14.909023Z",
- "start_time": "2020-11-04T12:37:14.853286Z"
- }
- },
- "outputs": [],
- "source": [
- "snomed_core = snomed_core.query(\"SNOMED_CONCEPT_STATUS == 'Current'\").copy()\n",
- "new = snomed_core.SNOMED_FSN.str.split(\"(\", n=1, expand=True)\n",
- "snomed_core[\"snomed_name\"] = new[0].str.rstrip(' ')\n",
- "snomed_core[\"snomed_type\"] = new[1].str.rstrip(')')\n",
- "snomed_core_data = snomed_core#.query(\"(snomed_type=='disorder' | snomed_type=='finding') & USAGE>0.01\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:37:14.914973Z",
- "start_time": "2020-11-04T12:37:14.910857Z"
- }
- },
- "outputs": [],
- "source": [
- "snomed_names = snomed_core_data.snomed_name.to_list()\n",
- "snomed_names = [str(item).lower().strip().replace(\" \", \"_\").replace(\";\", \"\").replace(\",\", \"\") for item in snomed_names]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {},
- "outputs": [],
- "source": [
- "phenotype_list_snomed = dict(zip(snomed_names, snomed_core_data.SNOMED_CID.to_list()))\n",
- "snomed_df = pd.DataFrame.from_dict(phenotype_list_snomed, orient='index').reset_index()\n",
- "snomed_df.columns = [\"diagnosis\", \"concept_code\"]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " ancestor_concept_id | \n",
- " descendant_concept_id | \n",
- " min_levels_of_separation | \n",
- " max_levels_of_separation | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 375415 | \n",
- " 4335743 | \n",
- " 4 | \n",
- " 4 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 735979 | \n",
- " 41070383 | \n",
- " 3 | \n",
- " 5 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 529411 | \n",
- " 43269406 | \n",
- " 3 | \n",
- " 3 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 141960 | \n",
- " 200164 | \n",
- " 3 | \n",
- " 6 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 441840 | \n",
- " 4096781 | \n",
- " 4 | \n",
- " 12 | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 63586490 | \n",
- " 45893522 | \n",
- " 35412270 | \n",
- " 2 | \n",
- " 2 | \n",
- "
\n",
- " \n",
- " 63586491 | \n",
- " 45893522 | \n",
- " 46275678 | \n",
- " 1 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 63586492 | \n",
- " 45893522 | \n",
- " 46275680 | \n",
- " 2 | \n",
- " 3 | \n",
- "
\n",
- " \n",
- " 63586493 | \n",
- " 45893522 | \n",
- " 46275683 | \n",
- " 1 | \n",
- " 2 | \n",
- "
\n",
- " \n",
- " 63586494 | \n",
- " 45893522 | \n",
- " 46275684 | \n",
- " 2 | \n",
- " 3 | \n",
- "
\n",
- " \n",
- "
\n",
- "
63586495 rows × 4 columns
\n",
- "
"
- ],
- "text/plain": [
- " ancestor_concept_id descendant_concept_id \\\n",
- "0 375415 4335743 \n",
- "1 735979 41070383 \n",
- "2 529411 43269406 \n",
- "3 141960 200164 \n",
- "4 441840 4096781 \n",
- "... ... ... \n",
- "63586490 45893522 35412270 \n",
- "63586491 45893522 46275678 \n",
- "63586492 45893522 46275680 \n",
- "63586493 45893522 46275683 \n",
- "63586494 45893522 46275684 \n",
- "\n",
- " min_levels_of_separation max_levels_of_separation \n",
- "0 4 4 \n",
- "1 3 5 \n",
- "2 3 3 \n",
- "3 3 6 \n",
- "4 4 12 \n",
- "... ... ... \n",
- "63586490 2 2 \n",
- "63586491 1 1 \n",
- "63586492 2 3 \n",
- "63586493 1 2 \n",
- "63586494 2 3 \n",
- "\n",
- "[63586495 rows x 4 columns]"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "vocab[\"concept_ancestor\"]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {},
- "outputs": [],
- "source": [
- "concept_ids = vocab[\"concept\"].query(\"(vocabulary_id == 'SNOMED') | (vocabulary_id == 'ICD10CM')\")\n",
- "concept_ids_icd10 = vocab[\"concept\"].query(\"vocabulary_id == 'ICD10CM'\").concept_id.to_list()\n",
- "vocab_concept_ids = concept_ids.concept_id.to_list()\n",
- "concept_ancestor = vocab[\"concept_ancestor\"][[\"ancestor_concept_id\", \"descendant_concept_id\"]].query(\"ancestor_concept_id == @vocab_concept_ids\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {},
- "outputs": [],
- "source": [
- "concept_rel = vocab[\"concept_relationship\"][[\"concept_id_1\", \"concept_id_2\", \"relationship_id\"]].query(\"(concept_id_1 == @vocab_concept_ids) & (concept_id_2 == @concept_ids_icd10) & (relationship_id == 'Mapped from')\")\n",
- "concept_mapping = concept_rel.rename(columns={\"concept_id_2\":\"concept_id\"}).merge(concept_ids, on=\"concept_id\").query(\"vocabulary_id == 'ICD10CM'\")[[\"concept_id_1\", \"concept_code\"]].rename(columns={\"concept_id_1\":\"concept_id_desc\",\"concept_code\":\"icd10\"})"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {},
- "outputs": [],
- "source": [
- "df_snomed_concept_id = snomed_df.merge(concept_ids[[\"concept_code\", \"concept_id\"]], on=\"concept_code\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {},
- "outputs": [],
- "source": [
- "#df_desc = df_snomed_concept_id.merge(concept_ancestor.rename(columns={\"ancestor_concept_id\":\"concept_id\"})[[\"concept_id\", \"descendant_concept_id\"]], on=\"concept_id\")\n",
- "#df_desc = df_desc[[\"diagnosis\", \"concept_code\", \"concept_id\", \"descendant_concept_id\"]].rename(columns={\"descendant_concept_id\":\"concept_id_desc\"})\n",
- "#df_desc_codes = df_desc.merge(concept_ids[[\"concept_id\", \"concept_code\"]].rename(columns={\"concept_id\":\"concept_id_desc\", \"concept_code\":\"concept_codes_desc\"}), on=\"concept_id_desc\").drop_duplicates().sort_values(\"concept_code\")\n",
- "#df_desc_icd = df_desc_codes.merge(concept_mapping, on=\"concept_id_desc\")#.rename(columns={\"concept_id\":\"concept_id_desc\", \"concept_code\":\"concept_codes_desc\"}))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {},
- "outputs": [],
- "source": [
- "df_icd = df_snomed_concept_id.merge(concept_mapping.rename(columns={\"concept_id_desc\":\"concept_id\"}), on=\"concept_id\")\n",
- "df_mapped = df_icd[[\"diagnosis\", \"concept_code\", \"icd10\"]].drop_duplicates()\n",
- "df_mapped[\"icd10\"] = df_mapped[\"icd10\"].str.replace(\".\", \"\")\n",
- "df_mapped[\"meaning\"] = [e[:3] for e in df_mapped[\"icd10\"].to_list()]\n",
- "icd10_codes = dict(df_mapped[[\"diagnosis\", \"meaning\"]].drop_duplicates().groupby(\"diagnosis\")[\"meaning\"].apply(list).to_dict())#set_index(\"diagnosis\", drop=True).to_dict()[\"meaning\"]#.sort_values(\"diagnosis\")"
- ]
- },
- {
- "cell_type": "raw",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:39:55.342937Z",
- "start_time": "2020-11-04T12:37:14.916906Z"
- }
- },
- "source": [
- "phenotype_list_snomed = dict(zip(snomed_names, snomed_core_data.SNOMED_CID.to_list()))\n",
- "snomed_ids = vocab[\"concept\"].query(\"vocabulary_id == 'SNOMED'\").concept_id.to_list()\n",
- "icd10_ids = vocab[\"concept\"].query(\"vocabulary_id == 'ICD10CM'\").concept_id.to_list()\n",
- "\n",
- "ph_to_icd10_mapping = {}\n",
- "\n",
- "def map_snomed_to_icd10(ph, snomed_code, concept, concept_ancestor, concept_relationship):\n",
- " concept_ids = concept.query(\"vocabulary_id == 'SNOMED' & concept_code == @snomed_code\").concept_id.to_list()\n",
- " snomed_desc_ids = concept_ancestor.query(\"ancestor_concept_id== @concept_ids\").descendant_concept_id.to_list()\n",
- " ph_desc = concept.query(\"concept_id == @snomed_desc_ids\").query(\"vocabulary_id == 'SNOMED'\")\n",
- " l_ph_desc_ids = ph_desc.concept_id.to_list()\n",
- " ph_icd10_ids = list(concept_relationship.query(\"concept_id_1==@l_ph_desc_ids\").query(\"concept_id_2 == @icd10_ids\").concept_id_2.unique())\n",
- " #ph_icd10_ids = list(concept_relationship.set_index(\"concept_id_1\").query(\"index==@l_ph_desc_ids\").query(\"concept_id_2 == @icd10_ids\").query(\"relationship_id == 'Mapped from'\").concept_id_2.unique()\n",
- " \n",
- " #ph_icd10_ids = list(temp.concept_id_2.unique())\n",
- " df = concept.query(\"concept_id == @ph_icd10_ids & vocabulary_id == 'ICD10CM'\")\n",
- " icd10_list = list(df[~df.concept_code.str.contains(\"OMOP\", na=False)].concept_code.unique())\n",
- " icd10_list = sorted(list(set([e[:3] for e in icd10_list])))\n",
- " #print(f\"{ph}: {icd10_list}\")\n",
- " return {ph: sorted(list(dict.fromkeys([str(e) for e in icd10_list])))}\n",
- "\n",
- "from joblib import Parallel, delayed\n",
- "concept_ids = vocab[\"concept\"].query(\"(vocabulary_id == 'SNOMED') | (vocabulary_id == 'ICD10CM')\")\n",
- "vocab_concept_ids = concept_ids.concept_id.to_list()\n",
- "concept_ancestor = vocab[\"concept_ancestor\"][[\"ancestor_concept_id\", \"descendant_concept_id\"]].query(\"ancestor_concept_id == @vocab_concept_ids\")\n",
- "concept_rel = vocab[\"concept_relationship\"][[\"concept_id_1\", \"concept_id_2\", \"relationship_id\"]].query(\"(concept_id_1 == @vocab_concept_ids) & (concept_id_2 == @vocab_concept_ids) & (relationship_id == 'Mapped from')\")\n",
- "icd10_codes = Parallel(n_jobs=10, require=\"sharedmem\")(delayed(map_snomed_to_icd10)(ph, snomed_code, \n",
- " concept_ids, concept_ancestor, concept_rel) for ph, snomed_code in tqdm(phenotype_list_snomed.items()))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:39:55.348009Z",
- "start_time": "2020-11-04T12:39:55.344704Z"
- }
- },
- "outputs": [],
- "source": [
- "l10_snomed = {}\n",
- "for ph in icd10_codes: l10_snomed.update({ph:icd10_codes[ph]})"
- ]
- },
- {
- "cell_type": "raw",
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:39:55.468545Z",
- "start_time": "2020-11-04T12:39:55.349545Z"
- }
- },
- "source": [
- "phenotype_list_basic = {\n",
- " \"myocardial_infarction\": [\"Myocardial infarction\"],\n",
- " \"stroke\": [\"Cerebrovascular disease\"],\n",
- " \"diabetes1\" : [\"Type 1 diabetes\"],\n",
- " \"diabetes2\" : [\"Diabetes mellitus\", \"Type 2 diabetes\"],\n",
- " \"chronic_kidney_disease\": [\"Chronic kidney disease\", \"chronic renal failure\"],\n",
- " \"atrial_fibrillation\": [\"Atrial fibrillation\", \"Atrial flutter\", \"paroxysmal tachycardia\"],\n",
- " \"migraine\": [\"Migraine\"],\n",
- " \"rheumatoid_arthritis\": [\"Rheumatoid arthritis\"],\n",
- " \"systemic_lupus_erythematosus\": [\"Systemic lupus erythematosus\"],\n",
- " \"severe_mental_illness\": [\"Schizophrenia\", \"bipolar\", \"Major depressive disorder\"],\n",
- " \"erectile_dysfunction\" : [\"Erectile dysfunction\"], \n",
- "}\n",
- "\n",
- "l10_basic = phenotype_children(phecodes, phenotype_list_basic)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {},
- "outputs": [],
- "source": [
- "l10_basic = {\n",
- " \"myocardial_infarction\": ['I21', 'I22', 'I23', 'I24', 'I25'],\n",
- " \"stroke\": ['G45', \"I63\", \"I64\"],\n",
- " \"diabetes1\" : ['E10'],\n",
- " \"diabetes2\" : ['E11', 'E12', 'E13', 'E14'],\n",
- " \"chronic_kidney_disease\": [\"I12\", \"N18\", \"N19\"],\n",
- " 'atrial_fibrillation': ['I47', 'I48'],\n",
- " 'migraine': ['G43', 'G44'],\n",
- " 'rheumatoid_arthritis': ['J99', 'M05', 'M06', 'M08', 'M12', 'M13'],\n",
- " \"systemic_lupus_erythematosus\": ['M32'],\n",
- " 'severe_mental_illness': ['F20', 'F25', 'F30', 'F31', 'F32', 'F33', 'F44'],\n",
- " \"erectile_dysfunction\" : ['F52', 'N48'], \n",
- " \"liver_disease\":[\"K70\", \"K71\", \"K72\", \"K73\", \"K74\", \"K75\", \"K76\", \"K77\"],\n",
- " \"dementia\":['F00', 'F01', 'F02', 'F03'],\n",
- " \"copd\": ['J44']\n",
- "}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{'myocardial_infarction': ['I21', 'I22', 'I23', 'I24', 'I25'],\n",
- " 'stroke': ['G45', 'I63', 'I64'],\n",
- " 'diabetes1': ['E10'],\n",
- " 'diabetes2': ['E11', 'E12', 'E13', 'E14'],\n",
- " 'chronic_kidney_disease': ['I12', 'N18', 'N19'],\n",
- " 'atrial_fibrillation': ['I47', 'I48'],\n",
- " 'migraine': ['G43', 'G44'],\n",
- " 'rheumatoid_arthritis': ['J99', 'M05', 'M06', 'M08', 'M12', 'M13'],\n",
- " 'systemic_lupus_erythematosus': ['M32'],\n",
- " 'severe_mental_illness': ['F20', 'F25', 'F30', 'F31', 'F32', 'F33', 'F44'],\n",
- " 'erectile_dysfunction': ['F52', 'N48'],\n",
- " 'liver_disease': ['K70', 'K71', 'K72', 'K73', 'K74', 'K75', 'K76', 'K77'],\n",
- " 'dementia': ['F00', 'F01', 'F02', 'F03'],\n",
- " 'copd': ['J44']}"
- ]
- },
- "execution_count": 49,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "l10_basic"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:39:55.473556Z",
- "start_time": "2020-11-04T12:39:55.471051Z"
- }
- },
- "outputs": [],
- "source": [
- "l10_all = l10_basic\n",
- "for key, value in l10_snomed.items(): \n",
- " if key not in l10_basic: l10_all[key] = value"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:39:55.620916Z",
- "start_time": "2020-11-04T12:39:55.475137Z"
- }
- },
- "outputs": [],
- "source": [
- "l10 = {k: v for k, v in l10_all.items() if len(v)!=0}\n",
- "\n",
- "#phenotype_list = {k: v for k, v in phenotype_list.items() if k in list(l10.keys())}\n",
- "\n",
- "with open(os.path.join(path, dataset_path, 'phenotype_list.yaml'), 'w') as file: yaml.dump(l10, file, default_flow_style=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### 1. Self Reported"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:43:13.288198Z",
- "start_time": "2020-11-04T12:43:13.264683Z"
- }
- },
- "outputs": [],
- "source": [
- "coding609 = pd.read_csv(f\"{path}/mapping/codings/coding609.tsv\", sep=\"\\t\").rename(columns={\"coding\":\"code\"})"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {},
- "outputs": [],
- "source": [
- "from datetime import datetime, timedelta\n",
- "\n",
- "def datetime_from_dec_year(dec_year):\n",
- " start = dec_year\n",
- " year = int(start)\n",
- " rem = start - year\n",
- "\n",
- " base = datetime(year, 1, 1)\n",
- " result = base + timedelta(seconds=(base.replace(year=base.year + 1) - base).total_seconds() * rem)\n",
- " #result.strftime(\"%Y-%m-%d\")\n",
- " return result.date()\n",
- "\n",
- "def extract_map_self_reported(data, data_field, code_map):\n",
- " pbar = tqdm(total=16)\n",
- " ### codes\n",
- " fields = [\"20002\"]; pbar.update(1)\n",
- " raw = get_data_fields_all(fields, data, data_field); pbar.update(1)\n",
- " col = \"noncancer_illness_code_selfreported_f20002\"; pbar.update(1)\n",
- " temp = pd.wide_to_long(raw, stubnames=[col], i=\"eid\", j=\"instance_index\", sep=\"_\", suffix=\"\\w+\").reset_index(); pbar.update(1)\n",
- " codes = temp.rename(columns={col:\"code\"})\\\n",
- " .assign(code=lambda x: x.code.astype(str))\\\n",
- " .replace(\"None\", np.nan) \\\n",
- " .replace(\"nan\", np.nan) \\\n",
- " .dropna(subset=[\"code\"], axis=0)\\\n",
- " .assign(code=lambda x: x.code.astype(int)) \\\n",
- " .merge(code_map, how=\"left\",on=\"code\") \\\n",
- " .dropna(subset=[\"meaning\"], axis=0)\\\n",
- " .sort_values([\"eid\", \"instance_index\"]) \\\n",
- " .reset_index(drop=True); pbar.update(1)\n",
- " \n",
- " ### dates\n",
- " fields = [\"20008\"]; pbar.update(1)\n",
- " raw = get_data_fields_all(fields, data, data_field); pbar.update(1)\n",
- " col=\"interpolated_year_when_noncancer_illness_first_diagnosed_f20008\"; pbar.update(1)\n",
- " temp = pd.wide_to_long(raw, stubnames=[col], i=\"eid\", j=\"instance_index\", sep=\"_\", suffix=\"\\w+\").reset_index(); pbar.update(1)\n",
- " dates = temp.rename(columns={col:\"date\"})\\\n",
- " .dropna(subset=[\"date\"], axis=0)\\\n",
- " .sort_values([\"eid\", \"instance_index\"]) \\\n",
- " .reset_index(drop=True); pbar.update(1)\n",
- "\n",
- " dates = dates[dates.date!=-1]; pbar.update(1)\n",
- " dates = dates[dates.date!=-3]; pbar.update(1)\n",
- " dates.date = dates.date.apply(datetime_from_dec_year); pbar.update(1)\n",
- " \n",
- " test = codes.merge(dates, how=\"left\", on=[\"eid\", \"instance_index\"]).assign(origin=\"self_reported\").copy(); pbar.update(1)\n",
- " \n",
- " test[\"instance_index\"] = test[\"instance_index\"].astype(\"string\"); pbar.update(1)\n",
- " test[['instance','n']] = test.instance_index.str.split(\"_\",expand=True); pbar.update(1)\n",
- " pbar.close()\n",
- " \n",
- " return test[[\"eid\", \"origin\", 'instance','n', \"code\", \"meaning\", \"date\"]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {},
- "outputs": [],
- "source": [
- "from tqdm.auto import tqdm"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:46:00.098893Z",
- "start_time": "2020-11-04T12:43:13.432479Z"
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "4a6bf94594574b48b26a251987e4baf0",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=16.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "codes_self_reported = extract_map_self_reported(data, data_field, coding609)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Load records"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "codes_gp_records = pd.read_feather(f\"{data_path}/1_decoded/codes_gp_diagnoses_210119.feather\").drop(\"level\", axis=1)\n",
- "codes_hospital_records = pd.read_feather(f\"{data_path}/1_decoded/codes_hes_diagnoses_210120.feather\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Combine diagnoses and events"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:46:25.115010Z",
- "start_time": "2020-11-04T12:46:08.961388Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " origin | \n",
- " instance | \n",
- " n | \n",
- " code | \n",
- " meaning | \n",
- " date | \n",
- " level | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 1 | \n",
- " F171 | \n",
- " F17 | \n",
- " 1976-01-01 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 2 | \n",
- " O800 | \n",
- " O80 | \n",
- " 1986-03-23 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 3 | \n",
- " O800 | \n",
- " O80 | \n",
- " 1989-05-25 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 4 | \n",
- " Z824 | \n",
- " Z82 | \n",
- " 1994-09-13 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 5 | \n",
- " Z867 | \n",
- " Z86 | \n",
- " 1994-09-13 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " eid origin instance n code meaning date level\n",
- "0 1000018 gp_read3 0 1 F171 F17 1976-01-01 NaN\n",
- "1 1000018 gp_read3 0 2 O800 O80 1986-03-23 NaN\n",
- "2 1000018 gp_read3 0 3 O800 O80 1989-05-25 NaN\n",
- "3 1000018 gp_read3 0 4 Z824 Z82 1994-09-13 NaN\n",
- "4 1000018 gp_read3 0 5 Z867 Z86 1994-09-13 NaN"
- ]
- },
- "execution_count": 61,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "diagnoses_codes = codes_self_reported.append(codes_hospital_records).append(codes_gp_records).sort_values([\"eid\", \"date\"]).dropna(subset=[\"date\"], axis=0).reset_index(drop=True)\n",
- "diagnoses_codes.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {},
- "outputs": [],
- "source": [
- "diagnoses_codes.reset_index(drop=True).assign(eid = lambda x: x.eid.astype(int),\n",
- " origin = lambda x: x.origin.astype(str),\n",
- " instance = lambda x: x.instance.astype(int),\n",
- " n = lambda x: x.n.astype(int),\n",
- " code = lambda x: x.code.astype(str), \n",
- " meaning = lambda x: x.meaning.astype(str))\\\n",
- " .to_feather(os.path.join(path, dataset_path, 'temp_diagnoses_codes.feather'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {},
- "outputs": [],
- "source": [
- "diagnoses_codes = pd.read_feather(os.path.join(path, dataset_path, 'temp_diagnoses_codes.feather'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " origin | \n",
- " instance | \n",
- " n | \n",
- " code | \n",
- " meaning | \n",
- " date | \n",
- " level | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 1 | \n",
- " F171 | \n",
- " F17 | \n",
- " 1976-01-01 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 2 | \n",
- " O800 | \n",
- " O80 | \n",
- " 1986-03-23 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 3 | \n",
- " O800 | \n",
- " O80 | \n",
- " 1989-05-25 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 4 | \n",
- " Z824 | \n",
- " Z82 | \n",
- " 1994-09-13 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000018 | \n",
- " gp_read3 | \n",
- " 0 | \n",
- " 5 | \n",
- " Z867 | \n",
- " Z86 | \n",
- " 1994-09-13 | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 32075621 | \n",
- " 6025198 | \n",
- " hes_icd10 | \n",
- " 6 | \n",
- " 13 | \n",
- " ['R945'] | \n",
- " R94 | \n",
- " 2018-12-09 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " 32075622 | \n",
- " 6025198 | \n",
- " hes_icd10 | \n",
- " 6 | \n",
- " 14 | \n",
- " ['F171'] | \n",
- " F17 | \n",
- " 2018-12-09 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " 32075623 | \n",
- " 6025198 | \n",
- " hes_icd10 | \n",
- " 6 | \n",
- " 15 | \n",
- " ['I10'] | \n",
- " I10 | \n",
- " 2018-12-09 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " 32075624 | \n",
- " 6025198 | \n",
- " hes_icd10 | \n",
- " 6 | \n",
- " 16 | \n",
- " ['E780'] | \n",
- " E78 | \n",
- " 2018-12-09 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " 32075625 | \n",
- " 6025198 | \n",
- " hes_icd10 | \n",
- " 6 | \n",
- " 17 | \n",
- " ['W802'] | \n",
- " W80 | \n",
- " 2018-12-09 | \n",
- " 3.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
32075626 rows × 8 columns
\n",
- "
"
- ],
- "text/plain": [
- " eid origin instance n code meaning date \\\n",
- "0 1000018 gp_read3 0 1 F171 F17 1976-01-01 \n",
- "1 1000018 gp_read3 0 2 O800 O80 1986-03-23 \n",
- "2 1000018 gp_read3 0 3 O800 O80 1989-05-25 \n",
- "3 1000018 gp_read3 0 4 Z824 Z82 1994-09-13 \n",
- "4 1000018 gp_read3 0 5 Z867 Z86 1994-09-13 \n",
- "... ... ... ... .. ... ... ... \n",
- "32075621 6025198 hes_icd10 6 13 ['R945'] R94 2018-12-09 \n",
- "32075622 6025198 hes_icd10 6 14 ['F171'] F17 2018-12-09 \n",
- "32075623 6025198 hes_icd10 6 15 ['I10'] I10 2018-12-09 \n",
- "32075624 6025198 hes_icd10 6 16 ['E780'] E78 2018-12-09 \n",
- "32075625 6025198 hes_icd10 6 17 ['W802'] W80 2018-12-09 \n",
- "\n",
- " level \n",
- "0 NaN \n",
- "1 NaN \n",
- "2 NaN \n",
- "3 NaN \n",
- "4 NaN \n",
- "... ... \n",
- "32075621 2.0 \n",
- "32075622 2.0 \n",
- "32075623 2.0 \n",
- "32075624 2.0 \n",
- "32075625 3.0 \n",
- "\n",
- "[32075626 rows x 8 columns]"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "diagnoses_codes"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T12:46:26.189927Z",
- "start_time": "2020-11-04T12:46:25.117069Z"
- }
- },
- "outputs": [],
- "source": [
- "from joblib import Parallel, delayed\n",
- "from functools import reduce\n",
- "from numba import jit\n",
- "\n",
- "def had_diagnosis_before_per_ph(df_before, ph, ph_codes, temp):\n",
- " df_ph = df_before[df_before.meaning.isin(ph_codes)][[\"eid\"]]\\\n",
- " .drop_duplicates(subset=[\"eid\"])\\\n",
- " .assign(phenotype=True) \n",
- " return temp.merge(df_ph, how=\"left\", on=\"eid\").fillna(False).phenotype\n",
- "\n",
- "def had_diagnosis_before(data, diagnoses_codes, phenotypes, time0=time0_col):\n",
- " diagnoses_codes_time = diagnoses_codes.merge(data[[\"eid\", time0]], how=\"left\", on=\"eid\")\n",
- " \n",
- " temp = data[[\"eid\"]].copy()\n",
- " df_before = diagnoses_codes_time[diagnoses_codes_time.date < diagnoses_codes_time[time0]]\n",
- " \n",
- " df_phs = Parallel(n_jobs=20, require=\"sharedmem\")(delayed(had_diagnosis_before_per_ph)(df_before, ph, phenotypes[ph], temp) for ph in tqdm(list(phenotypes)))\n",
- " for ph, df_ph_series in zip(tqdm(list(phenotypes)), df_phs): temp[ph] = df_ph_series#temp.merge(df_ph, how=\"left\", on=\"eid\").fillna(False).phenotype\n",
- " \n",
- " return temp.sort_values(\"eid\") #reduce(lambda left,right: pd.merge(left,right,on=['eid'], how='left'), df_phs)."
- ]
- },
- {
- "cell_type": "raw",
- "metadata": {},
- "source": [
- "from joblib import Parallel, delayed\n",
- "from functools import reduce\n",
- "from numba import jit\n",
- "\n",
- "def had_diagnosis_before_per_ph(df_before, ph, ph_codes, temp):\n",
- " regex = \"|\".join(ph_codes)\n",
- " df_ph = df_before[df_before.meaning.str.contains(regex, case=False)][[\"eid\"]]\\\n",
- " .drop_duplicates(subset=[\"eid\"])\\\n",
- " .assign(phenotype=True) \n",
- " return temp.merge(df_ph, how=\"left\", on=\"eid\").fillna(False).phenotype\n",
- "\n",
- "def had_diagnosis_before(data, diagnoses_codes, phenotypes, time0=time0_col):\n",
- " diagnoses_codes_time = diagnoses_codes.merge(data[[\"eid\", time0]], how=\"left\", on=\"eid\")\n",
- " \n",
- " temp = data[[\"eid\"]].copy()\n",
- " df_before = diagnoses_codes_time[diagnoses_codes_time.date < diagnoses_codes_time[time0]]\n",
- " \n",
- " df_phs = Parallel(n_jobs=30, require=\"sharedmem\")(delayed(had_diagnosis_before_per_ph)(df_before, ph, phenotypes[ph], temp) for ph in tqdm(list(phenotypes)))\n",
- " for ph, ph_series in zip(tqdm(list(phenotypes)), df_phs): temp[ph] = ph_series\n",
- " \n",
- " return temp.sort_values(\"eid\") #reduce(lambda left,right: pd.merge(left,right,on=['eid'], how='left'), df_phs)."
- ]
- },
- {
- "cell_type": "raw",
- "metadata": {},
- "source": [
- "phenotypes = l10\n",
- "time0 = time0_col\n",
- "diagnoses_codes_time = diagnoses_codes.merge(data[[\"eid\", time0]], how=\"left\", on=\"eid\")\n",
- "\n",
- "temp = data[[\"eid\"]].copy()\n",
- "df_before = diagnoses_codes_time[diagnoses_codes_time.date < diagnoses_codes_time[time0]]\n",
- "\n",
- "df_phs = Parallel(n_jobs=10, require=\"sharedmem\")(delayed(had_diagnosis_before_per_ph)(df_before, ph, phenotypes[ph], temp) for ph in tqdm(list(phenotypes)[0:100]))"
- ]
- },
- {
- "cell_type": "raw",
- "metadata": {},
- "source": [
- "def had_diagnosis_before(data, diagnoses_codes, phenotypes, time0=time0_col):\n",
- " diagnoses_codes_time = diagnoses_codes.merge(data[[\"eid\", time0]], how=\"left\", on=\"eid\")\n",
- " \n",
- " temp = data[[\"eid\"]].copy()\n",
- " df_before = diagnoses_codes_time[diagnoses_codes_time.date < diagnoses_codes_time[time0]]\n",
- " for ph, ph_codes in tqdm(phenotypes.items()):\n",
- " regex = \"|\".join(ph_codes)\n",
- " df_ph = df_before[df_before.meaning.str.contains(regex, case=False)][[\"eid\"]]\\\n",
- " .drop_duplicates(subset=[\"eid\"])\\\n",
- " .assign(phenotype=True)\n",
- " temp[ph] = temp.merge(df_ph, how=\"left\", on=\"eid\").fillna(False).phenotype\n",
- " \n",
- " return temp.sort_values(\"eid\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-11-04T13:17:52.922023Z",
- "start_time": "2020-11-04T12:46:26.191314Z"
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "8041d52f094f4730a924656c994c4820",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=2662.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "0bccfdff36944622b1a4b624acd2b955",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(HTML(value=''), FloatProgress(value=0.0, max=2662.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "502504\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " myocardial_infarction | \n",
- " stroke | \n",
- " diabetes1 | \n",
- " diabetes2 | \n",
- " chronic_kidney_disease | \n",
- " atrial_fibrillation | \n",
- " migraine | \n",
- " rheumatoid_arthritis | \n",
- " systemic_lupus_erythematosus | \n",
- " ... | \n",
- " vulvitis | \n",
- " vulvodynia | \n",
- " vulvovaginitis | \n",
- " waldenström_macroglobulinemia | \n",
- " wheezing | \n",
- " white_blood_cell_disorder | \n",
- " worried_well | \n",
- " wound_dehiscence | \n",
- " wrist_joint_pain | \n",
- " xerostomia | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018 | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " True | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " ... | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " True | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000020 | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " ... | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000037 | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " True | \n",
- " True | \n",
- " False | \n",
- " ... | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " True | \n",
- " False | \n",
- " True | \n",
- " False | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000043 | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " ... | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " True | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000051 | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " True | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " ... | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- " False | \n",
- "
\n",
- " \n",
- "
\n",
- "
5 rows × 2663 columns
\n",
- "
"
- ],
- "text/plain": [
- " eid myocardial_infarction stroke diabetes1 diabetes2 \\\n",
- "0 1000018 False False False False \n",
- "1 1000020 False False False False \n",
- "2 1000037 False False False False \n",
- "3 1000043 False False False False \n",
- "4 1000051 False False False True \n",
- "\n",
- " chronic_kidney_disease atrial_fibrillation migraine \\\n",
- "0 True False False \n",
- "1 False False False \n",
- "2 False False True \n",
- "3 False False False \n",
- "4 False False False \n",
- "\n",
- " rheumatoid_arthritis systemic_lupus_erythematosus ... vulvitis \\\n",
- "0 False False ... False \n",
- "1 False False ... False \n",
- "2 True False ... False \n",
- "3 False False ... False \n",
- "4 False False ... False \n",
- "\n",
- " vulvodynia vulvovaginitis waldenström_macroglobulinemia wheezing \\\n",
- "0 False False False False \n",
- "1 False False False False \n",
- "2 False False False False \n",
- "3 False False False True \n",
- "4 False False False False \n",
- "\n",
- " white_blood_cell_disorder worried_well wound_dehiscence \\\n",
- "0 False True False \n",
- "1 False False False \n",
- "2 False True False \n",
- "3 False False False \n",
- "4 False False False \n",
- "\n",
- " wrist_joint_pain xerostomia \n",
- "0 False False \n",
- "1 False False \n",
- "2 True False \n",
- "3 False False \n",
- "4 False False \n",
- "\n",
- "[5 rows x 2663 columns]"
- ]
- },
- "execution_count": 68,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "diagnoses = had_diagnosis_before(basics, diagnoses_codes, l10, time0=time0_col)\n",
- "print(len(diagnoses))\n",
- "\n",
- "diagnoses.to_feather(os.path.join(path, dataset_path, 'temp_diagnoses.feather'))\n",
- "\n",
- "diagnoses.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 147,
- "metadata": {},
- "outputs": [],
- "source": [
- "diagnoses = pd.read_feather(os.path.join(path, dataset_path, 'temp_diagnoses.feather'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Add embeddings for Snomed Diagnoses"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Get SNOMED - node2vec dict"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {},
- "outputs": [],
- "source": [
- "snomed_embeddings = pd.read_csv(\"/data/analysis/ag-reils/steinfej/data/snomed_embeddings/snomed.emb.p1.q1.w20.l40.e200.graph_format.txt\", sep=\" \", header=None, skiprows=1)\n",
- "snomed_embeddings.columns = [\"snomed_id\"]+list(snomed_embeddings.columns)[:-1]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " snomed_id | \n",
- " 0 | \n",
- " 1 | \n",
- " 2 | \n",
- " 3 | \n",
- " 4 | \n",
- " 5 | \n",
- " 6 | \n",
- " 7 | \n",
- " 8 | \n",
- " ... | \n",
- " 190 | \n",
- " 191 | \n",
- " 192 | \n",
- " 193 | \n",
- " 194 | \n",
- " 195 | \n",
- " 196 | \n",
- " 197 | \n",
- " 198 | \n",
- " 199 | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 129265001 | \n",
- " 0.027456 | \n",
- " 0.171026 | \n",
- " -0.178822 | \n",
- " -0.038667 | \n",
- " 0.299777 | \n",
- " 0.082540 | \n",
- " -0.201284 | \n",
- " 0.215164 | \n",
- " 0.093241 | \n",
- " ... | \n",
- " 0.211030 | \n",
- " 0.488475 | \n",
- " 0.082177 | \n",
- " -0.047102 | \n",
- " -0.086411 | \n",
- " -0.012141 | \n",
- " -0.258416 | \n",
- " -0.113295 | \n",
- " 0.040249 | \n",
- " -0.116884 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 360224006 | \n",
- " -0.090187 | \n",
- " 0.086986 | \n",
- " -0.184378 | \n",
- " -0.028722 | \n",
- " -0.010235 | \n",
- " 0.242439 | \n",
- " -0.094009 | \n",
- " 0.203015 | \n",
- " -0.097894 | \n",
- " ... | \n",
- " 0.112750 | \n",
- " 0.333906 | \n",
- " -0.018193 | \n",
- " 0.020459 | \n",
- " -0.170226 | \n",
- " 0.277866 | \n",
- " -0.007079 | \n",
- " -0.080419 | \n",
- " 0.162456 | \n",
- " -0.101768 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 102272007 | \n",
- " 0.553420 | \n",
- " 0.460947 | \n",
- " 0.143925 | \n",
- " -0.053785 | \n",
- " -0.849588 | \n",
- " 0.467587 | \n",
- " -0.654922 | \n",
- " -0.010799 | \n",
- " 0.510141 | \n",
- " ... | \n",
- " 0.187371 | \n",
- " 0.248607 | \n",
- " 0.079687 | \n",
- " -0.354121 | \n",
- " 0.412602 | \n",
- " 0.582461 | \n",
- " -0.780365 | \n",
- " 0.045450 | \n",
- " -0.196551 | \n",
- " 0.045745 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 39937001 | \n",
- " 0.123158 | \n",
- " 0.019882 | \n",
- " 0.050896 | \n",
- " 0.037364 | \n",
- " 0.200435 | \n",
- " 0.312911 | \n",
- " -0.338977 | \n",
- " -0.092584 | \n",
- " -0.167741 | \n",
- " ... | \n",
- " 0.057770 | \n",
- " -0.012834 | \n",
- " -0.139794 | \n",
- " 0.180572 | \n",
- " 0.190781 | \n",
- " 0.104039 | \n",
- " -0.358235 | \n",
- " -0.137954 | \n",
- " -0.236551 | \n",
- " -0.206458 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 23583003 | \n",
- " 0.423193 | \n",
- " 0.384338 | \n",
- " -0.041503 | \n",
- " 0.116848 | \n",
- " -0.055029 | \n",
- " 0.149064 | \n",
- " -0.092810 | \n",
- " -0.050148 | \n",
- " 0.113122 | \n",
- " ... | \n",
- " 0.162375 | \n",
- " -0.076505 | \n",
- " -0.274352 | \n",
- " -0.099204 | \n",
- " -0.281887 | \n",
- " -0.266345 | \n",
- " -0.020257 | \n",
- " -0.003843 | \n",
- " -0.008804 | \n",
- " -0.286832 | \n",
- "
\n",
- " \n",
- "
\n",
- "
5 rows × 201 columns
\n",
- "
"
- ],
- "text/plain": [
- " snomed_id 0 1 2 3 4 5 \\\n",
- "0 129265001 0.027456 0.171026 -0.178822 -0.038667 0.299777 0.082540 \n",
- "1 360224006 -0.090187 0.086986 -0.184378 -0.028722 -0.010235 0.242439 \n",
- "2 102272007 0.553420 0.460947 0.143925 -0.053785 -0.849588 0.467587 \n",
- "3 39937001 0.123158 0.019882 0.050896 0.037364 0.200435 0.312911 \n",
- "4 23583003 0.423193 0.384338 -0.041503 0.116848 -0.055029 0.149064 \n",
- "\n",
- " 6 7 8 ... 190 191 192 193 \\\n",
- "0 -0.201284 0.215164 0.093241 ... 0.211030 0.488475 0.082177 -0.047102 \n",
- "1 -0.094009 0.203015 -0.097894 ... 0.112750 0.333906 -0.018193 0.020459 \n",
- "2 -0.654922 -0.010799 0.510141 ... 0.187371 0.248607 0.079687 -0.354121 \n",
- "3 -0.338977 -0.092584 -0.167741 ... 0.057770 -0.012834 -0.139794 0.180572 \n",
- "4 -0.092810 -0.050148 0.113122 ... 0.162375 -0.076505 -0.274352 -0.099204 \n",
- "\n",
- " 194 195 196 197 198 199 \n",
- "0 -0.086411 -0.012141 -0.258416 -0.113295 0.040249 -0.116884 \n",
- "1 -0.170226 0.277866 -0.007079 -0.080419 0.162456 -0.101768 \n",
- "2 0.412602 0.582461 -0.780365 0.045450 -0.196551 0.045745 \n",
- "3 0.190781 0.104039 -0.358235 -0.137954 -0.236551 -0.206458 \n",
- "4 -0.281887 -0.266345 -0.020257 -0.003843 -0.008804 -0.286832 \n",
- "\n",
- "[5 rows x 201 columns]"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "snomed_embeddings.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "metadata": {},
- "outputs": [],
- "source": [
- "diagnoses_snomed = diagnoses.columns[13:].to_list()\n",
- "diagnoses_snomed_dict = {}\n",
- "for d in diagnoses_snomed: diagnoses_snomed_dict[d] = phenotype_list_snomed[d]\n",
- " \n",
- "snomed_codes_used = list(phenotype_list_snomed.values())\n",
- "snomed_codes_emb = snomed_embeddings.snomed_id.to_list()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {},
- "outputs": [],
- "source": [
- "snomed_id_array = snomed_embeddings[[\"snomed_id\"]].values\n",
- "node2vec_array = snomed_embeddings.iloc[:, 1:].values"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "456f56d7481648e48b74e9e76b675f01",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=373286.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "snomed_arrays = {}\n",
- "for sid, row in zip(tqdm(snomed_id_array), node2vec_array):\n",
- " snomed_arrays[sid[0]] = row"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Get Patient -> Snomed dict"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "05ac46541972426da8a5b5f7fe461c6e",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "diagnoses_array = diagnoses[diagnoses_snomed].values\n",
- "eid_array = diagnoses[[\"eid\"]].values\n",
- "\n",
- "from numba import jit\n",
- "import numpy as np\n",
- "\n",
- "patient_diagnoses = {}\n",
- "for eid, row in zip(tqdm(eid_array), diagnoses_array):\n",
- " patient_diagnoses[eid[0]] = list(np.argwhere(row==True).flatten())\n",
- "\n",
- "#diagnoses.query(\"eid==1000092\")[diagnoses_snomed]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "f4c90d91d08e48119abcf8426cddd37e",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "patient_diagnoses_sid = {}\n",
- "snomed_codes_emb_set = set(snomed_codes_emb)\n",
- "for eid, p_d_col in tqdm(patient_diagnoses.items()):\n",
- " diagnoses_list = [diagnoses_snomed[i] for i in p_d_col]\n",
- " sid_list = [phenotype_list_snomed[i] for i in diagnoses_list]\n",
- " sid_list = [sid for sid in sid_list if sid in snomed_codes_emb_set]\n",
- " patient_diagnoses_sid[eid] = sid_list"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### Get Patient -> node2vec average"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "47e934dc64334c82893d23b458108fbf",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/steinfej/miniconda3/envs/python/lib/python3.7/site-packages/numpy/core/fromnumeric.py:3335: RuntimeWarning: Mean of empty slice.\n",
- " out=out, **kwargs)\n",
- "/home/steinfej/miniconda3/envs/python/lib/python3.7/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars\n",
- " ret = ret.dtype.type(ret / rcount)\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "patient_node2vec_dict = {}\n",
- "for eid, sids in tqdm(patient_diagnoses_sid.items()):\n",
- " array_list = [snomed_arrays[sid] for sid in sids]\n",
- " patient_node2vec_dict[eid] = np.mean(array_list, axis=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "e1395c2d1bfc41f39697a8925b20d597",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "array([ 0.37033895, 0.13321076, -0.10030267, 0.05625264, -0.08437331,\n",
- " 0.11504787, -0.24833219, -0.11936529, 0.25239648, -0.32739932,\n",
- " 0.06330914, -0.06493541, -0.28790415, -0.2885537 , 0.02546298,\n",
- " -0.06123153, -0.17690672, -0.0867546 , -0.28337599, -0.08474496,\n",
- " 0.31454532, -0.24158154, 0.15930864, 0.06124846, 0.07694602,\n",
- " -0.13752803, 0.13671128, -0.27988751, -0.03987635, 0.03632156,\n",
- " -0.13793361, -0.15857369, -0.16441636, 0.2412931 , 0.20070578,\n",
- " -0.11412784, 0.02563965, -0.03560184, 0.17169744, -0.0153383 ,\n",
- " 0.00117099, 0.1025362 , -0.06505568, 0.05646065, -0.02705149,\n",
- " 0.04416442, -0.15798991, -0.10650637, 0.02082507, -0.21182802,\n",
- " 0.13972325, -0.18089307, -0.12731068, 0.02907221, -0.19797107,\n",
- " 0.19550177, 0.14941799, 0.21561857, -0.18085379, 0.10768238,\n",
- " 0.12968045, 0.2082016 , 0.03561408, -0.01122218, -0.27099816,\n",
- " -0.06029919, -0.18787618, 0.10084175, -0.07939234, -0.22951897,\n",
- " -0.36536359, -0.01050854, -0.21419807, -0.23562986, 0.02380316,\n",
- " 0.1213157 , -0.1601396 , 0.07218057, -0.04362593, -0.22303355,\n",
- " -0.23844839, -0.14799905, 0.22346404, 0.14218655, 0.39873181,\n",
- " -0.32965129, 0.19102432, -0.08894028, -0.20726567, 0.25343222,\n",
- " 0.29939455, 0.20513029, 0.17430424, -0.05073184, 0.05827969,\n",
- " 0.31626954, 0.0791522 , -0.21433214, 0.11027244, 0.0805151 ,\n",
- " 0.08557279, 0.25260801, -0.00096969, -0.06177831, 0.0544524 ,\n",
- " -0.17340027, 0.09731447, 0.09982385, -0.074546 , -0.10350239,\n",
- " -0.25798929, 0.01222471, 0.1605315 , 0.00191767, 0.11642527,\n",
- " -0.15387604, -0.01520803, 0.03220765, -0.13534233, 0.09154689,\n",
- " 0.12562997, -0.01667786, -0.09286805, 0.14670483, -0.13097813,\n",
- " -0.38270284, -0.0129984 , -0.06352304, 0.12521014, -0.17354363,\n",
- " -0.16399127, 0.11488736, 0.39664734, 0.08557075, -0.24862126,\n",
- " -0.05882866, 0.23174289, 0.01765143, -0.10257617, 0.01208248,\n",
- " -0.06876405, -0.04180976, 0.07489962, -0.10724381, 0.29349823,\n",
- " 0.17342743, -0.32044841, -0.01118798, 0.28508293, 0.16492201,\n",
- " 0.03994952, -0.17309702, 0.0365077 , 0.08619365, -0.21749571,\n",
- " 0.01038752, -0.21414902, -0.18092813, 0.28433131, -0.12601774,\n",
- " -0.02147302, 0.51513453, 0.21506432, -0.12596341, -0.0413009 ,\n",
- " 0.12595327, 0.08973215, -0.06285449, -0.03649041, 0.04217289,\n",
- " -0.02532634, -0.21734533, -0.08211848, 0.14014083, 0.13635479,\n",
- " -0.13163414, -0.08576438, -0.04016334, 0.23952563, -0.14895943,\n",
- " 0.08564821, -0.04287149, 0.22135877, -0.06337237, -0.07189574,\n",
- " -0.1004494 , 0.01225299, -0.13810014, -0.06814497, -0.16715941,\n",
- " 0.07303671, 0.15891015, -0.04757821, -0.05777645, -0.0772216 ,\n",
- " 0.16787738, -0.2112512 , -0.10142653, -0.19002809, -0.06400223])"
- ]
- },
- "execution_count": 71,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# create imputation vector\n",
- "arrays = [patient_node2vec_dict[key] for key in list(patient_node2vec_dict)]\n",
- "arrays_ok = [array for array in tqdm(arrays) if ~np.isnan(array).any()]\n",
- "imp_vector = np.mean(arrays_ok, axis=0)\n",
- "imp_vector"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "e2dd803c2e2a4cb68e71111979d235c2",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "for eid, array in tqdm(patient_node2vec_dict.items()):\n",
- " if np.isnan(array).any(): \n",
- " patient_node2vec_dict[eid] = imp_vector"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "a82c47a8f87a4df1bc81b78496edee0a",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "array_eids = [key for key in tqdm(list(patient_node2vec_dict))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "510554b8bed8456cbfd694b764286acb",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "ind_ok = [np.array([1]) if ~np.isnan(array).any() else np.array([0]) for array in tqdm(arrays)]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "a85aec2f3e7644dc99c40781f999eb3c",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- "HBox(children=(FloatProgress(value=0.0, max=502504.0), HTML(value='')))"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "arrays_emb = [patient_node2vec_dict[key] for key in tqdm(list(patient_node2vec_dict))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrays_eids = np.reshape(np.stack(array_eids, axis=0),(-1,1)) \n",
- "arrays_ind = np.stack(ind_ok, axis=0)\n",
- "arrays_c = np.stack(arrays_emb, axis=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrays_complete = np.concatenate([arrays_eids, arrays_ind, arrays_c], axis=1)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {},
- "outputs": [],
- "source": [
- "diagnoses_emb = pd.DataFrame(data=arrays_complete, columns=[\"eid\"]+[\"node2vec_available\"]+[f\"node2vec_{e}\" for e in list(range(0, 200))])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "collapsed": true,
- "jupyter": {
- "outputs_hidden": true
- }
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " eid | \n",
- " node2vec_available | \n",
- " node2vec_0 | \n",
- " node2vec_1 | \n",
- " node2vec_2 | \n",
- " node2vec_3 | \n",
- " node2vec_4 | \n",
- " node2vec_5 | \n",
- " node2vec_6 | \n",
- " node2vec_7 | \n",
- " ... | \n",
- " node2vec_190 | \n",
- " node2vec_191 | \n",
- " node2vec_192 | \n",
- " node2vec_193 | \n",
- " node2vec_194 | \n",
- " node2vec_195 | \n",
- " node2vec_196 | \n",
- " node2vec_197 | \n",
- " node2vec_198 | \n",
- " node2vec_199 | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1000018.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 1000020.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 1000037.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 1000043.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 1000051.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 502499 | \n",
- " 6025150.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 502500 | \n",
- " 6025165.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 502501 | \n",
- " 6025173.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 502502 | \n",
- " 6025182.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- " 502503 | \n",
- " 6025198.0 | \n",
- " 0.0 | \n",
- " 0.370339 | \n",
- " 0.133211 | \n",
- " -0.100303 | \n",
- " 0.056253 | \n",
- " -0.084373 | \n",
- " 0.115048 | \n",
- " -0.248332 | \n",
- " -0.119365 | \n",
- " ... | \n",
- " 0.073037 | \n",
- " 0.15891 | \n",
- " -0.047578 | \n",
- " -0.057776 | \n",
- " -0.077222 | \n",
- " 0.167877 | \n",
- " -0.211251 | \n",
- " -0.101427 | \n",
- " -0.190028 | \n",
- " -0.064002 | \n",
- "
\n",
- " \n",
- "
\n",
- "
502504 rows × 202 columns
\n",
- "
"
- ],
- "text/plain": [
- " eid node2vec_available node2vec_0 node2vec_1 node2vec_2 \\\n",
- "0 1000018.0 0.0 0.370339 0.133211 -0.100303 \n",
- "1 1000020.0 0.0 0.370339 0.133211 -0.100303 \n",
- "2 1000037.0 0.0 0.370339 0.133211 -0.100303 \n",
- "3 1000043.0 0.0 0.370339 0.133211 -0.100303 \n",
- "4 1000051.0 0.0 0.370339 0.133211 -0.100303 \n",
- "... ... ... ... ... ... \n",
- "502499 6025150.0 0.0 0.370339 0.133211 -0.100303 \n",
- "502500 6025165.0 0.0 0.370339 0.133211 -0.100303 \n",
- "502501 6025173.0 0.0 0.370339 0.133211 -0.100303 \n",
- "502502 6025182.0 0.0 0.370339 0.133211 -0.100303 \n",
- "502503 6025198.0 0.0 0.370339 0.133211 -0.100303 \n",
- "\n",
- " node2vec_3 node2vec_4 node2vec_5 node2vec_6 node2vec_7 ... \\\n",
- "0 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "1 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "2 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "3 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "4 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "... ... ... ... ... ... ... \n",
- "502499 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "502500 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "502501 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "502502 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "502503 0.056253 -0.084373 0.115048 -0.248332 -0.119365 ... \n",
- "\n",
- " node2vec_190 node2vec_191 node2vec_192 node2vec_193 node2vec_194 \\\n",
- "0 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "1 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "2 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "3 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "4 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "... ... ... ... ... ... \n",
- "502499 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "502500 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "502501 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "502502 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "502503 0.073037 0.15891 -0.047578 -0.057776 -0.077222 \n",
- "\n",
- " node2vec_195 node2vec_196 node2vec_197 node2vec_198 node2vec_199 \n",
- "0 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "1 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "2 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "3 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "4 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "... ... ... ... ... ... \n",
- "502499 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "502500 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "502501 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "502502 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "502503 0.167877 -0.211251 -0.101427 -0.190028 -0.064002 \n",
- "\n",
- "[502504 rows x 202 columns]"
- ]
- },
- "execution_count": 79,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "diagnoses_emb"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "diagnoses_emb.to_feather(os.path.join(path, dataset_path, 'temp_diagnoses_emb.feather'))\n",
- "diagnoses_emb = pd.read_feather(os.path.join(path, dataset_path, 'temp_diagnoses_emb.feather'))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Merge Everything"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "metadata": {},
- "outputs": [],
- "source": [
- "data_dfs_dict = {\"basics\": pd.read_feather(os.path.join(path, dataset_path, 'temp_basics.feather')), \n",
- " \"questionnaire\": pd.read_feather(os.path.join(path, dataset_path, 'temp_questionnaire.feather')), \n",
- " \"measurements\": pd.read_feather(os.path.join(path, dataset_path, 'temp_measurements.feather')), \n",
- " \"labs\": pd.read_feather(os.path.join(path, dataset_path, 'temp_labs.feather')), \n",
- " \"family_history\": pd.read_feather(os.path.join(path, dataset_path, 'temp_family_history.feather')), \n",
- " \"diagnoses\": pd.read_feather(os.path.join(path, dataset_path, 'temp_diagnoses.feather')),\n",
- " # \"diagnoses_emb\": pd.read_feather(os.path.join(path, dataset_path, 'temp_diagnoses_emb.feather')), \n",
- " \"medications\": pd.read_feather(os.path.join(path, dataset_path, 'temp_medications.feather'))}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {},
- "outputs": [],
- "source": [
- "def get_cols_clean(df):\n",
- " df.columns = df.columns.str.replace(r'_0_0$', '').str.replace(r'_f[0-9]+$', '').str.replace(\"_automated_reading\", '')\n",
- " return df.columns\n",
- "\n",
- "def clean_df(df):\n",
- " df.columns = get_cols_clean(df)\n",
- " return df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {},
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "from functools import reduce\n",
- "\n",
- "data_baseline = reduce(lambda x, y: pd.merge(x, y, on = 'eid'), list(data_dfs_dict.values()))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {},
- "outputs": [],
- "source": [
- "data_baseline = clean_df(data_baseline)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {},
- "outputs": [],
- "source": [
- "for col in [col for col in list(data_baseline.columns) if (\"_event\" in col) & (\"_time\" not in col)]:\n",
- " data_baseline[col] = data_baseline[col].astype(int)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {},
- "outputs": [],
- "source": [
- "covariates = [col for col in list(data_baseline.columns) if not \"_event\" in col]\n",
- "targets = [col for col in list(data_baseline.columns) if \"_event\" in col]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Exporting"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {},
- "outputs": [],
- "source": [
- "data_cols = {}\n",
- "for topic, df in data_dfs_dict.items(): \n",
- " data_cols[\"eid\"] = [\"admin\"]\n",
- " data_cols[topic]=list(get_cols_clean(df))[1:]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {},
- "outputs": [],
- "source": [
- "data_cols_single = {}\n",
- "for topic, columns in data_cols.items():\n",
- " for col in columns:\n",
- " data_cols_single[col] = topic"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " id | \n",
- " covariate | \n",
- " dtype | \n",
- " isTarget | \n",
- " based_on | \n",
- " aggr_fn | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 1 | \n",
- " eid | \n",
- " int | \n",
- " False | \n",
- " eid | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 2 | \n",
- " age_at_recruitment | \n",
- " float | \n",
- " False | \n",
- " basics | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 3 | \n",
- " sex | \n",
- " category | \n",
- " False | \n",
- " basics | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 4 | \n",
- " ethnic_background | \n",
- " category | \n",
- " False | \n",
- " basics | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 5 | \n",
- " townsend_deprivation_index_at_recruitment | \n",
- " float | \n",
- " False | \n",
- " basics | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 2857 | \n",
- " 2858 | \n",
- " surgical_dressings | \n",
- " bool | \n",
- " False | \n",
- " medications | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2858 | \n",
- " 2859 | \n",
- " statins | \n",
- " bool | \n",
- " False | \n",
- " medications | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2859 | \n",
- " 2860 | \n",
- " ass | \n",
- " bool | \n",
- " False | \n",
- " medications | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2860 | \n",
- " 2861 | \n",
- " atypical_antipsychotics | \n",
- " bool | \n",
- " False | \n",
- " medications | \n",
- " NaN | \n",
- "
\n",
- " \n",
- " 2861 | \n",
- " 2862 | \n",
- " glucocorticoids | \n",
- " bool | \n",
- " False | \n",
- " medications | \n",
- " NaN | \n",
- "
\n",
- " \n",
- "
\n",
- "
2862 rows × 6 columns
\n",
- "
"
- ],
- "text/plain": [
- " id covariate dtype isTarget \\\n",
- "0 1 eid int False \n",
- "1 2 age_at_recruitment float False \n",
- "2 3 sex category False \n",
- "3 4 ethnic_background category False \n",
- "4 5 townsend_deprivation_index_at_recruitment float False \n",
- "... ... ... ... ... \n",
- "2857 2858 surgical_dressings bool False \n",
- "2858 2859 statins bool False \n",
- "2859 2860 ass bool False \n",
- "2860 2861 atypical_antipsychotics bool False \n",
- "2861 2862 glucocorticoids bool False \n",
- "\n",
- " based_on aggr_fn \n",
- "0 eid NaN \n",
- "1 basics NaN \n",
- "2 basics NaN \n",
- "3 basics NaN \n",
- "4 basics NaN \n",
- "... ... ... \n",
- "2857 medications NaN \n",
- "2858 medications NaN \n",
- "2859 medications NaN \n",
- "2860 medications NaN \n",
- "2861 medications NaN \n",
- "\n",
- "[2862 rows x 6 columns]"
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "dtypes = {\"int32\":\"int\", \"int64\":\"int\", \"float64\":\"float\", \"category\":\"category\", \"object\":\"category\", \"bool\":\"bool\"}\n",
- "desc_dict = {\"id\": [*range(1, len(data_baseline.columns.to_list())+1)] , \n",
- " \"covariate\": data_baseline.columns.to_list(), \n",
- " \"dtype\":[dtypes[str(col)] for col in data_baseline.dtypes.to_list()], \n",
- " \"isTarget\":[True if col in targets else False for col in data_baseline.columns.to_list()],\n",
- " \"based_on\":[topic for col, topic in data_cols_single.items()],\n",
- " \"aggr_fn\": [np.nan for col in data_baseline.columns.to_list()]}\n",
- "data_baseline_description = pd.DataFrame.from_dict(desc_dict)\n",
- "data_baseline_description"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Exclusion Criteria"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {},
- "outputs": [],
- "source": [
- "#data_baseline_excl = data_baseline.copy().query(\"myocardial_infarction == False & coronary_heart_disease == False & statins == False\").reset_index(drop=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {},
- "outputs": [],
- "source": [
- "#data_baseline"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {},
- "outputs": [],
- "source": [
- "feature_dict = {}\n",
- "for group in data_baseline_description.based_on.unique(): feature_dict[group] = data_baseline_description.query(\"based_on==@group\").covariate.to_list()\n",
- "with open(os.path.join(path, dataset_path, 'feature_list.yaml'), 'w') as file: yaml.dump(feature_dict, file, default_flow_style=False, allow_unicode=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 88,
- "metadata": {},
- "outputs": [],
- "source": [
- "#feature_dict"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 89,
- "metadata": {},
- "outputs": [],
- "source": [
- "### WRITE FEATURES IN YAML!!!"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 90,
- "metadata": {},
- "outputs": [],
- "source": [
- "data_baseline.to_feather(os.path.join(path, dataset_path, 'baseline_covariates.feather'))\n",
- "#data_baseline_excl.to_feather(os.path.join(path, dataset_path, 'baseline_clinical_excl.feather'))\n",
- "data_baseline_description.to_feather(os.path.join(path, dataset_path, 'baseline_covariates_description.feather'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#data_baseline.to_csv(os.path.join(path, dataset_path, 'baseline_clinical.csv'), index=False)\n",
- "#data_baseline_description.to_csv(os.path.join(path, dataset_path, 'baseline_clinical_description.csv'), index=False)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# !!! REMEMBER IMPUTATION !!!"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "R [conda env:python]",
- "language": "R",
- "name": "conda-env-python-r"
- },
- "language_info": {
- "codemirror_mode": "r",
- "file_extension": ".r",
- "mimetype": "text/x-r-source",
- "name": "R",
- "pygments_lexer": "r",
- "version": "4.0.3"
- },
- "toc-autonumbering": true,
- "toc-showcode": false,
- "toc-showmarkdowntxt": false
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/neuralcvd/preprocessing/ukbb_tabular/1_preprocessing_dataportal.ipynb b/neuralcvd/preprocessing/ukbb_tabular/1_preprocessing_dataportal.ipynb
deleted file mode 100644
index a47d039..0000000
--- a/neuralcvd/preprocessing/ukbb_tabular/1_preprocessing_dataportal.ipynb
+++ /dev/null
@@ -1,5319 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# 1. Data Portal Preprocessing"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-12-23T09:27:43.184073Z",
- "start_time": "2020-12-23T09:27:38.838Z"
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "-- \u001b[1mAttaching packages\u001b[22m --------------------------------------- tidyverse 1.3.0 --\n",
- "\n",
- "\u001b[32mv\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.2 \u001b[32mv\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n",
- "\u001b[32mv\u001b[39m \u001b[34mtibble \u001b[39m 3.0.3 \u001b[32mv\u001b[39m \u001b[34mdplyr \u001b[39m 1.0.2\n",
- "\u001b[32mv\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.2 \u001b[32mv\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n",
- "\u001b[32mv\u001b[39m \u001b[34mreadr \u001b[39m 1.3.1 \u001b[32mv\u001b[39m \u001b[34mforcats\u001b[39m 0.5.0\n",
- "\n",
- "-- \u001b[1mConflicts\u001b[22m ------------------------------------------ tidyverse_conflicts() --\n",
- "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n",
- "\u001b[31mx\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n",
- "\n",
- "\n",
- "Attaching package: 'lubridate'\n",
- "\n",
- "\n",
- "The following objects are masked from 'package:base':\n",
- "\n",
- " date, intersect, setdiff, union\n",
- "\n",
- "\n",
- "\n",
- "Attaching package: 'glue'\n",
- "\n",
- "\n",
- "The following object is masked from 'package:dplyr':\n",
- "\n",
- " collapse\n",
- "\n",
- "\n",
- "\n",
- "Attaching package: 'data.table'\n",
- "\n",
- "\n",
- "The following objects are masked from 'package:lubridate':\n",
- "\n",
- " hour, isoweek, mday, minute, month, quarter, second, wday, week,\n",
- " yday, year\n",
- "\n",
- "\n",
- "The following objects are masked from 'package:dplyr':\n",
- "\n",
- " between, first, last\n",
- "\n",
- "\n",
- "The following object is masked from 'package:purrr':\n",
- "\n",
- " transpose\n",
- "\n",
- "\n",
- "\n",
- "Attaching package: 'magrittr'\n",
- "\n",
- "\n",
- "The following object is masked from 'package:purrr':\n",
- "\n",
- " set_names\n",
- "\n",
- "\n",
- "The following object is masked from 'package:tidyr':\n",
- "\n",
- " extract\n",
- "\n",
- "\n"
- ]
- }
- ],
- "source": [
- "try(library(tidyverse), silent=TRUE)\n",
- "library(lubridate)\n",
- "library(glue)\n",
- "library(data.table)\n",
- "library(tidyfast)\n",
- "library(\"magrittr\")\n",
- "setwd(\"/\")\n",
- "path = \"/data/analysis/ag-reils/ag-reils-shared/cardioRS/data/1_decoded\"\n",
- "data_path = \"/data/analysis/ag-reils/ag-reils-shared/cardioRS/data\""
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "- 'death.txt'
- 'death_cause.txt'
- 'gp_clinical.txt'
- 'gp_registrations.txt'
- 'gp_scripts.txt'
- 'hesin.txt'
- 'hesin_critical.txt'
- 'hesin_delivery.txt'
- 'hesin_diag.txt'
- 'hesin_maternity.txt'
- 'hesin_oper.txt'
- 'hesin_psych.txt'
\n"
- ],
- "text/latex": [
- "\\begin{enumerate*}\n",
- "\\item 'death.txt'\n",
- "\\item 'death\\_cause.txt'\n",
- "\\item 'gp\\_clinical.txt'\n",
- "\\item 'gp\\_registrations.txt'\n",
- "\\item 'gp\\_scripts.txt'\n",
- "\\item 'hesin.txt'\n",
- "\\item 'hesin\\_critical.txt'\n",
- "\\item 'hesin\\_delivery.txt'\n",
- "\\item 'hesin\\_diag.txt'\n",
- "\\item 'hesin\\_maternity.txt'\n",
- "\\item 'hesin\\_oper.txt'\n",
- "\\item 'hesin\\_psych.txt'\n",
- "\\end{enumerate*}\n"
- ],
- "text/markdown": [
- "1. 'death.txt'\n",
- "2. 'death_cause.txt'\n",
- "3. 'gp_clinical.txt'\n",
- "4. 'gp_registrations.txt'\n",
- "5. 'gp_scripts.txt'\n",
- "6. 'hesin.txt'\n",
- "7. 'hesin_critical.txt'\n",
- "8. 'hesin_delivery.txt'\n",
- "9. 'hesin_diag.txt'\n",
- "10. 'hesin_maternity.txt'\n",
- "11. 'hesin_oper.txt'\n",
- "12. 'hesin_psych.txt'\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- " [1] \"death.txt\" \"death_cause.txt\" \"gp_clinical.txt\" \n",
- " [4] \"gp_registrations.txt\" \"gp_scripts.txt\" \"hesin.txt\" \n",
- " [7] \"hesin_critical.txt\" \"hesin_delivery.txt\" \"hesin_diag.txt\" \n",
- "[10] \"hesin_maternity.txt\" \"hesin_oper.txt\" \"hesin_psych.txt\" "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "list.files(path = \"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Load Athena Vocabulary"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Warning message in fread(glue(\"{vocab_dir}/CONCEPT.csv\"), sep = \"\\t\"):\n",
- "\"Found and resolved improper quoting out-of-sample. First healed line 8811: <<2614984\t\"y set\" tubing for peritoneal dialysis\tDevice\tHCPCS\tHCPCS\tS\tA4719\t20020101\t20991231\t>>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning.\"\n"
- ]
- }
- ],
- "source": [
- "vocab_dir = glue(\"{data_path}/athena_vocabulary_covid\")\n",
- "concept =fread(glue(\"{vocab_dir}/CONCEPT.csv\"), sep='\\t')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "- 'ABMS'
- 'ATC'
- 'CDM'
- 'CMS Place of Service'
- 'Concept Class'
- 'Condition Status'
- 'Condition Type'
- 'Cost'
- 'Cost Type'
- 'Currency'
- 'Death Type'
- 'Device Type'
- 'Domain'
- 'Drug Type'
- 'Episode'
- 'Ethnicity'
- 'Gender'
- 'HCPCS'
- 'HES Specialty'
- 'ICD10CM'
- 'ICD9CM'
- 'ICD9Proc'
- 'Korean Revenue Code'
- 'LOINC'
- 'Meas Type'
- 'Medicare Specialty'
- 'Metadata'
- 'NDC'
- 'NUCC'
- 'None'
- 'Note Type'
- 'OMOP Extension'
- 'OPCS4'
- 'OSM'
- 'Obs Period Type'
- 'Observation Type'
- 'PHDSC'
- 'Plan'
- 'Plan Stop Reason'
- 'Procedure Type'
- 'Race'
- 'Read'
- 'Relationship'
- 'Revenue Code'
- 'RxNorm'
- 'RxNorm Extension'
- 'SNOMED'
- 'SPL'
- 'Sponsor'
- 'Type Concept'
- 'UB04 Point of Origin'
- 'UB04 Pri Typ of Adm'
- 'UB04 Pt dis status'
- 'UB04 Typ bill'
- 'UCUM'
- 'US Census'
- 'Visit'
- 'Visit Type'
- 'Vocabulary'
- 'dm+d'
\n"
- ],
- "text/latex": [
- "\\begin{enumerate*}\n",
- "\\item 'ABMS'\n",
- "\\item 'ATC'\n",
- "\\item 'CDM'\n",
- "\\item 'CMS Place of Service'\n",
- "\\item 'Concept Class'\n",
- "\\item 'Condition Status'\n",
- "\\item 'Condition Type'\n",
- "\\item 'Cost'\n",
- "\\item 'Cost Type'\n",
- "\\item 'Currency'\n",
- "\\item 'Death Type'\n",
- "\\item 'Device Type'\n",
- "\\item 'Domain'\n",
- "\\item 'Drug Type'\n",
- "\\item 'Episode'\n",
- "\\item 'Ethnicity'\n",
- "\\item 'Gender'\n",
- "\\item 'HCPCS'\n",
- "\\item 'HES Specialty'\n",
- "\\item 'ICD10CM'\n",
- "\\item 'ICD9CM'\n",
- "\\item 'ICD9Proc'\n",
- "\\item 'Korean Revenue Code'\n",
- "\\item 'LOINC'\n",
- "\\item 'Meas Type'\n",
- "\\item 'Medicare Specialty'\n",
- "\\item 'Metadata'\n",
- "\\item 'NDC'\n",
- "\\item 'NUCC'\n",
- "\\item 'None'\n",
- "\\item 'Note Type'\n",
- "\\item 'OMOP Extension'\n",
- "\\item 'OPCS4'\n",
- "\\item 'OSM'\n",
- "\\item 'Obs Period Type'\n",
- "\\item 'Observation Type'\n",
- "\\item 'PHDSC'\n",
- "\\item 'Plan'\n",
- "\\item 'Plan Stop Reason'\n",
- "\\item 'Procedure Type'\n",
- "\\item 'Race'\n",
- "\\item 'Read'\n",
- "\\item 'Relationship'\n",
- "\\item 'Revenue Code'\n",
- "\\item 'RxNorm'\n",
- "\\item 'RxNorm Extension'\n",
- "\\item 'SNOMED'\n",
- "\\item 'SPL'\n",
- "\\item 'Sponsor'\n",
- "\\item 'Type Concept'\n",
- "\\item 'UB04 Point of Origin'\n",
- "\\item 'UB04 Pri Typ of Adm'\n",
- "\\item 'UB04 Pt dis status'\n",
- "\\item 'UB04 Typ bill'\n",
- "\\item 'UCUM'\n",
- "\\item 'US Census'\n",
- "\\item 'Visit'\n",
- "\\item 'Visit Type'\n",
- "\\item 'Vocabulary'\n",
- "\\item 'dm+d'\n",
- "\\end{enumerate*}\n"
- ],
- "text/markdown": [
- "1. 'ABMS'\n",
- "2. 'ATC'\n",
- "3. 'CDM'\n",
- "4. 'CMS Place of Service'\n",
- "5. 'Concept Class'\n",
- "6. 'Condition Status'\n",
- "7. 'Condition Type'\n",
- "8. 'Cost'\n",
- "9. 'Cost Type'\n",
- "10. 'Currency'\n",
- "11. 'Death Type'\n",
- "12. 'Device Type'\n",
- "13. 'Domain'\n",
- "14. 'Drug Type'\n",
- "15. 'Episode'\n",
- "16. 'Ethnicity'\n",
- "17. 'Gender'\n",
- "18. 'HCPCS'\n",
- "19. 'HES Specialty'\n",
- "20. 'ICD10CM'\n",
- "21. 'ICD9CM'\n",
- "22. 'ICD9Proc'\n",
- "23. 'Korean Revenue Code'\n",
- "24. 'LOINC'\n",
- "25. 'Meas Type'\n",
- "26. 'Medicare Specialty'\n",
- "27. 'Metadata'\n",
- "28. 'NDC'\n",
- "29. 'NUCC'\n",
- "30. 'None'\n",
- "31. 'Note Type'\n",
- "32. 'OMOP Extension'\n",
- "33. 'OPCS4'\n",
- "34. 'OSM'\n",
- "35. 'Obs Period Type'\n",
- "36. 'Observation Type'\n",
- "37. 'PHDSC'\n",
- "38. 'Plan'\n",
- "39. 'Plan Stop Reason'\n",
- "40. 'Procedure Type'\n",
- "41. 'Race'\n",
- "42. 'Read'\n",
- "43. 'Relationship'\n",
- "44. 'Revenue Code'\n",
- "45. 'RxNorm'\n",
- "46. 'RxNorm Extension'\n",
- "47. 'SNOMED'\n",
- "48. 'SPL'\n",
- "49. 'Sponsor'\n",
- "50. 'Type Concept'\n",
- "51. 'UB04 Point of Origin'\n",
- "52. 'UB04 Pri Typ of Adm'\n",
- "53. 'UB04 Pt dis status'\n",
- "54. 'UB04 Typ bill'\n",
- "55. 'UCUM'\n",
- "56. 'US Census'\n",
- "57. 'Visit'\n",
- "58. 'Visit Type'\n",
- "59. 'Vocabulary'\n",
- "60. 'dm+d'\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- " [1] \"ABMS\" \"ATC\" \"CDM\" \n",
- " [4] \"CMS Place of Service\" \"Concept Class\" \"Condition Status\" \n",
- " [7] \"Condition Type\" \"Cost\" \"Cost Type\" \n",
- "[10] \"Currency\" \"Death Type\" \"Device Type\" \n",
- "[13] \"Domain\" \"Drug Type\" \"Episode\" \n",
- "[16] \"Ethnicity\" \"Gender\" \"HCPCS\" \n",
- "[19] \"HES Specialty\" \"ICD10CM\" \"ICD9CM\" \n",
- "[22] \"ICD9Proc\" \"Korean Revenue Code\" \"LOINC\" \n",
- "[25] \"Meas Type\" \"Medicare Specialty\" \"Metadata\" \n",
- "[28] \"NDC\" \"NUCC\" \"None\" \n",
- "[31] \"Note Type\" \"OMOP Extension\" \"OPCS4\" \n",
- "[34] \"OSM\" \"Obs Period Type\" \"Observation Type\" \n",
- "[37] \"PHDSC\" \"Plan\" \"Plan Stop Reason\" \n",
- "[40] \"Procedure Type\" \"Race\" \"Read\" \n",
- "[43] \"Relationship\" \"Revenue Code\" \"RxNorm\" \n",
- "[46] \"RxNorm Extension\" \"SNOMED\" \"SPL\" \n",
- "[49] \"Sponsor\" \"Type Concept\" \"UB04 Point of Origin\"\n",
- "[52] \"UB04 Pri Typ of Adm\" \"UB04 Pt dis status\" \"UB04 Typ bill\" \n",
- "[55] \"UCUM\" \"US Census\" \"Visit\" \n",
- "[58] \"Visit Type\" \"Vocabulary\" \"dm+d\" "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "unique(concept$vocabulary_id)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [],
- "source": [
- "relationship = fread(glue(\"{vocab_dir}/RELATIONSHIP.csv\"), sep='\\t')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "vocabulary = fread(glue(\"{vocab_dir}/VOCABULARY.csv\"), sep='\\t')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "concept_relationship = fread(glue(\"{vocab_dir}/CONCEPT_RELATIONSHIP.csv\"), sep='\\t')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [],
- "source": [
- "## Diagnoses"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Hospital Episode Statistics"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_diag = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin_diag.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_critical = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin_critical.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_psych = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin_psych.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_delivery = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin_delivery.txt\")\n",
- "hesin_maternity = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin_maternity.txt\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Diagnoses - ICD10"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {},
- "outputs": [],
- "source": [
- "## icd9 to icd10 mapping\n",
- "icd9to10_df = fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/codings/coding1836.tsv\")\n",
- "icd9to10_mapping = split(icd9to10_df$meaning, icd9to10_df$coding)\n",
- "hesin_diag_icd9 = hesin_diag %>% filter(diag_icd9!=\"\") %>% rowwise() %>% mutate(diag_icd10 = list(icd9to10_mapping[[diag_icd9]])) %>% drop_na(diag_icd10)\n",
- "hesin_diag = rbind(hesin_diag %>% filter(diag_icd9==\"\") %>% mutate(origin=\"hes_icd10\"), hesin_diag_icd9 %>% mutate(origin=\"hes_icd9\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {},
- "outputs": [],
- "source": [
- "hes_join = hesin[hesin_diag, on=c(\"eid\", \"ins_index\")]\n",
- "hes_join = hes_join[, c(\"eid\", \"origin\",\"ins_index\", \"arr_index\", \"level\", \"epistart\", \"diag_icd10\")][order(eid, ins_index, arr_index),]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [],
- "source": [
- "hes_join_date = hes_join %>% rename(date=\"epistart\") %>% mutate(date = ymd(as.Date(fast_strptime(date, \"%d/%m/%Y\"))))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {},
- "outputs": [],
- "source": [
- "hes_diagnoses = hes_join_date %>% drop_na(date) %>% rename(code = \"diag_icd10\") %>% mutate(instance=ins_index) %>% group_by(eid) %>% mutate(n = arr_index)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {},
- "outputs": [],
- "source": [
- "hes_diagnoses = hes_diagnoses %>% mutate(meaning=str_sub(code, 1, 3)) %>% select(c(eid, origin, instance, n, level, code, meaning, date))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "13502606"
- ],
- "text/latex": [
- "13502606"
- ],
- "text/markdown": [
- "13502606"
- ],
- "text/plain": [
- "[1] 13502606"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "A grouped_df: 6 × 8\n",
- "\n",
- "\teid | origin | instance | n | level | code | meaning | date |
\n",
- "\t<int> | <chr> | <int> | <int> | <int> | <list> | <chr> | <date> |
\n",
- "\n",
- "\n",
- "\t1003884 | hes_icd10 | 52 | 0 | 1 | E854 | E85 | 2020-09-30 |
\n",
- "\t1003884 | hes_icd10 | 52 | 1 | 2 | N084 | N08 | 2020-09-30 |
\n",
- "\t1003884 | hes_icd10 | 52 | 2 | 2 | E854 | E85 | 2020-09-30 |
\n",
- "\t1003884 | hes_icd10 | 52 | 3 | 2 | K778 | K77 | 2020-09-30 |
\n",
- "\t1003884 | hes_icd10 | 52 | 4 | 2 | E854 | E85 | 2020-09-30 |
\n",
- "\t1003884 | hes_icd10 | 52 | 5 | 2 | G998 | G99 | 2020-09-30 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A grouped\\_df: 6 × 8\n",
- "\\begin{tabular}{llllllll}\n",
- " eid & origin & instance & n & level & code & meaning & date\\\\\n",
- " & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 1003884 & hes\\_icd10 & 52 & 0 & 1 & E854 & E85 & 2020-09-30\\\\\n",
- "\t 1003884 & hes\\_icd10 & 52 & 1 & 2 & N084 & N08 & 2020-09-30\\\\\n",
- "\t 1003884 & hes\\_icd10 & 52 & 2 & 2 & E854 & E85 & 2020-09-30\\\\\n",
- "\t 1003884 & hes\\_icd10 & 52 & 3 & 2 & K778 & K77 & 2020-09-30\\\\\n",
- "\t 1003884 & hes\\_icd10 & 52 & 4 & 2 & E854 & E85 & 2020-09-30\\\\\n",
- "\t 1003884 & hes\\_icd10 & 52 & 5 & 2 & G998 & G99 & 2020-09-30\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A grouped_df: 6 × 8\n",
- "\n",
- "| eid <int> | origin <chr> | instance <int> | n <int> | level <int> | code <list> | meaning <chr> | date <date> |\n",
- "|---|---|---|---|---|---|---|---|\n",
- "| 1003884 | hes_icd10 | 52 | 0 | 1 | E854 | E85 | 2020-09-30 |\n",
- "| 1003884 | hes_icd10 | 52 | 1 | 2 | N084 | N08 | 2020-09-30 |\n",
- "| 1003884 | hes_icd10 | 52 | 2 | 2 | E854 | E85 | 2020-09-30 |\n",
- "| 1003884 | hes_icd10 | 52 | 3 | 2 | K778 | K77 | 2020-09-30 |\n",
- "| 1003884 | hes_icd10 | 52 | 4 | 2 | E854 | E85 | 2020-09-30 |\n",
- "| 1003884 | hes_icd10 | 52 | 5 | 2 | G998 | G99 | 2020-09-30 |\n",
- "\n"
- ],
- "text/plain": [
- " eid origin instance n level code meaning date \n",
- "1 1003884 hes_icd10 52 0 1 E854 E85 2020-09-30\n",
- "2 1003884 hes_icd10 52 1 2 N084 N08 2020-09-30\n",
- "3 1003884 hes_icd10 52 2 2 E854 E85 2020-09-30\n",
- "4 1003884 hes_icd10 52 3 2 K778 K77 2020-09-30\n",
- "5 1003884 hes_icd10 52 4 2 E854 E85 2020-09-30\n",
- "6 1003884 hes_icd10 52 5 2 G998 G99 2020-09-30"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "nrow(hes_diagnoses)\n",
- "head(hes_diagnoses %>% arrange(desc(date)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(hes_diagnoses, glue(\"{path}/codes_hes_diagnoses_210120.feather\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Procedures - Snomed CT"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 230,
- "metadata": {},
- "outputs": [],
- "source": [
- "# just do opcs4 for now..., no good opcs3 mapping available => SnomedCT Mapping probably the most reasonable..."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 231,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_oper = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/hesin_oper.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 232,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_oper[hesin_oper == \"\"] <- NA"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 233,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3dC5xcVZUu8EIeIoiMwoAo6Pi4\nKneUq+CMCujV8d5xvNqdQAiBBPIwvAw44SlIoiFEEgYIEQQcAwwiEEBAXhFieDmoAYRoEDCG\n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\njwAAAABJRU5ErkJggg==",
- "text/plain": [
- "plot without title"
- ]
- },
- "metadata": {
- "image/png": {
- "height": 420,
- "width": 420
- }
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "library(visdat)\n",
- "df = hesin_oper %>% sample_n(1000)\n",
- "vis_miss(df)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 234,
- "metadata": {},
- "outputs": [],
- "source": [
- "hesin_oper_pre = hesin_oper %>% rename(date=\"opdate\", code=\"oper4\") %>% \n",
- " mutate(date = ymd(as.Date(fast_strptime(date, \"%d/%m/%Y\")))) %>%\n",
- " mutate(origin=\"hes_opcs4\", instance=ins_index) %>% group_by(eid) %>% mutate(n = arr_index) %>% select(eid, origin, instance, n, level, code, date)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 235,
- "metadata": {},
- "outputs": [],
- "source": [
- "concept_ids_opcs4 = concept %>% filter(vocabulary_id == \"OPCS4\") %>% mutate(concept_code = str_replace(concept_code, \"\\\\.\", \"\"))\n",
- "concept_ids_snomed = concept %>% filter(vocabulary_id == \"SNOMED\" & domain_id==\"Procedure\") \n",
- "\n",
- "# check necessary opcs4 concept ids\n",
- "concept_ids = concept_ids_opcs4 %>% mutate(concept_id_1 = concept_id)\n",
- "\n",
- "cr_filtered = concept_relationship %>% filter(concept_id_1 %in% concept_ids_opcs4$concept_id) %>% filter(concept_id_2 %in% concept_ids_snomed$concept_id) %>% arrange(concept_id_1)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 236,
- "metadata": {},
- "outputs": [],
- "source": [
- "mapping_opcs4_snomed = concept_ids_opcs4 %>% \n",
- " left_join(cr_filtered %>% select(concept_id_1, concept_id_2), by=c(\"concept_id\"=\"concept_id_1\")) %>% \n",
- " left_join(concept_ids_snomed %>% select(concept_id, concept_code, concept_name), by=c(\"concept_id_2\"=\"concept_id\")) %>% \n",
- " mutate(code = concept_code.x, meaning=concept_code.y, name=concept_name.y)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 237,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "7624501"
- ],
- "text/latex": [
- "7624501"
- ],
- "text/markdown": [
- "7624501"
- ],
- "text/plain": [
- "[1] 7624501"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "A grouped_df: 6 × 9\n",
- "\n",
- "\teid | origin | instance | n | level | date | code | meaning | name |
\n",
- "\t<int> | <chr> | <int> | <int> | <int> | <date> | <chr> | <chr> | <chr> |
\n",
- "\n",
- "\n",
- "\t1000018 | hes_opcs4 | 5 | 2 | 2 | 2018-08-29 | Z942 | 387713003 | Surgical procedure |
\n",
- "\t1000018 | hes_opcs4 | 5 | 1 | 2 | 2018-08-29 | Z501 | NA | NA |
\n",
- "\t1000018 | hes_opcs4 | 4 | 0 | 1 | 2016-11-08 | Q108 | 11401008 | Dilation and curettage of uterus |
\n",
- "\t1000018 | hes_opcs4 | 0 | 0 | 1 | 2005-06-02 | V093 | 178397008 | Reduction of fracture of zygomatic bone |
\n",
- "\t1000018 | hes_opcs4 | 2 | 0 | 1 | NA | X998 | NA | NA |
\n",
- "\t1000018 | hes_opcs4 | 0 | 1 | 2 | 2005-06-02 | Z942 | 387713003 | Surgical procedure |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A grouped\\_df: 6 × 9\n",
- "\\begin{tabular}{lllllllll}\n",
- " eid & origin & instance & n & level & date & code & meaning & name\\\\\n",
- " & & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 1000018 & hes\\_opcs4 & 5 & 2 & 2 & 2018-08-29 & Z942 & 387713003 & Surgical procedure \\\\\n",
- "\t 1000018 & hes\\_opcs4 & 5 & 1 & 2 & 2018-08-29 & Z501 & NA & NA \\\\\n",
- "\t 1000018 & hes\\_opcs4 & 4 & 0 & 1 & 2016-11-08 & Q108 & 11401008 & Dilation and curettage of uterus \\\\\n",
- "\t 1000018 & hes\\_opcs4 & 0 & 0 & 1 & 2005-06-02 & V093 & 178397008 & Reduction of fracture of zygomatic bone\\\\\n",
- "\t 1000018 & hes\\_opcs4 & 2 & 0 & 1 & NA & X998 & NA & NA \\\\\n",
- "\t 1000018 & hes\\_opcs4 & 0 & 1 & 2 & 2005-06-02 & Z942 & 387713003 & Surgical procedure \\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A grouped_df: 6 × 9\n",
- "\n",
- "| eid <int> | origin <chr> | instance <int> | n <int> | level <int> | date <date> | code <chr> | meaning <chr> | name <chr> |\n",
- "|---|---|---|---|---|---|---|---|---|\n",
- "| 1000018 | hes_opcs4 | 5 | 2 | 2 | 2018-08-29 | Z942 | 387713003 | Surgical procedure |\n",
- "| 1000018 | hes_opcs4 | 5 | 1 | 2 | 2018-08-29 | Z501 | NA | NA |\n",
- "| 1000018 | hes_opcs4 | 4 | 0 | 1 | 2016-11-08 | Q108 | 11401008 | Dilation and curettage of uterus |\n",
- "| 1000018 | hes_opcs4 | 0 | 0 | 1 | 2005-06-02 | V093 | 178397008 | Reduction of fracture of zygomatic bone |\n",
- "| 1000018 | hes_opcs4 | 2 | 0 | 1 | NA | X998 | NA | NA |\n",
- "| 1000018 | hes_opcs4 | 0 | 1 | 2 | 2005-06-02 | Z942 | 387713003 | Surgical procedure |\n",
- "\n"
- ],
- "text/plain": [
- " eid origin instance n level date code meaning \n",
- "1 1000018 hes_opcs4 5 2 2 2018-08-29 Z942 387713003\n",
- "2 1000018 hes_opcs4 5 1 2 2018-08-29 Z501 NA \n",
- "3 1000018 hes_opcs4 4 0 1 2016-11-08 Q108 11401008 \n",
- "4 1000018 hes_opcs4 0 0 1 2005-06-02 V093 178397008\n",
- "5 1000018 hes_opcs4 2 0 1 X998 NA \n",
- "6 1000018 hes_opcs4 0 1 2 2005-06-02 Z942 387713003\n",
- " name \n",
- "1 Surgical procedure \n",
- "2 NA \n",
- "3 Dilation and curettage of uterus \n",
- "4 Reduction of fracture of zygomatic bone\n",
- "5 NA \n",
- "6 Surgical procedure "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "hes_procedures = hesin_oper_pre %>% left_join(mapping_opcs4_snomed %>% select(code, meaning, name), by=\"code\") %>% select(eid, origin, instance, n, level, date, code, meaning, name)\n",
- "nrow(hesin_procedures)\n",
- "head(hesin_procedures)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 238,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(hes_procedures, glue(\"{path}/codes_hes_procedures_210119.feather\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Mortality Records - ICD10"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 239,
- "metadata": {},
- "outputs": [],
- "source": [
- "death = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/death.txt\")\n",
- "death_cause = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/death_cause.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 240,
- "metadata": {},
- "outputs": [],
- "source": [
- "death_join = death[death_cause, on=c(\"eid\", \"ins_index\")]\n",
- "death_join = death_join[, c(\"eid\", \"ins_index\", \"arr_index\", \"level\", \"date_of_death\", \"cause_icd10\")][order(eid, ins_index, arr_index),]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 241,
- "metadata": {},
- "outputs": [],
- "source": [
- "death_join_date = death_join %>% rename(date=\"date_of_death\") %>% rename(code = \"cause_icd10\") %>% mutate(date = ymd(as.Date(fast_strptime(date, \"%d/%m/%Y\"))))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 242,
- "metadata": {},
- "outputs": [],
- "source": [
- "codes_death = death_join_date %>% mutate(instance=0) %>% mutate(origin=\"death_records\") %>% group_by(eid) %>% mutate(n=row_number())\n",
- "codes_death = codes_death %>% mutate(meaning=str_sub(code, 1, 3)) %>% select(c(eid, origin, instance, n, level, code, meaning, date))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 243,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A grouped_df: 6 × 8\n",
- "\n",
- "\teid | origin | instance | n | level | code | meaning | date |
\n",
- "\t<int> | <chr> | <dbl> | <int> | <int> | <chr> | <chr> | <date> |
\n",
- "\n",
- "\n",
- "\t5285138 | death_records | 0 | 1 | 1 | U071 | U07 | 2020-11-01 |
\n",
- "\t5285138 | death_records | 0 | 2 | 2 | J449 | J44 | 2020-11-01 |
\n",
- "\t1206785 | death_records | 0 | 1 | 1 | G309 | G30 | 2020-10-29 |
\n",
- "\t1611467 | death_records | 0 | 1 | 1 | C260 | C26 | 2020-10-29 |
\n",
- "\t1611467 | death_records | 0 | 2 | 2 | J189 | J18 | 2020-10-29 |
\n",
- "\t2449704 | death_records | 0 | 1 | 1 | U071 | U07 | 2020-10-29 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A grouped\\_df: 6 × 8\n",
- "\\begin{tabular}{llllllll}\n",
- " eid & origin & instance & n & level & code & meaning & date\\\\\n",
- " & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 5285138 & death\\_records & 0 & 1 & 1 & U071 & U07 & 2020-11-01\\\\\n",
- "\t 5285138 & death\\_records & 0 & 2 & 2 & J449 & J44 & 2020-11-01\\\\\n",
- "\t 1206785 & death\\_records & 0 & 1 & 1 & G309 & G30 & 2020-10-29\\\\\n",
- "\t 1611467 & death\\_records & 0 & 1 & 1 & C260 & C26 & 2020-10-29\\\\\n",
- "\t 1611467 & death\\_records & 0 & 2 & 2 & J189 & J18 & 2020-10-29\\\\\n",
- "\t 2449704 & death\\_records & 0 & 1 & 1 & U071 & U07 & 2020-10-29\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A grouped_df: 6 × 8\n",
- "\n",
- "| eid <int> | origin <chr> | instance <dbl> | n <int> | level <int> | code <chr> | meaning <chr> | date <date> |\n",
- "|---|---|---|---|---|---|---|---|\n",
- "| 5285138 | death_records | 0 | 1 | 1 | U071 | U07 | 2020-11-01 |\n",
- "| 5285138 | death_records | 0 | 2 | 2 | J449 | J44 | 2020-11-01 |\n",
- "| 1206785 | death_records | 0 | 1 | 1 | G309 | G30 | 2020-10-29 |\n",
- "| 1611467 | death_records | 0 | 1 | 1 | C260 | C26 | 2020-10-29 |\n",
- "| 1611467 | death_records | 0 | 2 | 2 | J189 | J18 | 2020-10-29 |\n",
- "| 2449704 | death_records | 0 | 1 | 1 | U071 | U07 | 2020-10-29 |\n",
- "\n"
- ],
- "text/plain": [
- " eid origin instance n level code meaning date \n",
- "1 5285138 death_records 0 1 1 U071 U07 2020-11-01\n",
- "2 5285138 death_records 0 2 2 J449 J44 2020-11-01\n",
- "3 1206785 death_records 0 1 1 G309 G30 2020-10-29\n",
- "4 1611467 death_records 0 1 1 C260 C26 2020-10-29\n",
- "5 1611467 death_records 0 2 2 J189 J18 2020-10-29\n",
- "6 2449704 death_records 0 1 1 U071 U07 2020-10-29"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "head(codes_death %>% arrange(desc(date)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 244,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(codes_death, glue(\"{path}/codes_death_records_210115.feather\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## GP Records"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-12-23T09:27:49.989427Z",
- "start_time": "2020-12-23T09:27:48.579Z"
- }
- },
- "outputs": [],
- "source": [
- "gp_registrations = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/gp_registrations.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-12-23T11:13:46.064068Z",
- "start_time": "2020-12-23T11:11:59.825Z"
- }
- },
- "outputs": [],
- "source": [
- "gp_clinical = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/gp_clinical.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_clinical[gp_clinical == \"\"] <- NA"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_clinical = gp_clinical %>% rename(date=\"event_dt\") %>% mutate(date = ymd(as.Date(fast_strptime(date, \"%d/%m/%Y\"))))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [],
- "source": [
- "# clean_dates\n",
- "# These data are provided in a form which is as close as possible to how they were issued from their source supplier, in order to avoid potential systematic error or bias by attempting to ‘clean’ them by\n",
- "# removing or altering invalid or erroneous information. However, to protect individuals, alterations have been made to dates in relation to participant date of birth as follows:\n",
- "\n",
- "# - where clinical event or prescription date precedes participant date of birth it has been altered to 01/01/1901.\n",
- "# - Where the date matches participant date of birth it has been altered to 02/02/1902.\n",
- "# - Where the date follows participant date of birth but is in the year of their birth it has been altered to 03/03/1903.\n",
- "# - Where the date was in the future this has been changed to 07/07/2037 as these are likely to have been entered as a place-holder or other system default."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_clinical = gp_clinical %>% filter(date!=\"2037-07-07\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 190,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2dfYBUdb3/x3zIMPOWpmmaPXgr\nf7f8lXZvpdatvL+6/WoXZFmxRRcIHwi5F0VREwoRXQxcCTMr1Mw0UIlQJOPiA4aGmlqYKCIu\n4rI8OYA87vPO955z5mGH5ezM7He/7/nM58z79cfO7AOf+Xw/n8+LM3PmzDkxQwjpNzHpBAiJ\nAhSJEAdQJEIcQJEIcQBFIsQBFIkQB1AkQhxAkQhxAEUixAEUiRAHUCRCHECRCHEARSLEARSJ\nEAdQJEIcQJEIcQBFIsQBFIkQB1AkQhxAkQhxAEUixAEUiRAHUCRCHECRCHEARSLEARSJEAdQ\nJEIcQJEIcQBFIsQBFIkQB1AkQhxAkQhxAEUixAEUqSDW3/Crx3dLJ0FKGIpUEJue/s2Fg36x\nSzoNUrJQpIL5y6ja16VzIKUKRSqArjeCm+YpVS8LZ0JKFYpUAM/PSN523VizUTYTUqpQpALY\n/ANjWp59y5i2y34knQspTShSIdS07Bo9YehvjGmofEk6F1KSUKRCuGbVvBlmy0XzjJlxq3Qu\npCShSLlJPHDVve3mzkULf5gwa6s7zHMXSmdEShKKlJv5Vzx3zTVtT85qGfPzzq1VnaZlUKd0\nSqQUoUi5mbTUdE66u3Gc2XbZiPMf9n4wiyKREChSbuaPazEvj02c22ESq5ukkyGlC0XKQWer\n6bzushdm3mImvCGdCyltKFKvJOZVV179Wuf9l/28xfzyf6SzIaUNReqVOZc3Nk6vXBTcX/IL\n4WRIiUORwmkzu86Oe7cLKh/xv22YL5wPKXEoUig7rjPrK5v9e/MHNUgn0xegH5zip7J6hyKF\nsnVooqv2vuDulDrhXPoE9INT/FRW71CkUBJVr5hHB73o311RI51MX4F+cAoUXO2WNB2bIoVT\nd6sxt1a94N174WLpXAoH+sEpaHC1W9J0bIoUznODGk3itoF3b1510V+kcykc6Aen4J/K0rgl\nzcSmSL1wzWWtxiwbU1HzhHQmfQD6wSn8p7KgH0FGBvdiU6Re2HLe1HbvZm+XdCJ9AvrBKVzw\n1LNGyMYuHRsavOtGitQbq8+9eqd0Dn0G+sEpXPD0s0bExi4TGxq8jSL1yvqLaxa2SCdRMNAP\nTqE/lZV51gjYknbHhganSD3pun5d6l7772urbpjzlmg2BQP94BT8U1mZZ42ALWl3bGRwitSD\nljcmJTLfJF55ZF67YDJ9APrBKfinsrqfNbr/CHJ3bGRwitSDuh/9VjoFC7oaoB+cAgbv+azR\n5cauZ2xkcIrUg6aRw96RzqHPdNVX7YF9cCr+eifwU1k9nzW63NjtFxsYnCJl0zF/Yv0zI8bv\nlc6jj3TVTxz9D9AHpxK/HlhxWQsqeMizRocgY/cMTpGy6Jo0aeGkIY+MuFyXSZ5HrTNTn/Nw\n/sGp2ydsaRq+DBO8q/4R6Gf5cbG3re8ZnCJl8cB1CXP75Xs36jLJ98gsuib5jesPTr1Zs8eY\n61a8tB0QPEgc9ayxa2EnLHZi9sCKJ3sEp0gB66f4R/Betsz3yDSuGaHpk+V/n9RqzKaBmGMy\nF17hvWw8d/TwqmXOQwceGQN61vhUxdROVOzfX7Z9R6JHcIoUsGXUpZ5JE+/wPTLDX9X1kZtg\nd/3YByGx//G4SYyd05mYeY7rjXRX/Q89jzqfnd/of+f8Keni+uqpqT0LzmOPet6Ytj8/2JQd\nnCIlCUx6uuJib1w2OJ+ZYrCwtg0V2n9at73C9bHTHdeM2W3il40YcfbTBvBZ/oUvrkyb5Dz2\necvMtrEXX1D1TFZwipSi0Tfp9orbm1aPcb1/pyi0nX8vMvzqauf/u+wde2Xb5XMSXbNqEP8F\nLNtkkiYl8v9tX7lpQuLGOSZxa01r988oUkDLjDE3DPJMWnhuxdBHpJOx44mBz+OCbx79R/dB\n4yOuvNK72VKBOvOmb9KO8Zucx11fde/V3s2uinXdP6NIm/z/D2+u6zTrvu+Z1L4B9gwJzW33\nu40Xfy1VisSNl1ZDXoGtC/7T+kdNByK4z8rq68bOAcRdWnmRt61bU511THPZi5QY55+Z4ezl\n3pcNQy9VdY4cfw9vFm6fwyR+PahidPJzJImnH97iNHaGLabDbBr9qNOYXdlnfVpegfDImMcG\nXbfq+YsXZf2k7EUyLaalzVxws3/3gSHj9HxuIrWHN0mj8+C/nBDfNGIRJnb89XTeLWNGVi1w\nGrurvqq7hztcb4+2rU/dWXv90Isfz/4NRTLmholt/1PxmHfnkd//STqXvtC9h3fNwN87jr2x\nepcxsx7+a9x97ORBR6lvXl261Wnw4GipzHf1bj0K3ojt5XcUqWX2umET226tvK9904VrpZMp\nGP8JTNYe3tmun8E8VdtpNtX84MKq5c5jZx105Hxjl320VKN/vlynJN+ITQffF4rUWLnCM6l1\nzqCqQS7fb8CelTR4AgPbw7u3KRGvnnRvzb2JxKxzXe98yTroyPnGLvtoKfdb6aw3YvcPTpFM\n3WTjb5O2POn0s7DQE7V1P4EB7OFN3DuoYvz2htvvGud9s6fC9VY6+6Aj1xu7fY6Wcr6Vzn4j\ndr/gFMk0VL4ZmOQ+MupcatlPYNzv4f31hKaG0TONecz/n/2Naqe7X7qWJHAHHRns0VLhb8Sm\nKW+RWu7xT9A0pd54Jj2e96/7DuiUp9mHezvfw9t0zk4v6EhjVlcuSqwf7fbt6cUVs/xZhxx0\nlJjzvSE3+ttmwNFSydhhb8SmKW+RVo4ZOHOjeW3Q28bscBoYeaK2tn2ewDjew9tmHr/Au1l7\nrvflgcqhVY4Pl3px+NBZqVd0zg86mn35qtU/POdFyNFSqdghb8SmKW+RTOLZKwbO3DTpdtdx\ngSdq23HdPk9g3O7h9YI3+m8BrBrlfUk0/dXtfy9e/KpXUiY5P+goXuUlu/ucwS8DjpbKxN7/\njdg0ZSxSxwMTpnnPLl6efPZVbl8IGOiJ2rYOTf6XnnoC4/ZZTDr48gne0Lvdh5FMdOSbq4fO\naptX5/igIy/40+d5t81Tp9fudn20VFtW7P3eiE1TuiKhr2rVfs2PHrxioH94ytrpc51Hx52o\nzb/ijA/kcO908EXTXD9n9LZ1PlMfM6uH1s5Y5vagIz/4hkHzTOes+5pr5zp+P8ALnh27F0pX\nJPRVre6dnDCJX1S+gIkOPFFbXcpMyOHeqeAP1bs+uia1rZsz27RfXTnL8TtfQfBFA8eMnNRm\n7vmh29hB8PyxS1ckH+S1OMYs9r4krr/IdVzkidoC/CvOBLg+3Dsr+JIxro9SS23rnruqfXL9\nqqHPIYK/+dBznk8PTnYbOxk8b+wSFSm91wt1LY6u69dNmO7febPC9TYPeaK2JMEVZwzkI2vp\n4I3uj5pObuviQyfXdxm3x9eZ7q10W8eWi54FBc8du0RFyuz1wlzVyj8v8ZPBcaorh7m+bgv0\nZGoBqSvOYEgFf8154NS2bnQ94kI56a30L6uqFqKC545doiJ17/WCXNUqOC/xbZW/27F2tOMz\nzHS24k6mtrcp/RYM4IozmY82wC5nk9zWbcdccCq1lW59BXGa3GTw3LFLVKSsvV6IS2Ylz0s8\nv7piSNhbAvYk5lVXThgGOplacAhc8r7zK85kf7QBdTmbYmxI5YKXqkhZlxAAXDLLbAzOS9y6\nzvHAzLm8sXF6RS3kZGrpQ+ACXF9xJvt8qrDL2SC2dSWzlS49kfa7hIDj/cett9ZevcpAzqa6\n6+y493VBpX98muuTqWUOgUvh9Ioz+5xP1XHwrA/Eu9+Qls5WuvRE2m+vl+P9x9fX/fGKsx93\nb1KbV+7KZv/e/EEN7k+m1n0IHADg+VSzPxDvfFtXQlvp0hNp/71eLvcft2wanzBdtw180TPJ\n6ZMv/831rtr7gvtT6lxGTpJ1CJz74MiPNmSd8tQ43pCW0la69ESCXjHLTJ3g/weWmFbbYdy+\ngRS8uf7oIP+URGZFjdPQ3QAOgcuAOZ/qPh+Id00pbaVLTaTOVuBFrTzWnV/jC9TkfGKSb67f\nWuUfcvTCxY6Dp3F/CNy+AM6nijzlaSltpUtLJH/38dUrMZcQSNFYe7X3qrFx4DbXgYP3vxO3\nDbx786qL/uI6eAr3h8DtA+R8qj6oU576lMhWurRECnYfVwbv7Ti/hECaxtqxTz1zsduTqfmk\n3v9eNqai5gnnwVO4PwSuG9j5VH1Qpzw1JbOVLh2R2vbdfez8EgIZGmuH3vsqIG76ELi9mPfu\nfQCHwGVAnE/Vv5Ro8mPZgFOepoJjttKZzAvdSpeMSP5er+zdx0AaaxFnOsG8uZ68AloGt4fA\n9QjunOSlRFcYwClPu4NDttKp4H3YSpeMSP5eL+Tu42xAJiHeXE9eAQ0ENLjJXErUOD/laXZw\nyFY6FbwPW+mSESnY64XefZymsRZyMSHEUWo9hr3rKVxwt7FN96VE97g+5ek+wd0fqJ6deaGU\njEjJvV6o3cddC3/yp+5dpF1PbXL5JKz7lQDiKLXG7GHvqp/s9C2Z7OCuY2ddStRt2JIMXjoi\nBXu9QLuP2yZdc9ug+rRJjiem+5WAcfzmuum+Alrqoeonw4K7jn17C+5SoiUYvHRESu31guw+\nnj09YaZVpExyPDFZrwQAZK6A5uM68+zgrmNvHnF1C+xSoiUYvIRESu/1Auw+Pucl89vLllZO\nX/dX9xNj8Xy6D2RfAc155lnBncc2G/15RF1KtPSCl4BImZ2wkM9m3r2lZYu5Mf70hbvMj2sq\nFrqdmCA49Ml61hXQ3M96d3CHsf1Libb4wYJ5dHwp0dINXgIide86Quz1mjNqgr+H7gePGvOT\nxgbH0xgERz1ZD3aQZF0Bba7LzHsEdxc7MW5im5kahGsaelWzo6ilH7wERMoyCbDXa3f1EP+t\ngKH3me2jOhxPYyo45sl6agdJ9xXQ9jrMvGdwh7H9N+ne+F5Q5rnnjHe837t0g5eCSNk7YV3v\n9TJrZ48b5Q37nMqpI/1jPVxOYyY45Ml6agdJl+sroMGDd8/jI484r0rJBi8Bkfbdw+ueXcGw\nPzHT+fnOuoM7frIekNlBssjtFdDwwZPzOHFn/EL3nycr2eCyIvkv7/bdw+uW5Puw/rC/s0JX\ncJO9g0RTcL8q/jw2jBw82PUh9kHFSzS4qEiJcf4RQdl7eN2Sfh9217jv1S5WFTwgvYNEU/Bk\nVd7y5nHPUtcfzUxVvLEkg8tukVpMS1v2Hl53BPvUM+/Dttzn8qweyf31oOAByYOO0jtIELFB\nwdNVeQtxWHC64pBjjvsbXPo10g0T27L28Loj2BOY/T6s69io4D6pg47SO0gQsQ0keHdVnq5w\nfynRTMXn15ZecGmR/Ksgd+/hdYg/7ahXAoFJwNcw6YOOEDtIMgc0AYK3zO6uiuvD67NjL3T9\nvr2D4JIiBU8yPJNaIXt4g33qoFcCyf31sNcwyIOOkLEbK1fAqoKM7SK4oEipJxn+NmmL852w\nqX3qkFcC6f31kOBd16/DHXTkBYce0FQ3GfbiCxrbQXBBkdJPMnyTnAdP7VOfjXglkN5fj3iZ\n4V9wBnbQkR8c9ukDn4bKN1EvvqCxHQQXFCnzJGPdMPevHdP71BcCXmZk9tcDXmYEF5xBfUIg\nCA6K3XKPfx2rKfWIF1/I2K6CC4rU/STD9UXojcHsUy9C7OQFZ0CfEEgGx8ReOWbgzI3mtUFv\nO4+Mje0quKBI0CcZkH3qRYiduuAM5KCjdHBM7MSzVwycuWnS7YDQ0NiOgkvutUN9xDEAsk+9\nCLExF5wpSnDz8uSzr6pGXKMMHNtFcNH3kVAfcfRJQPap42OrNsmsnT5XZez+B5d9QxbzJCOF\n+33qxYnt+oIzRQxexkgf2UBCcHvBmWIGL18oEiEOoEiEOIAiEeIAikSIAygSIQ6gSIQ4gCIR\n4gCKRIgDZEVqdX+tyAyJVsQnwFJ0tuIuFGvaW3GxTRtLHkJ7ayL/H+VEVqT4O7jY7XHI5SGS\nNMeBxzbtjPe3qznYuh0XuyMOvJJmcxz4/8vOeH8tpUhWUKQwKJIUFCkMihQGRcoBRQqDIoVB\nkXJAkcKgSGFQpBxQpDAoUhgUKQcUKQyKFAZFygFFCoMihUGRckCRwqBIYVCkHFCkMChSGBQp\nBxQpDIoUBkXKAUUKgyKFQZFyQJHCoEhhUKQcUKQwKFIYFCkHFCkMihQGRcoBRQqDIoVBkXJA\nkcKgSGFQpBxQpDAoUhgUKQcUKQyKFAZFygFFCoMihUGRckCRwqBIYVCkHFCkMChSGBQpBxQp\nDIoURkRF2l0/vGbKln4+OEUKhSKFEVGRpl61dsOMS/r76BQpDIoURjRFilc2eFulQSv6+egU\nKQyKFEY0RVpe5fd67P39fHSKFAZFCiOaIi0e4X+dODv9/a7tVsS32v27QtiGDb4NF3xrHBd7\nexwYHFryraVY8h39FmnkviLt3JrmVVJsxgJRmziUzLR3P6OyFOnZ5FO7efv/5gUSwmlI1Cau\nlhAjLEXaVrnG2wwNXEmRCgPaVrWJq8WdSGbapWubrh0f8qIY2VW9QNuqNnG1OBRp78zaYXVh\nO4CQXdULtK1qE1eLQ5F6BdlVvUDbKr04a6BVQUKRpIC2VXpx1kCrgoQiSQFtq9rE1UKRpIC2\nVXpx1kCrgoQiSQFtq/TirIFWBQlFkgLaVrWJq4UiRRLkyKhNHApFkgLaVrWJq4UiSQFtq/Ti\nrIFWBQlFkgLaVrWJq4UiSQFtq9rE1UKRpIC2VW3iaqFIkUR6rMoPiiQFtK3Si7MGWhUkFCmS\nSI9V+UGRpIC2VW3iaqFIUkDbKr04a6BVQUKRpIC2VW3iaqFIkQQ5MmoTh0KRpIC2VW3iaqFI\nkQQ5MmoTh0KRIon0WJUfFEkKaFvVJq4WiiQFtK1qE1cLRZIC2lbpxVkDrQoSiiQFtK3Si7MG\nWhUkFCmSSI9V+UGRIon0WJUfFEkKaFvVJq4WihRJpMeq/KBIUkDbqjZxtVAkKaBtlV6cNdCq\nIKFIUkDbqjZxtVAkKaBtlV6cNdCqIKFIkUR6rMoPihRJkCOjNnEoFEkKaFulF2cNtCpIKFIk\nkR6r8oMiSQFtq/TirIFWBQlFkgLaVunFWQOtChKKJAW0rdKLswZaFSQUKZIgR0Zt4tDMKZIU\nakcGCrQqSCiSFNC2qk1cLRRJCmhbpRdnDbQqSCiSFNC2Si/OGmhVkFCkSIIcGbWJQ6FIUkDb\nKr04a6BVQUKRIon0WJUfFEkKaFulF2cNtCpIKJIU0LaqTVwtFCmSIEdGbeJQKJIU0LZKL84a\naFWQUKRIghwZtYlDoUhSQNsqvThroFVBQpGkgLZVenHWQKuChCJJAW2r9OKsgVYFCUWSAtpW\ntYmrhSJJAW2r2sTVQpGkgLZVbeJqoUhSQNuqNnG1UCQpoG2VXpw10KogoUhSQNsqvThroFVB\nQpGkgLZVenHWQKuChCJJAW2r2sTVQpGkgLZVenHWQKuCBCfS7nfSSDenNIG2VW3iaslM+07X\nInV1pkF2lYSCHBnptZUmmWnvci1SN9JrLE2Qs84tUtEJmXuKVBSgbZVenDXQqiChSFJA26o2\ncbVQpEiCHBm1iUOhSFJA2yq9OGugVUFCkSIJcmTUJg6FIkkBbav04qyBVgUJRYokyJFRmzgU\niiQFtK3Si7MGWhUkFEkKaFvVJq4WihRJkCOjNnEoFEkKaFulF2cNtCpIKJIU0LZKL84aaFWQ\nUCQpoG1Vm7haKFIkkR6r8oMiSQFtq/TirIFWBQlFkgLaVunFWQOtChKKJAW0rdKLswZaFSQU\nSQpoW6UXZw20KkgokhTQtqpNXC0UKZIgR0Zt4lAokhTQtqpNXC0USQpoW9UmrhaKJAW0rWoT\nVwtFkgLaVunFWQOtChKKJAW0rWoTVwtFiiTSY1V+UCQpoG2VXpw10KogoUhSQNuqNnG1UKRI\nghwZtYlDoUiRBDkyahOHQpGkgLZVenHWQKuChCJFEuTIqE0cCkWKJNJjVX5QpEiCHBm1iUOh\nSFJA2yq9OGugVUFCkSKJ9FiVHxRJCmhb1SauFookBbSt0ouzBloVJBRJCmhb1SauFooUSZAj\nI7220oQiSYGcdb3DDq0KEooUSaTHqvygSFJA2yq9OGugVUFCkaSAtlVt4mqhSFJA2yq9OGug\nVUFCkaSAtlVt4mqhSJFEeqzKD4okBbStahNXC0WSAtpW6cVZA60KEookBbStahNXC0WSAtpW\ntYmrhSJJAW2r2sTVQpGkgLZVenHWQKuChCJJAW2r9OKsgVYFCUWSAtpW6cVZA60KEooUSZAj\nozZxKBQpkiBHRm3iUCiSFNC2Si/OGmhVkFAkKaBtVZu4WiiSFNC2Si/OGmhVkFCkSCI9VuUH\nRYokyJGRXltpQpGkQM46XyMVHYokBbSt0ouzBloVJP0QaduM8865erUx/1XhUW3M7vrhNVO2\nUKRSADkyahOH0g+RLruqYeNNw1rMyIfj8fg2Y6ZetXbDjEu6KFJhQNsqvThroFVBYi/SrrpG\nY96ueN0MeT74Pl7Z4G2VBq2gSIUBbav04qyBVgWJvUgBqwZub6+4Zdz365rM8qqE94Ox91Ok\nwoC2VW3iaumfSLvG3GV2nH/z6tXXnr9n8Qj/JxNnp3/XsicNsqt6gbZVenHWQKuCJDPtzRYi\nrb/otkTyXnP1ksUj9xVpRzyNdHPKEOmxKj8y07697yKtqHk4c3/MnGeTT+3mpX/S2ZFGeqpK\nE2hb1Saulsy0d/ZZpFe+F7ydu+5nHd7zuOontlWuMWbnwJX7/yGyq3qBtlVt4moJEaRAkdou\nnOtvyVp21czc1FQ3stVMu3Rt07XjExSpMKBtVZu4WuxFWlERsMg0TBp63tTNxuydWTusbnvI\nXyK7SkJBjozaxKHYi1Q40MqTMJAjozZxKBRJCmhbpRdnDbQqSChSJJEeq/KDIkkBbavaxNVC\nkaSAtlVt4mqhSJEEOTLSaytNKJIUyFnXO+zQqiChSFJA2yq9OGugVUFCkaSAtlVt4mqhSFJA\n26o2cbVQpEgiPVblB0WSAtpW6cVZA60KEookBbStahNXC0WSAtpW6cVZA60KEookBbSt0ouz\nBloVJBQpkkiPVflBkaSAtlV6cdZAq4KEIkkBbavaxNVCkaSAtlV6cdZAq4KEIkkBbav04qyB\nVgUJRZIC2la1iauFIkkBbavaxNVCkaSAtlV6cdZAq4KEIkkBbav04qyBVgUJRZIC2lbpxVkD\nrQoSiiQFtK3Si7MGWhUkFEkKaFulF2cNtCpIKFIkQY6M2sShUCQpoG1Vm7haKFIkkR6r8oMi\nSQFtq9rE1UKRpIC2VW3iaqFIkUR6rMoPiiQFtK1qE1cLRZIC2lbpxVkDrQoSihRJpMeq/KBI\nUkDbqjZxtVAkKaBtVZu4WiiSFNC2Si/OGmhVkFAkKaBtlV6cNdCqIKFIkQQ5MtJrswdZFYok\nBbKreocdWhUkFEkKaFulF2cNtCpIKJIU0LaqTVwtFEkKaFulF2cNtCpIKJIU0LaqTVwtFCmS\nSI9V+UGRIglyZKTXZg+yKhRJCmRX+dSu6FAkKaBtVZu4WihSJEGOjNrEoVAkKaBtlV6cNdCq\nIKFIkUR6rMoPiiQFtK1qE1cLRZIC2la1iauFIkkBbav04qyBVgUJRZIC2la1iauFIkkBbav0\n4qyBVgUJRZIC2lbpxVkDrQoSiiQFtK3Si7MGWhUkFCmSIEdGbeLQzCmSFGpHBpq4WihSJEGO\njNrEoVCkSIIcGbWJQ6FIUkDbKr04a6BVQUKRpIC2VW3iasGJ1NqcBtlVvUDbKr04a6BVQZKZ\n9hbXIrW1pJFuTmkCbav04qyBVgVJZtpbXYvUjXRzyhDkyEivzR5kVULmniIVBWRX+Rqp6FAk\nKaBtlV6cNdCqIKFIUkDbqjZxtVAkKaBtVZu4WiiSFNC2qk1cLRRJCmhb1SauFookBbSt0ouz\nBloVJBRJCmhb1SauFooUSaTHqvygSJFEeqzKD4okBbStahNXC0WKJMiRUZs4FIokBbSt0ouz\nBloVJBRJCmhb1SauFookBbSt0ouzBloVJBQpkiBHRm3iUCiSFNC2Si/OGmhVkOQVae9GY5rv\nuqmBIjkG2lbpxVkDrQqSfCKtOnqa6fhCLHbE3yiSW6BtlV6cNdCqIMkn0uDPvmHuid32xulD\nKJJboG2VXpw10KogySfS0b8z5uzPGPO7EyiSW6BtVZu4WvKJdMgTpvP9Vxqz5BCK5BZoW9Um\nrpZ8Ip1wh1kSe8KYO4+lSG6BtlV6cdZAq4Ikn0ijPnT1iZ/oNFtO4WskTUiPVfmRT6SNX4od\n9YwxQ494iSK5BdpW6cVZA60KknwiGbOz3fvy/GZ7jyhSKNC2Si/OGmhVkOQXqf9IN6c0gbZV\nenHWQKuCJJ9IW4Yf965YAEVSBHJk1CYOJZ9I1QedNXxUAEVyC7St0ouzBloVJPlEOvJBe4Eo\nUi6gbVWbuFryiTTgbYqkEOTIqE0cSj6RvrKUImGAtlV6cdZAq4Ikn0gv/NtyigQB2la1iasl\nn0hnnBAbcGIARXILtK3Si7MGWhUk+UT6yllpKJJboG2VXpw10KogySeSC6SbU4YgR0Zt4lDy\ni7R10ew7Fu+iSK6BtlV6cdZAq4Ikn0hdlx/sH9Zw2HSK5BhoW9UmrpZ8Ik2PnX3nI4t+9a3Y\n3RTJLdC2qk1cLflEOnl88vaiUymSIpAjozZxKPlEevfjyds/vociuQXaVunFWQOtCpJ8Ih32\ncPL2wfdSJLdA2yq9OGugVUGST6Qzv97m37R882sUyS3QtkovzhpoVZDkE+mPB3xk9NTrLjzu\nXY9SJLdA26o2cbXkE8ks+LS/+/uzf7T3iCKFAm2r2sTVklckYzb8tV9nbKBI4UDbKr04a6BV\nQVKASP1GujmlCbStahNXS06RPlVnPpWBIrkF2lbpxVkDrQqSnCJ9cab5YgaK5BZoW9Umrpac\nIjkC2VW9QNsqvThroFVBkmvquTkAABoXSURBVE+k015N3v7+ZIrkFmhbpRdnDbQqSPKJFHs+\nuOmYwqtROAbaVunFWQOtCpLcIsW64UGrmkCOjNrEoeQWacWs2MDg7JAX/Hg9RXILtK3Si7MG\nWhUkuUUy5luvJ293v06R3AJtq9rE1ZJPpDSPfYAiuQXaVunFWQOtCpK8Ii0a9pUzzjjjS4cf\nRZEUgRwZtYlDySfS3NhBx8eOOzT29X4ctQqtvFqgbVWbuFryiXTaf+4yB77cccvX+nEeIWRX\nSSjIkVGbOJR8Ih2+yJgD/2HMpZdQJEUgR0Zt4lDyiXTon4x53zJjnjqOIikCOTJqE4dmnk+k\nzw9pM/8y0ZiHDqNIblE7MtDE1ZJPpHtiZ5kfHXjhlA+fTpEUIT1W5Uc+kczcaWbv/4vFTnie\nIrkF2la1iasln0idwdc1r7bbe0SRio/0WJUf+UQ6dvzfe/Pjvyo8qo3ZXT+8ZsqW7luKVBDQ\ntqpNXC35RPrSAbF/ubExVKSRD8fj8W3GTL1q7YYZl3RlbilSQUDbqjZxteQTybw1419jB3zt\nzp37/92Q5MumeGWDtzUatCJ9S5EKA9pWtYmrJa9IHm/+5AuxQ8/p+dP2ilvGfb+uySyvSnjf\njb0/fZv+fUd7GmRXSSjSY1V+ZKa9e29C2NHff/j4fj/dcf7Nq1dfe/6exSP87ybOTt9mfh9P\nIz1VZQhyZNQmDs08M+3bexWpc+klx8U+cGGIXsY0Vy9ZPDIl0sh9RWrZkwaZv17UjgwUaFWQ\nZKa9OVykjiUXHR0bMPSh3nZ/j5nzbPIp3bz07f5/I92c0gTaVunFWQOtCpIQN/YR6QOxg759\nz54whdb9rMPb7FQ/sa1yjTE7B65M31KkwoC2VXpx1kCrgiSfSGf+PN7LtmhXzcxNTXUjW820\nS9c2XTs+kbmlSPIgR0Zt4lDyifTl3j/Q1zBp6HlTNxuzd2btsLrt3bcUqSCgbZVenDXQqiDJ\nJ9Lx9b2KVDDSzSlDpMeq/Mgn0kMnL+jPYXYUqVegbZVenDXQqiDJJ9JXPhs75LgTfSiSW6Bt\nVZu4WvKJdMY3zkpBkdwCbavaxNWSTyQXILuqF2hbpRdnDbQqSPKL1PLXP8RNB0VyDbSt0ouz\nBloVJHlFuunwWOwZc82Ifqgk3ZzSBNpW6cVZA60KknwizY5V/tIT6e6DplMkt0DbKr04a6BV\nQZJPpFNGmxZPJPPDT1IkRUiPVfmRT6RDH02K9D8HUyRFSI9V+ZFPpKMfTor0wPsokiKQI6M2\ncSj5RPqPf2/2Rdr2mW9SJEVIj1X5kU+kpQeeNC72/eHvO/hpiuQWaFvVJq6WfCKZxz7vX0H2\n356094gihQJtq/TirIFWBUlekYzZ8ve/h304giL1D2hbpRdnDbQqSPKKtHejMc133dRAkTSB\nHBm1iUPJJ9Kqo6eZji/EYkf8jSK5BdpW6cVZA60KknwiDf7sG+ae2G1vnD6EIrkF2lbpxVkD\nrQqSfCId/Ttjzv6MMb87gSIpAjkyahOHkk+kQ54wne+/0pglh1AkRSBHRnpt9iCrkk+kE+4w\nS2JPGHPnsRTJLciu8n2kopNPpFEfuvrET3SaLafwNZImpMeq/Mgn0sYvxY56xpihR7xEkdwC\nbavaxNWSTyRjdvpnEXp+s71HFKn4SI9V+ZFfpLf+8KvbF27qh0cUKRRoW6UXZw20KkjyibT9\nO/6hdrF31YSe/5si2QNtq/TirIFWBUk+kc6LVd31pz/dde4BF1Ekt0DbKr04a6BVQZJPpH8a\nl7yddCRFcgu0rWoTV0s+kd7zYPL20QEUyS3QtkovzhpoVZDkE+nM1NmDfnEmRXILtK3Si7MG\nWhUk+UR68ePz243pWvLJFyiSW6BtlV6cNdCqIMkp0qc+9alPHx9798c+cVjs+C9TJLdA2yq9\nOGugVUGSU6QzuvnyqRTJLdC2qk1cLTlFcgSyq3qBtlV6cdZAq4Ikr0hvLPzdoiaKpAzkyKhN\nHJp5HpEe+kxwYMOX+3MSIYoUitqRgSaultwi1ccGDPvpXTO/N+Bdv6ZIjoG2VXpx1kCrgiSn\nSCvedcbG4M6G0w9eTZEUIT1W5UdOkUa8f2vq3tb3X0yR3AJtq9rE1ZJTpI9emLl70UkUyS3Q\ntkovzhpoVZDkFOndMzJ3b34PRXILtK3Si7MGWhUkOUV677TM3RsPp0hugbZVenHWQKuCJKdI\nn63O3K34vxTJLdC2Si/OGmhVkOQU6cqDV6buLX/XJIrkFmhb1SaulpwibTziw3/yb7vmfuDI\nrSF/SZH6AbStahNXS06RzGPvi3108PDKY2NHLbf3iCIVH+mxKj9yi2TWjflwLBb72BU8i5Bz\noG1Vm7ha8ojksbNpd38sokgSSI9V+ZFfpP4jPVVlCHJk1CYOhSJJAW2r9OKsgVYFCUWSAtpW\n6cVZA60KEookBbSt0ouzBloVJBQpkiBHRnpt9iCrQpGkQHZV77BDq4KEIkkBbav04qyBVgUJ\nRZIC2lbpxVkDrQoSiiQFtK3Si7MGWhUkFEkKaFulF2cNtCpIKJIU0LaqTVwtFEkKaFvVJq4W\niiQFtK3Si7MGWhUkFCmSIEdGbeJQKJIU0LZKL84aaFWQUCQpoG1Vm7haKJIU0LZKL84aaFWQ\n4ETq7Egj3ZzSBNpWtYmrJTPtna5F2rMjDbKrJBTpsSo/MtO+y7VI3UhPVWkCbavaxNUSMvcU\nST/IkVGbOBSKFEmQI6M2cSgUSQpoW9UmrhaKJAW0rWoTVwtFiiTSY1V+UKRIIj1W5QdFkgLa\nVunFWQOtChKKJAW0rdKLswZaFSQUKZIgR0Zt4lAokhTQtkovzhpoVZBQpEiCHBm1iUOhSFJA\n26o2cbVQJCmgbZVenDXQqiChSFJA2yq9OGugVUFCkaSAtlV6cdZAq4KEIkUS6bEqPyiSFNC2\nqk1cLRQpkkiPVflBkaSAtlVt4mqhSFJA26o2cbVQJCmgbVWbuFookhTQtqpNXC0UKZIgR0Zt\n4lAokhTQtkovzhpoVZBQpEiCHBm1iUOhSFJA26o2cbVQJCmgbVWbuFookhTQtkovzhpoVZBQ\nJCmgbZVenDXQqiChSFJA26o2cbVQJCmgbVWbuFooUiSRHqvygyJJAW2r2sTVQpEiifRYlR8U\nKZIgR0Zt4lAokhTQtkovzhpoVZBQpEgiPVblB0WSAtpWtYmrhSJFEuTIqE0cCkWSAtpW6cVZ\nA60KEookBbStahNXC0WSAtpW6cVZA60KEooUSaTHqvygSFJA26o2cbVQJCmgbVWbuFookhTQ\ntqpNXC0USQpoW9UmrhaKFEmQIyO9NnuQVaFIUiC7qnfYoVVBQpEiCXJk1CYOhSJJAW2r2sTV\nQpGkgLZVbeJqoUiRBDkyahOHQpEiCXJk1CYOhSJJAW2r9OKsgVYFCUWSAtpWtYmrhSJFEumx\nKj8oUiRBjozaxKFQJCmgbVWbuFooUiSRHqvygyJJAW2r9OKsgVYFCUWSAtpW6cVZA60KEook\nBbStahNXC0WKJMiRUZs4NHOKFEmg80hCsBfpHxUBi8x/+TfVxuyuH14zZQtFKhBoW9UmrhZ7\nkdrjHq9UN5qRD3t3thkz9aq1G2Zc0kWRCgPaVrWJq8VepIBJc4wZ8nxwN17Z4G2VBq2gSCWA\n9FiVH/0TadmoDtNeccu479c1meVVCe8nY++nSIUBbavaxNXSL5G6Rj9qzI7zb169+trz9ywe\n4f9o4uz0L3fE0yC7qhdoW9UmrpbMtG+3EGnZiM7UvebqJYtH7ivS7nfSILuqF2hbpRdnDbQq\nSDLTvtNCpCkZa8yYOc8mn9rN2//PpJtThkiPVfkRokfBIu0J9iys+1mHMS3VT2yrXGPMzoEr\nKVIJID1W5Ud/RFpR4b9rtKtm5qamupGtZtqla5uuHZ+gSIUBbav04qyBVgVJf0RaWtnh3zRM\nGnre1M3G7J1ZO6xue8jfSTenNIG2VXpx1kCrgqQ/IhWKdHNKE2hbpRdnDbQqSCiSFNC2qk1c\nLRRJCmhb1SauFooUSZAjozZxKBRJCmhb1SauFookBbSt0ouzBloVJBQpkiBHRm3iUCiSFNC2\nqk1cLRRJCmhb1SauFooUSZAjI702e5BVoUhSILvKLVLRoUhSQNuqNnG1UCQpoG2VXpw10Kog\noUhSQNsqvThroFVBQpEiCXJk1CYOhSJJAW2r9OKsgVYFCUWSAtpW6cVZA60KEookBbStahNX\nC0WSAtpWtYmrhSJFEumxKj8okhTQtkovzhpoVZBQpEiCHBm1iUOhSFJA2yq9OGugVUFCkaSA\ntlVt4mqhSJFEeqzKD4okBbSt0ouzBloVJBQpkiBHRnptpQlFiiRIkaCorQpFkgLZVe5sKDoU\nKZJIj1X5QZEiCXJkpNdWmlAkKZCzzqd2RYciRRLkyKhNHApFiiTSY1V+UCQpoG1Vm7haKJIU\n0LZKL84aaFWQUKRIghwZtYlDoUhSQNuqNnG1UCQpoG1Vm7haKJIU0LZKL84aaFWQUCQpoG2V\nXpw10KogoUhSQNuqNnG1UCQpoG1Vm7haKJIU0LZKL84aaFWQUKRIghwZtYlDoUhSQNuqNnG1\nUCQpoG1Vm7haKJIU0LaqTVwtFEkKaFulF2cNtCpIKJIU0LZKL84aaFWQUCQpoG1Vm7haKJIU\n0LZKL84aaFWQUCQpoG2VXpw10KogoUhSQNuqNnG1UCQpoG1Vm7haKFIkkR6r8oMiSQFtq9rE\n1UKRpIC2VW3iaqFIkQQ5MmoTh0KRpIC2VW3iaqFIUkDbKr04a6BVQUKRpIC2VW3iaqFIkUR6\nrMoPiiQFtK1qE1cLRZIC2la1iauFIkkBbav04qyBVgUJTqRd29NIN6c0gbZVenHWQKuCJDPt\nO1yL1I10c0oTaFulF2cNtCpIQuaeIukHOTJqE4dCkaSAtlV6cdZAq4KEIkkBbavaxNVCkaSA\ntlVt4mqhSFJA2yq9OGugVUFCkSIJcmTUJg6FIkkBbavaxNVCkaSAtlV6cdZAq4KEIkkBbav0\n4qyBVgUJRYok0mNVflAkKaBtlV6cNdCqIKFIkQQ5MtJrK00okhTIWedeu6JDkaSAtlVt4mqh\nSFJA26o2cbVQJCmgbZVenDXQqiChSFJA26o2cbVQJCmgbZVenDXQqiChSFJA2yq9OGugVUFC\nkSKJ9FiVHxRJCmhbpRdnDbQqSChSJJEeq/KDIkkBbavaxNVCkaSAtlV6cdZAq4KEIkkBbav0\n4qyBVgUJRYokyJFRmzgUihRJpMeq/KBIUkDbqjZxtVAkKaBtlV6cNdCqIKFIkUR6rMoPiiQF\ntK1qE1cLRYok0mNVflAkKaBtlV6cNdCqIKFIkQQ5MmoTh0KRpIC2VXpx1kCrgoQiRRLkyKhN\nHApFkgLaVrWJq4UiRRLkyKhNHApFkgLaVrWJq4UiRRLkyKhNHApFkgLaVrWJq4UiRRLpsSo/\nKFIkQY6M2sShUCQpoG2VXpw10KogoUhSQNsqvThroFVBQpGkgLZVbeJqoUhSQNuqNnG1UCQp\noG1Vm7haKJIU0LZKL84aaFWQUCQpoG2VXpw10KogoUhSQNsqvThroFVBQpGkgLZVenHWQKuC\nhCJJAW2r9OKsgVYFCUWSAtpWtYmrhSJJAW2r9OKsgVYFCUWSAtpW6cVZA60KEookBbSt0ouz\nBloVJBQpkiBHRm3iUCiSFNC2Si/OGmhVkFAkKaBtVZu4WihSJEGOjNrEoVCkSCI9VuUHRZIC\n2la1iauFIkkBbav04qyBVgUJRZIC2lbpxVkDrQoSG5GaLh/o3+yuH14zZcv+txRJHuTIqE0c\nioVIy2pnBiJNvWrthhmXdO13S5EKAtpW6cVZA60KEguRHn/7GV+keGWDtxUatKLnLUUqAaTH\nqvywEMmYQKTlVQnv69j7e95SpMKAtlV6cdZAq4LEXqTFI/y7E2f3vE3/0d5daaSbU5pA26o2\ncbVkpn13n0UamRKox236j3bE06whIdyMRHpx1kCrgiQz7dv7KtKzyady83repv+oq9OK+Ha7\nf1cIrfHduOB74i244DviHbjgW7fhYrfFd+GC74k344LviLdb/bvuvW0FirStco0xOweu7Hmb\n91/nJv5OPwPkoD2+Bxe8Od6GC74znsAF37o9/9/Y0hHfnf+PbGmOt+KC74yH7IDuE/lE2h5f\nMjAebzHTLl3bdO34xH63/YMihUGRwlAu0qgKn4fM3pm1w+q8HvS87R8UKQyKFIZykbBQpDAo\nUhgUKQcUKQyKFAZFygFFCoMihUGRckCRwqBIYVCkHFCkMChSGBQpBxQpDIoUBkXKAUUKgyKF\nQZFyQJHCoEhhUKQcUKQwKFIYFCkHFCkMihQGRcoBRQqDIoVBkXJAkcKgSGFQpBxQpDAoUhgU\nKQcUKQyKFAZFygFFCoMihUGRckCRwqBIYVCkHFCkMChSGBQpBxQpDIoUBkXKAUUKgyKFQZFy\nQJHCoEhhUKQcUKQwKFIYFCkHFCkMihQGRcoBRQqDIoVBkXJAkcKgSGFQpBx09jf9HCQ6geMI\nDd7ViYsNLrnWfva/5LIiERIRKBIhDqBIhDiAIhHiAIpEiAMoEiEOoEiEOIAiEeIAikSIAygS\nIQ6gSIQ4gCIR4gCKRIgDKBIhDqBIhDiAIhHiAIpEiAMoEiEOoEiEOIAiEeIAikSIAygSIQ6g\nSIQ4gCIR4gCKRIgDKBIhDqBIhDiAIhWJ03IR+i86Yo/m+UEPXsiFq3WQcChSkShQpNNif/dv\nOo+JdSSW9rhwxH4/6EGBIp0Wi8UO/ucftRSW9+PPF/Z35Q5FKhKFinT0OP9m0ZGxjj4/RKEi\njVi/fs2cI8cVFvQ7v+hzHmUJRSoShYpUe5R/5aXq6liH/0zurk8feswPWlI33g+6YnO+efJH\nfmPMilMOPfWJ2Ev7PEShIl3if512tOmM3f7REWbT0GMHfPVFk36o1LfpB/r6Ae8+tRjlUQ9F\nKhKFivSzT8w3ZvuAeYFIDQc81tnwubrUjW/WgadtMXcM2NN1wrCdL50We3mfh+iTSD99vzEH\nfuHFXeaLQ7c2Tzy6OfUY6W/TD2RO5BapIChSkShYpBu+a8xt//lMINKLsb95r5dM6iYQ6afG\nvBlb+ZfYWmPutBcp8dInRngiXW+82BuN6fqn+zIPlfw2/UAUqUAoUpEoWKQN795kvvhAUqTE\nxQedPvl1k7oJRPqDMZtiz889MOE9vbMU6eDDDjvkkPN3eCLdZ8zcWEBd6jHS36YfiCIVCEUq\nEgWLZL47fdWRbUmRvI3Cz7990H2pm0CkBcF8z3m397cvW4p03po164JLPfrBHoyld98Fj5H5\nNvVAFKlAKFKRKFykBZ+f+N8mKVLH296PLvlq+qZbpKWxDcb8pj+vkXz8YK/EnvHuNZjUY6S/\npUh9hCIVicJF6vjQiStSIt15/Atdm742KnWTJVLbUWOaX/myC5HMN05/q/22ARtSj5H+NiPS\nyZcDrzwfIShSkShcJDPhVJMSqevaEw45duQ7qZsskcyTnznszMdir+zzEHYibTrniMNP/7NJ\nPUb628wD/fQ9x6NLEwkoUpEoUKRC6WgzZnls5z4/K1AkgoAiFQm3IiVOGvHOxm99dd8fUiRB\nKFKRcLxFeukb7z1qcOO+P6NIglCkIuFYpDAokiAUqUhQpGhDkYpEoSK1nnpLwTEv/24i+9tC\nRerHQ5DeoEhFolCRLv12cHNXbIExG7539OFffS71i9e+eKB/c8nXT1/q3TR+2HuB1H5KffZD\nFCqS/xCn+AcCHWaWJo8I+lnw8zcGf/C9Q97O+RCkNyhSkShQpLcO+Zt/s/mY93gifeHMv62p\nOWpP8Iv7jq31RXr038yLn/ZuvzXb/+H8D+zOeogCRQoe4vhb1q9fv8G0el/XP/Xe4P2o1n+u\neO3ls/4950OQ3qBIRaJAka4+PbipGn/MArNt8Kve2Mf+Gvzk7rcW+CJNv8B0xJrNnWcFP0x8\n+FdZD1GgSMFDDPhj9w/+Y3Jw82ysydsMxV7O9RCkNyhSkShQpM//2P86/2N7jlmQ/MHyAzel\nfhWIdOsI03xIV9PxS7/1rzO9b88fkvUQBYrkP0RrbNTnPzJ4dfD93I+2Bbd/jm0zpuPgu3I9\nBOkNilQkChTpoPnel+3HLjEpkbadfGX6V4FIz53UPP8M892f/+fs5pM8OW76VNZDFCiS/xBv\nH3P+c89++xj/MLrOT96Z/Pmuoy5pa/vxwTflegjSGxSpSBQm0o7Yn72vI0aYlEirTvpBZq9Z\nIJKpO+UrL//2a4kBG8zom435zQeyHqIwkZIP4bPrsDu8r3M/nD47xJMnHXzEj0+aleshSG9Q\npCJRqEjLjFnyoW0pkR47MmtHdVIkj80nNLTH9pgrJnuvnGxEWpa+e7IXwfz//+6O8E5b2yEL\ncj0E6Q2KVCQKEynhP+8699AjjzzygMMHm6fe/0hWhIxIg2cZc+hmc4G3ubjpk1l/UJhIwUO8\nfIH3umj3Yb/13Dk4fbK8jvu8V2MPHxTP9RCkNyhSkSjwNdLnJnuvi/x90h+8I9788Sn+vT3m\njp8as2n9HQeuX+/vir7vzC5jvj23/ZMvGVNrsbPBf4itR9Y2vDb4hL3eRi+2zv+h/xCfO3v9\nsuNGm1wPQXqDIhWJAkW66ozUHe+p3WPpd0uHnmXMicH9mcbEP/K69+tXvvB/Jntbl+Mtdn8H\nD/H3s474YOVa7849BwT77PyHeP3rAz54qf9d7w9BeoMiFYkCRVp3yIo+BF1g84Zsfx6C9AZF\nKhIFimQu/U7hMds/Z3eIkP1DkN6gSCVG66k/K/hvJ3zH6ojSIjxE+UGRCHEARSLEARSJEAdQ\nJEIcQJEIcQBFIsQBFIkQB1AkQhxAkQhxAEUixAEUiRAHUCRCHECRCHEARSLEARSJEAdQJEIc\nQJEIccD/Aij7gl1wHb1gAAAAAElFTkSuQmCC",
- "text/plain": [
- "plot without title"
- ]
- },
- "metadata": {
- "image/png": {
- "height": 420,
- "width": 420
- }
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "library(visdat)\n",
- "df = gp_clinical %>% sample_n(1000)\n",
- "vis_miss(df)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Diagnoses - ICD10"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "readv2_icd10 = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_v2_icd10.csv\"), -3) %>% rename(read_2=\"read_code\", code =\"icd10_code\") %>% select(read_2, code)\n",
- "readv3_icd10 = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_ctv3_icd10.csv\"), -3)%>% rename(read_3=\"read_code\", code=\"icd10_code\") %>% select(read_3, code)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 210,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Joining, by = \"read_2\"\n",
- "\n",
- "Joining, by = \"read_3\"\n",
- "\n"
- ]
- }
- ],
- "source": [
- "gp_diagnoses_pre = gp_clinical %>% filter(read_2 %in% readv2_icd10$read_2 | read_3 %in% readv3_icd10$read_3)\n",
- "gp_diagnoses_readv2 = gp_diagnoses_pre %>% filter(!is.na(read_2)) %>% left_join(readv2_icd10, on=\"read_2\") %>% drop_na(code) %>% mutate(origin=\"gp_read2\") %>% select(eid, origin, code, date)\n",
- "gp_diagnoses_readv3 = gp_diagnoses_pre %>% filter(!is.na(read_3)) %>% left_join(readv3_icd10, on=\"read_3\") %>% drop_na(code) %>% mutate(origin=\"gp_read3\") %>% select(eid, origin, code, date)\n",
- "gp_diagnoses_raw = rbind(gp_diagnoses_readv2, gp_diagnoses_readv3)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 273,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "17781180"
- ],
- "text/latex": [
- "17781180"
- ],
- "text/markdown": [
- "17781180"
- ],
- "text/plain": [
- "[1] 17781180"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "A grouped_df: 6 × 8\n",
- "\n",
- "\teid | origin | instance | n | level | code | meaning | date |
\n",
- "\t<int> | <chr> | <dbl> | <int> | <lgl> | <chr> | <chr> | <date> |
\n",
- "\n",
- "\n",
- "\t3375683 | gp_read3 | 0 | 5 | NA | Z016 | Z01 | 2019-01-01 |
\n",
- "\t5397213 | gp_read3 | 0 | 42 | NA | Z016 | Z01 | 2019-01-01 |
\n",
- "\t4141959 | gp_read2 | 0 | 54 | NA | L309 | L30 | 2017-09-29 |
\n",
- "\t5812168 | gp_read2 | 0 | 24 | NA | H609 | H60 | 2017-09-28 |
\n",
- "\t1246037 | gp_read2 | 0 | 26 | NA | B379 | B37 | 2017-09-22 |
\n",
- "\t2850667 | gp_read2 | 0 | 12 | NA | L988 | L98 | 2017-09-22 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A grouped\\_df: 6 × 8\n",
- "\\begin{tabular}{llllllll}\n",
- " eid & origin & instance & n & level & code & meaning & date\\\\\n",
- " & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 3375683 & gp\\_read3 & 0 & 5 & NA & Z016 & Z01 & 2019-01-01\\\\\n",
- "\t 5397213 & gp\\_read3 & 0 & 42 & NA & Z016 & Z01 & 2019-01-01\\\\\n",
- "\t 4141959 & gp\\_read2 & 0 & 54 & NA & L309 & L30 & 2017-09-29\\\\\n",
- "\t 5812168 & gp\\_read2 & 0 & 24 & NA & H609 & H60 & 2017-09-28\\\\\n",
- "\t 1246037 & gp\\_read2 & 0 & 26 & NA & B379 & B37 & 2017-09-22\\\\\n",
- "\t 2850667 & gp\\_read2 & 0 & 12 & NA & L988 & L98 & 2017-09-22\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A grouped_df: 6 × 8\n",
- "\n",
- "| eid <int> | origin <chr> | instance <dbl> | n <int> | level <lgl> | code <chr> | meaning <chr> | date <date> |\n",
- "|---|---|---|---|---|---|---|---|\n",
- "| 3375683 | gp_read3 | 0 | 5 | NA | Z016 | Z01 | 2019-01-01 |\n",
- "| 5397213 | gp_read3 | 0 | 42 | NA | Z016 | Z01 | 2019-01-01 |\n",
- "| 4141959 | gp_read2 | 0 | 54 | NA | L309 | L30 | 2017-09-29 |\n",
- "| 5812168 | gp_read2 | 0 | 24 | NA | H609 | H60 | 2017-09-28 |\n",
- "| 1246037 | gp_read2 | 0 | 26 | NA | B379 | B37 | 2017-09-22 |\n",
- "| 2850667 | gp_read2 | 0 | 12 | NA | L988 | L98 | 2017-09-22 |\n",
- "\n"
- ],
- "text/plain": [
- " eid origin instance n level code meaning date \n",
- "1 3375683 gp_read3 0 5 NA Z016 Z01 2019-01-01\n",
- "2 5397213 gp_read3 0 42 NA Z016 Z01 2019-01-01\n",
- "3 4141959 gp_read2 0 54 NA L309 L30 2017-09-29\n",
- "4 5812168 gp_read2 0 24 NA H609 H60 2017-09-28\n",
- "5 1246037 gp_read2 0 26 NA B379 B37 2017-09-22\n",
- "6 2850667 gp_read2 0 12 NA L988 L98 2017-09-22"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "gp_diagnoses = gp_diagnoses_raw %>% mutate(instance=0, level=NA) %>% distinct() %>% group_by(eid) %>% mutate(n = row_number()) %>% mutate(meaning=str_sub(code, 1, 3)) %>% select(c(eid, origin, instance, n, level, code, meaning, date))\n",
- "nrow(gp_diagnoses)\n",
- "head(gp_diagnoses %>% arrange(desc(date)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 212,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(gp_diagnoses, glue(\"{path}/codes_gp_diagnoses_210119.feather\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Procedures - Snomed CT"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "readv2_opcs4 = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_v2_opcs4.csv\"), -3) %>% rename(read_2=\"read_code\", code =\"opcs_4.2_code\") %>% select(read_2, code)\n",
- "readv3_opcs4 = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_ctv3_opcs4.csv\"), -3)%>% rename(read_3=\"read_code\", code=\"opcs4_code\") %>% select(read_3, code)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 214,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_procedures_pre = gp_clinical %>% filter(read_2 %in% readv2_opcs4$read_2 | read_3 %in% readv3_opcs4$read_3)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 215,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Joining, by = \"read_2\"\n",
- "\n",
- "Joining, by = \"read_3\"\n",
- "\n"
- ]
- }
- ],
- "source": [
- "gp_procedures_readv2 = gp_procedures_pre %>% filter(!is.na(read_2)) %>% left_join(readv2_opcs4, on=\"read_2\") %>% drop_na(code) %>% mutate(origin=\"gp_read2\") %>% select(eid, origin, code, date)\n",
- "gp_procedures_readv3 = gp_procedures_pre %>% filter(!is.na(read_3)) %>% left_join(readv3_opcs4, on=\"read_3\") %>% drop_na(code) %>% mutate(origin=\"gp_read3\") %>% select(eid, origin, code, date)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 216,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_procedures_raw = rbind(gp_procedures_readv2, gp_procedures_readv3) %>% mutate(instance=0, level=NA) %>% distinct() %>% group_by(eid) %>% mutate(n = row_number()) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 217,
- "metadata": {},
- "outputs": [],
- "source": [
- "# opcs4 to snomed mapping\n",
- "\n",
- "concept_ids_opcs4 = concept %>% filter(vocabulary_id == \"OPCS4\") %>% mutate(concept_code = str_replace(concept_code, \"\\\\.\", \"\"))\n",
- "concept_ids_snomed = concept %>% filter(vocabulary_id == \"SNOMED\" & domain_id==\"Procedure\") \n",
- "\n",
- "# check necessary opcs4 concept ids\n",
- "concept_ids = concept_ids_opcs4 %>% mutate(concept_id_1 = concept_id)\n",
- "cr_filtered = concept_relationship %>% filter(concept_id_1 %in% concept_ids_opcs4$concept_id) %>% filter(concept_id_2 %in% concept_ids_snomed$concept_id) %>% arrange(concept_id_1)\n",
- "\n",
- "mapping_opcs4_snomed = concept_ids_opcs4 %>% \n",
- " left_join(cr_filtered %>% select(concept_id_1, concept_id_2), by=c(\"concept_id\"=\"concept_id_1\")) %>% \n",
- " left_join(concept_ids_snomed %>% select(concept_id, concept_code, concept_name), by=c(\"concept_id_2\"=\"concept_id\")) %>% \n",
- " mutate(code = concept_code.x, meaning=concept_code.y, name=concept_name.y)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 272,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "5689793"
- ],
- "text/latex": [
- "5689793"
- ],
- "text/markdown": [
- "5689793"
- ],
- "text/plain": [
- "[1] 5689793"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "A grouped_df: 6 × 9\n",
- "\n",
- "\teid | origin | instance | n | level | date | code | meaning | name |
\n",
- "\t<int> | <chr> | <dbl> | <int> | <lgl> | <date> | <chr> | <chr> | <chr> |
\n",
- "\n",
- "\n",
- "\t1124200 | gp_read2 | 0 | 35 | NA | 2017-09-20 | D071 | 172630005 | Syringing ear to remove wax |
\n",
- "\t1369937 | gp_read2 | 0 | 65 | NA | 2017-09-20 | X36 | 82078001 | Collection of blood specimen for laboratory |
\n",
- "\t1444398 | gp_read2 | 0 | 6 | NA | 2017-09-20 | U333 | 448489007 | Removal of ambulatory blood pressure monitor |
\n",
- "\t1494963 | gp_read2 | 0 | 12 | NA | 2017-09-20 | X378 | 76601001 | Intramuscular injection |
\n",
- "\t1612512 | gp_read2 | 0 | 11 | NA | 2017-09-20 | X378 | 76601001 | Intramuscular injection |
\n",
- "\t1630054 | gp_read2 | 0 | 52 | NA | 2017-09-20 | X37 | 76601001 | Intramuscular injection |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A grouped\\_df: 6 × 9\n",
- "\\begin{tabular}{lllllllll}\n",
- " eid & origin & instance & n & level & date & code & meaning & name\\\\\n",
- " & & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 1124200 & gp\\_read2 & 0 & 35 & NA & 2017-09-20 & D071 & 172630005 & Syringing ear to remove wax \\\\\n",
- "\t 1369937 & gp\\_read2 & 0 & 65 & NA & 2017-09-20 & X36 & 82078001 & Collection of blood specimen for laboratory \\\\\n",
- "\t 1444398 & gp\\_read2 & 0 & 6 & NA & 2017-09-20 & U333 & 448489007 & Removal of ambulatory blood pressure monitor\\\\\n",
- "\t 1494963 & gp\\_read2 & 0 & 12 & NA & 2017-09-20 & X378 & 76601001 & Intramuscular injection \\\\\n",
- "\t 1612512 & gp\\_read2 & 0 & 11 & NA & 2017-09-20 & X378 & 76601001 & Intramuscular injection \\\\\n",
- "\t 1630054 & gp\\_read2 & 0 & 52 & NA & 2017-09-20 & X37 & 76601001 & Intramuscular injection \\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A grouped_df: 6 × 9\n",
- "\n",
- "| eid <int> | origin <chr> | instance <dbl> | n <int> | level <lgl> | date <date> | code <chr> | meaning <chr> | name <chr> |\n",
- "|---|---|---|---|---|---|---|---|---|\n",
- "| 1124200 | gp_read2 | 0 | 35 | NA | 2017-09-20 | D071 | 172630005 | Syringing ear to remove wax |\n",
- "| 1369937 | gp_read2 | 0 | 65 | NA | 2017-09-20 | X36 | 82078001 | Collection of blood specimen for laboratory |\n",
- "| 1444398 | gp_read2 | 0 | 6 | NA | 2017-09-20 | U333 | 448489007 | Removal of ambulatory blood pressure monitor |\n",
- "| 1494963 | gp_read2 | 0 | 12 | NA | 2017-09-20 | X378 | 76601001 | Intramuscular injection |\n",
- "| 1612512 | gp_read2 | 0 | 11 | NA | 2017-09-20 | X378 | 76601001 | Intramuscular injection |\n",
- "| 1630054 | gp_read2 | 0 | 52 | NA | 2017-09-20 | X37 | 76601001 | Intramuscular injection |\n",
- "\n"
- ],
- "text/plain": [
- " eid origin instance n level date code meaning \n",
- "1 1124200 gp_read2 0 35 NA 2017-09-20 D071 172630005\n",
- "2 1369937 gp_read2 0 65 NA 2017-09-20 X36 82078001 \n",
- "3 1444398 gp_read2 0 6 NA 2017-09-20 U333 448489007\n",
- "4 1494963 gp_read2 0 12 NA 2017-09-20 X378 76601001 \n",
- "5 1612512 gp_read2 0 11 NA 2017-09-20 X378 76601001 \n",
- "6 1630054 gp_read2 0 52 NA 2017-09-20 X37 76601001 \n",
- " name \n",
- "1 Syringing ear to remove wax \n",
- "2 Collection of blood specimen for laboratory \n",
- "3 Removal of ambulatory blood pressure monitor\n",
- "4 Intramuscular injection \n",
- "5 Intramuscular injection \n",
- "6 Intramuscular injection "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "gp_procedures = gp_procedures_raw %>% left_join(mapping_opcs4_snomed %>% select(code, meaning, name), by=\"code\") %>% select(eid, origin, instance, n, level, date, code, meaning, name) %>% arrange(eid, date)\n",
- "nrow(gp_procedures)\n",
- "head(gp_procedures %>% arrange(desc(date)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 222,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(gp_procedures, glue(\"{path}/codes_gp_procedures_210119.feather\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Measurements - Snomed CT"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 257,
- "metadata": {},
- "outputs": [],
- "source": [
- "readv2_readv3 = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_v2_read_ctv3.csv\"), -3) %>% rename(read_2=\"READV2_CODE\", code =\"READV3_CODE\", name =\"TERMV3_DESC\") %>% select(read_2, code)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 250,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas = gp_clinical %>% filter(!is.na(value1)) %>% distinct()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_readv2 = gp_meas %>% filter(!is.na(read_2)) %>% left_join(readv2_readv3, by=\"read_2\")\n",
- "gp_meas_readv2 "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_readv3 = gp_meas %>% filter(!is.na(read_3)) %>% mutate(code=read_3)\n",
- "gp_meas_readv3 "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_all = rbind(gp_meas_readv2, gp_meas_readv3) %>% distinct() %>% group_by(eid) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 296,
- "metadata": {},
- "outputs": [],
- "source": [
- "readv3_lkp = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_ctv3_lkp.csv\"), -3)%>% rename(code=\"read_code\", name =\"term_description\") %>% select(code, name)\n",
- "readv3_sct = fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/CTV3SCTMAP.csv\")%>% rename(SCUI=\"V1\", STUI=\"V2\", TCUI=\"V3\", TTUI=\"V4\")%>% rename(code=\"SCUI\", meaning=\"TCUI\") %>% select(code, meaning)\n",
- "#readct_sct = fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/RCTSCTMAP.csv\")%>% rename(SCUI=\"V1\", STUI=\"V2\", TCUI=\"V3\", TTUI=\"V4\")#%>% rename(code=\"read_code\", name =\"term_description\") %>% select(code, name)#"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 266,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas = gp_meas_all %>% left_join(readv3_lkp, by=\"code\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 302,
- "metadata": {},
- "outputs": [],
- "source": [
- "concept_ids_snomed = concept %>% filter(vocabulary_id == \"SNOMED\") %>% rename(name=\"concept_name\", meaning=\"concept_code\") %>% select(meaning, name)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 309,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_uncleaned = gp_meas_all %>% left_join(readv3_sct, by=\"code\") %>% left_join(concept_ids_snomed, by=\"meaning\") %>% distinct()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_cleaned_1 = gp_meas_uncleaned %>% select(eid, date, code, value1, value2, value3, meaning, name) %>% distinct() %>% filter(value1!=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_cleaned_2 = gp_meas_cleaned_1 %>% ungroup() %>% filter(!is.na(meaning))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 376,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Warning message in mask$eval_all_filter(dots, env_filter):\n",
- "\"NAs introduced by coercion\"\n",
- "Warning message in mask$eval_all_filter(dots, env_filter):\n",
- "\"NAs introduced by coercion\"\n"
- ]
- }
- ],
- "source": [
- "double_df = gp_meas_cleaned_2 %>% filter(!is.na(as.numeric(value1)) & !is.na(as.numeric(value2))) "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 410,
- "metadata": {},
- "outputs": [],
- "source": [
- "# clean blood pressure and map to systolic and diastolic\n",
- "bp_double_mapped = double_df %>% filter(name %in% c('O/E - blood pressure reading', 'O/E - BP reading normal', 'O/E - BP reading raised',\n",
- " 'O/E - BP borderline raised', 'O/E - Systolic BP reading', 'O/E - Diastolic BP reading', 'Sitting blood pressure', \"Average home systolic blood pressure\",\n",
- " 'Standing blood pressure','24 hr blood pressure monitoring')) %>% \n",
- " #filter(name %in% c('O/E - Systolic BP reading', 'O/E - Diastolic BP reading', \"Average home systolic blood pressure\")) %>%\n",
- " filter(as.numeric(value1)>0) %>% \n",
- " mutate(value_high = pmax(as.numeric(value1), as.numeric(value2)), value_low = pmin(as.numeric(value1), as.numeric(value2))) %>% \n",
- " filter(value_high>40 & value_low>20 & value_high<400 & value_low<300) %>% rename(\"163030003\" = \"value_high\", \"163031004\" = \"value_low\") %>% \n",
- " select(-c(meaning, name)) %>% pivot_longer(c(\"163030003\", \"163031004\"), names_to=\"meaning\", values_to=\"value\") %>% left_join(concept_ids_snomed, by=\"meaning\") %>% distinct() %>% arrange(eid) %>%\n",
- " select(eid, date, code, value1, value2, value3, meaning, name, value)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 422,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Warning message in mask$eval_all_filter(dots, env_filter):\n",
- "\"NAs introduced by coercion\"\n",
- "Warning message in mask$eval_all_filter(dots, env_filter):\n",
- "\"NAs introduced by coercion\"\n",
- "Warning message:\n",
- "\"Problem with `mutate()` input `value`.\n",
- "\u001b[34mi\u001b[39m NAs introduced by coercion\n",
- "\u001b[34mi\u001b[39m Input `value` is `case_when(...)`.\"\n",
- "Warning message in eval_tidy(pair$lhs, env = default_env):\n",
- "\"NAs introduced by coercion\"\n",
- "Warning message:\n",
- "\"Problem with `mutate()` input `value`.\n",
- "\u001b[34mi\u001b[39m NAs introduced by coercion\n",
- "\u001b[34mi\u001b[39m Input `value` is `case_when(...)`.\"\n",
- "Warning message in eval_tidy(pair$rhs, env = default_env):\n",
- "\"NAs introduced by coercion\"\n",
- "Warning message:\n",
- "\"Problem with `mutate()` input `value`.\n",
- "\u001b[34mi\u001b[39m NAs introduced by coercion\n",
- "\u001b[34mi\u001b[39m Input `value` is `case_when(...)`.\"\n",
- "Warning message in eval_tidy(pair$lhs, env = default_env):\n",
- "\"NAs introduced by coercion\"\n",
- "Warning message:\n",
- "\"Problem with `mutate()` input `value`.\n",
- "\u001b[34mi\u001b[39m NAs introduced by coercion\n",
- "\u001b[34mi\u001b[39m Input `value` is `case_when(...)`.\"\n",
- "Warning message in eval_tidy(pair$rhs, env = default_env):\n",
- "\"NAs introduced by coercion\"\n"
- ]
- }
- ],
- "source": [
- "gp_meas_single = gp_meas_cleaned_2 %>% filter(is.na(as.numeric(value1)) | is.na(as.numeric(value2))) %>%\n",
- " mutate(value=case_when(!is.na(as.numeric(value1)) ~ as.numeric(value1), is.na(as.numeric(value1)) ~ as.numeric(value2))) %>% filter(!is.na(value))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_meas_cleaned_3 = rbind(gp_meas_single, bp_double_mapped) %>% distinct() %>% arrange(eid, date)\n",
- "gp_meas_cleaned_3"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 428,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(gp_meas_cleaned_3, glue(\"{path}/codes_gp_measurements_210120.feather\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Prescriptions - RXNorm"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2020-12-23T09:28:34.328613Z",
- "start_time": "2020-12-23T09:27:50.059Z"
- }
- },
- "outputs": [],
- "source": [
- "gp_scripts = fread(\"/data/project/uk_bb/cvd/data/ukb_downloads/updated_showcase_43098/ukb_data/records/gp_scripts.txt\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_scripts[gp_scripts == \"\"] <- NA"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_scripts = gp_scripts %>% mutate(date = ymd(as.Date(fast_strptime(issue_date, \"%d/%m/%Y\"))))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_scripts_names_available = gp_scripts %>% filter(!is.na(drug_name))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_scripts_read_available = gp_scripts %>% filter(is.na(drug_name))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {},
- "outputs": [],
- "source": [
- "drug_names = (gp_scripts_names_available %>% count(drug_name, sort=TRUE))$drug_name"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "metadata": {},
- "outputs": [],
- "source": [
- "library(jsonlite)\n",
- "write_json(drug_names, glue(\"{path}/drug_names.json\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {},
- "outputs": [],
- "source": [
- "name_umls_link = arrow::read_feather(glue(\"{path}/drug_names_umls_linked.feather\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {},
- "outputs": [],
- "source": [
- "drugs_rxnorm = arrow::read_feather(glue(\"{path}/drug_names_umls_linked_rxnorm.feather\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {},
- "outputs": [],
- "source": [
- "rx_mapping = concept %>% filter(vocabulary_id %in% c('RxNorm','RxNorm Extension')) %>% select(concept_code, concept_name) %>% rename(rx_code =\"concept_code\", name=\"concept_name\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Joining, by = \"rx_code\"\n",
- "\n"
- ]
- }
- ],
- "source": [
- "rx_norm_mapping_table = drugs_rxnorm %>% select(drug_name, rx_code) %>% filter(rx_code != \"\") %>% distinct() %>% left_join(rx_mapping, on=\"rx_code\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 80,
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Joining, by = \"drug_name\"\n",
- "\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "\n",
- "A data.table: 56629816 × 5\n",
- "\n",
- "\teid | date | drug_name | rx_code | name |
\n",
- "\t<int> | <date> | <chr> | <chr> | <chr> |
\n",
- "\n",
- "\n",
- "\t1000018 | 1996-11-30 | Doxycycline 100mg capsules | 3640 | doxycycline |
\n",
- "\t1000018 | 1997-09-12 | Propranolol 40mg tablets | 8787 | propranolol |
\n",
- "\t1000018 | 1997-10-10 | Propranolol 40mg tablets | 8787 | propranolol |
\n",
- "\t1000018 | 1997-10-10 | Noriday 350microgram tablets (Pfizer Ltd) | NA | NA |
\n",
- "\t1000018 | 1998-01-19 | Propranolol 40mg tablets | 8787 | propranolol |
\n",
- "\t1000018 | 1998-01-19 | Propranolol 80mg tablets | 8787 | propranolol |
\n",
- "\t1000018 | 1998-01-19 | Gamolenic acid 40mg capsules | 25605 | gamma-linolenic acid |
\n",
- "\t1000018 | 1998-03-13 | Propranolol 80mg tablets | 8787 | propranolol |
\n",
- "\t1000018 | 1998-03-25 | Amoxicillin 250mg capsules | 723 | amoxicillin |
\n",
- "\t1000018 | 1998-04-16 | Amoxicillin 250mg capsules | 723 | amoxicillin |
\n",
- "\t1000018 | 1998-04-24 | Metronidazole 200mg tablets | 6922 | metronidazole |
\n",
- "\t1000018 | 1998-06-19 | Mebeverine 135mg tablets | 29410 | mebeverine |
\n",
- "\t1000018 | 1998-06-19 | Propranolol 80mg tablets | 8787 | propranolol |
\n",
- "\t1000018 | 1998-08-14 | Gentisone HC ear drops (AMCo) | 5492 | hydrocortisone |
\n",
- "\t1000018 | 1999-01-20 | Gamolenic acid 40mg capsules | 25605 | gamma-linolenic acid |
\n",
- "\t1000018 | 1999-01-20 | Gentisone HC ear drops (AMCo) | 5492 | hydrocortisone |
\n",
- "\t1000018 | 2001-01-12 | Aciclovir 200mg dispersible tablets | 281 | acyclovir |
\n",
- "\t1000018 | 2001-01-12 | Doxycycline 100mg capsules | 3640 | doxycycline |
\n",
- "\t1000018 | 2003-11-17 | Aciclovir 200mg dispersible tablets | 281 | acyclovir |
\n",
- "\t1000018 | 2003-11-17 | Doxycycline 100mg capsules | 3640 | doxycycline |
\n",
- "\t1000018 | 2003-11-18 | Doxycycline 100mg capsules | 3640 | doxycycline |
\n",
- "\t1000018 | 2003-11-24 | Beclometasone 50micrograms/dose nasal spray | 1347 | beclomethasone |
\n",
- "\t1000018 | 2005-06-08 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-06-09 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-06-23 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-06-24 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-09-01 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-10-07 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-11-08 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t1000018 | 2005-12-05 | Atenolol 50mg tablets | 1202 | atenolol |
\n",
- "\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
- "\t6025198 | 2015-01-23 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-01-23 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-01-23 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2015-02-27 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-02-27 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-02-27 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2015-05-05 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-05-05 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-05-05 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2015-06-24 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-06-24 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-06-24 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2015-08-19 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-08-19 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-08-19 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2015-10-14 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-10-14 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-10-14 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2015-12-10 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2015-12-10 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2015-12-10 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2016-02-03 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2016-02-03 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2016-02-03 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2016-04-06 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2016-04-06 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2016-04-06 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\t6025198 | 2016-05-25 | Ramipril 2.5mg capsules | 35296 | ramipril |
\n",
- "\t6025198 | 2016-05-25 | Simvastatin 40mg tablets | 36567 | simvastatin |
\n",
- "\t6025198 | 2016-05-25 | Fenbid 5% gel (AMCo) | NA | NA |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A data.table: 56629816 × 5\n",
- "\\begin{tabular}{lllll}\n",
- " eid & date & drug\\_name & rx\\_code & name\\\\\n",
- " & & & & \\\\\n",
- "\\hline\n",
- "\t 1000018 & 1996-11-30 & Doxycycline 100mg capsules & 3640 & doxycycline \\\\\n",
- "\t 1000018 & 1997-09-12 & Propranolol 40mg tablets & 8787 & propranolol \\\\\n",
- "\t 1000018 & 1997-10-10 & Propranolol 40mg tablets & 8787 & propranolol \\\\\n",
- "\t 1000018 & 1997-10-10 & Noriday 350microgram tablets (Pfizer Ltd) & NA & NA \\\\\n",
- "\t 1000018 & 1998-01-19 & Propranolol 40mg tablets & 8787 & propranolol \\\\\n",
- "\t 1000018 & 1998-01-19 & Propranolol 80mg tablets & 8787 & propranolol \\\\\n",
- "\t 1000018 & 1998-01-19 & Gamolenic acid 40mg capsules & 25605 & gamma-linolenic acid\\\\\n",
- "\t 1000018 & 1998-03-13 & Propranolol 80mg tablets & 8787 & propranolol \\\\\n",
- "\t 1000018 & 1998-03-25 & Amoxicillin 250mg capsules & 723 & amoxicillin \\\\\n",
- "\t 1000018 & 1998-04-16 & Amoxicillin 250mg capsules & 723 & amoxicillin \\\\\n",
- "\t 1000018 & 1998-04-24 & Metronidazole 200mg tablets & 6922 & metronidazole \\\\\n",
- "\t 1000018 & 1998-06-19 & Mebeverine 135mg tablets & 29410 & mebeverine \\\\\n",
- "\t 1000018 & 1998-06-19 & Propranolol 80mg tablets & 8787 & propranolol \\\\\n",
- "\t 1000018 & 1998-08-14 & Gentisone HC ear drops (AMCo) & 5492 & hydrocortisone \\\\\n",
- "\t 1000018 & 1999-01-20 & Gamolenic acid 40mg capsules & 25605 & gamma-linolenic acid\\\\\n",
- "\t 1000018 & 1999-01-20 & Gentisone HC ear drops (AMCo) & 5492 & hydrocortisone \\\\\n",
- "\t 1000018 & 2001-01-12 & Aciclovir 200mg dispersible tablets & 281 & acyclovir \\\\\n",
- "\t 1000018 & 2001-01-12 & Doxycycline 100mg capsules & 3640 & doxycycline \\\\\n",
- "\t 1000018 & 2003-11-17 & Aciclovir 200mg dispersible tablets & 281 & acyclovir \\\\\n",
- "\t 1000018 & 2003-11-17 & Doxycycline 100mg capsules & 3640 & doxycycline \\\\\n",
- "\t 1000018 & 2003-11-18 & Doxycycline 100mg capsules & 3640 & doxycycline \\\\\n",
- "\t 1000018 & 2003-11-24 & Beclometasone 50micrograms/dose nasal spray & 1347 & beclomethasone \\\\\n",
- "\t 1000018 & 2005-06-08 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-06-09 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-06-23 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-06-24 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-09-01 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-10-07 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-11-08 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t 1000018 & 2005-12-05 & Atenolol 50mg tablets & 1202 & atenolol \\\\\n",
- "\t ⋮ & ⋮ & ⋮ & ⋮ & ⋮\\\\\n",
- "\t 6025198 & 2015-01-23 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-01-23 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-01-23 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2015-02-27 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-02-27 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-02-27 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2015-05-05 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-05-05 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-05-05 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2015-06-24 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-06-24 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-06-24 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2015-08-19 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-08-19 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-08-19 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2015-10-14 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-10-14 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-10-14 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2015-12-10 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2015-12-10 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2015-12-10 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2016-02-03 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2016-02-03 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2016-02-03 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2016-04-06 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2016-04-06 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2016-04-06 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\t 6025198 & 2016-05-25 & Ramipril 2.5mg capsules & 35296 & ramipril \\\\\n",
- "\t 6025198 & 2016-05-25 & Simvastatin 40mg tablets & 36567 & simvastatin\\\\\n",
- "\t 6025198 & 2016-05-25 & Fenbid 5\\% gel (AMCo) & NA & NA \\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A data.table: 56629816 × 5\n",
- "\n",
- "| eid <int> | date <date> | drug_name <chr> | rx_code <chr> | name <chr> |\n",
- "|---|---|---|---|---|\n",
- "| 1000018 | 1996-11-30 | Doxycycline 100mg capsules | 3640 | doxycycline |\n",
- "| 1000018 | 1997-09-12 | Propranolol 40mg tablets | 8787 | propranolol |\n",
- "| 1000018 | 1997-10-10 | Propranolol 40mg tablets | 8787 | propranolol |\n",
- "| 1000018 | 1997-10-10 | Noriday 350microgram tablets (Pfizer Ltd) | NA | NA |\n",
- "| 1000018 | 1998-01-19 | Propranolol 40mg tablets | 8787 | propranolol |\n",
- "| 1000018 | 1998-01-19 | Propranolol 80mg tablets | 8787 | propranolol |\n",
- "| 1000018 | 1998-01-19 | Gamolenic acid 40mg capsules | 25605 | gamma-linolenic acid |\n",
- "| 1000018 | 1998-03-13 | Propranolol 80mg tablets | 8787 | propranolol |\n",
- "| 1000018 | 1998-03-25 | Amoxicillin 250mg capsules | 723 | amoxicillin |\n",
- "| 1000018 | 1998-04-16 | Amoxicillin 250mg capsules | 723 | amoxicillin |\n",
- "| 1000018 | 1998-04-24 | Metronidazole 200mg tablets | 6922 | metronidazole |\n",
- "| 1000018 | 1998-06-19 | Mebeverine 135mg tablets | 29410 | mebeverine |\n",
- "| 1000018 | 1998-06-19 | Propranolol 80mg tablets | 8787 | propranolol |\n",
- "| 1000018 | 1998-08-14 | Gentisone HC ear drops (AMCo) | 5492 | hydrocortisone |\n",
- "| 1000018 | 1999-01-20 | Gamolenic acid 40mg capsules | 25605 | gamma-linolenic acid |\n",
- "| 1000018 | 1999-01-20 | Gentisone HC ear drops (AMCo) | 5492 | hydrocortisone |\n",
- "| 1000018 | 2001-01-12 | Aciclovir 200mg dispersible tablets | 281 | acyclovir |\n",
- "| 1000018 | 2001-01-12 | Doxycycline 100mg capsules | 3640 | doxycycline |\n",
- "| 1000018 | 2003-11-17 | Aciclovir 200mg dispersible tablets | 281 | acyclovir |\n",
- "| 1000018 | 2003-11-17 | Doxycycline 100mg capsules | 3640 | doxycycline |\n",
- "| 1000018 | 2003-11-18 | Doxycycline 100mg capsules | 3640 | doxycycline |\n",
- "| 1000018 | 2003-11-24 | Beclometasone 50micrograms/dose nasal spray | 1347 | beclomethasone |\n",
- "| 1000018 | 2005-06-08 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-06-09 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-06-23 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-06-24 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-09-01 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-10-07 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-11-08 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| 1000018 | 2005-12-05 | Atenolol 50mg tablets | 1202 | atenolol |\n",
- "| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |\n",
- "| 6025198 | 2015-01-23 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-01-23 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-01-23 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2015-02-27 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-02-27 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-02-27 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2015-05-05 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-05-05 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-05-05 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2015-06-24 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-06-24 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-06-24 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2015-08-19 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-08-19 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-08-19 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2015-10-14 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-10-14 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-10-14 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2015-12-10 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2015-12-10 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2015-12-10 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2016-02-03 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2016-02-03 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2016-02-03 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2016-04-06 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2016-04-06 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2016-04-06 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "| 6025198 | 2016-05-25 | Ramipril 2.5mg capsules | 35296 | ramipril |\n",
- "| 6025198 | 2016-05-25 | Simvastatin 40mg tablets | 36567 | simvastatin |\n",
- "| 6025198 | 2016-05-25 | Fenbid 5% gel (AMCo) | NA | NA |\n",
- "\n"
- ],
- "text/plain": [
- " eid date drug_name rx_code\n",
- "1 1000018 1996-11-30 Doxycycline 100mg capsules 3640 \n",
- "2 1000018 1997-09-12 Propranolol 40mg tablets 8787 \n",
- "3 1000018 1997-10-10 Propranolol 40mg tablets 8787 \n",
- "4 1000018 1997-10-10 Noriday 350microgram tablets (Pfizer Ltd) NA \n",
- "5 1000018 1998-01-19 Propranolol 40mg tablets 8787 \n",
- "6 1000018 1998-01-19 Propranolol 80mg tablets 8787 \n",
- "7 1000018 1998-01-19 Gamolenic acid 40mg capsules 25605 \n",
- "8 1000018 1998-03-13 Propranolol 80mg tablets 8787 \n",
- "9 1000018 1998-03-25 Amoxicillin 250mg capsules 723 \n",
- "10 1000018 1998-04-16 Amoxicillin 250mg capsules 723 \n",
- "11 1000018 1998-04-24 Metronidazole 200mg tablets 6922 \n",
- "12 1000018 1998-06-19 Mebeverine 135mg tablets 29410 \n",
- "13 1000018 1998-06-19 Propranolol 80mg tablets 8787 \n",
- "14 1000018 1998-08-14 Gentisone HC ear drops (AMCo) 5492 \n",
- "15 1000018 1999-01-20 Gamolenic acid 40mg capsules 25605 \n",
- "16 1000018 1999-01-20 Gentisone HC ear drops (AMCo) 5492 \n",
- "17 1000018 2001-01-12 Aciclovir 200mg dispersible tablets 281 \n",
- "18 1000018 2001-01-12 Doxycycline 100mg capsules 3640 \n",
- "19 1000018 2003-11-17 Aciclovir 200mg dispersible tablets 281 \n",
- "20 1000018 2003-11-17 Doxycycline 100mg capsules 3640 \n",
- "21 1000018 2003-11-18 Doxycycline 100mg capsules 3640 \n",
- "22 1000018 2003-11-24 Beclometasone 50micrograms/dose nasal spray 1347 \n",
- "23 1000018 2005-06-08 Atenolol 50mg tablets 1202 \n",
- "24 1000018 2005-06-09 Atenolol 50mg tablets 1202 \n",
- "25 1000018 2005-06-23 Atenolol 50mg tablets 1202 \n",
- "26 1000018 2005-06-24 Atenolol 50mg tablets 1202 \n",
- "27 1000018 2005-09-01 Atenolol 50mg tablets 1202 \n",
- "28 1000018 2005-10-07 Atenolol 50mg tablets 1202 \n",
- "29 1000018 2005-11-08 Atenolol 50mg tablets 1202 \n",
- "30 1000018 2005-12-05 Atenolol 50mg tablets 1202 \n",
- " \n",
- "56629787 6025198 2015-01-23 Ramipril 2.5mg capsules 35296 \n",
- "56629788 6025198 2015-01-23 Simvastatin 40mg tablets 36567 \n",
- "56629789 6025198 2015-01-23 Fenbid 5% gel (AMCo) NA \n",
- "56629790 6025198 2015-02-27 Ramipril 2.5mg capsules 35296 \n",
- "56629791 6025198 2015-02-27 Simvastatin 40mg tablets 36567 \n",
- "56629792 6025198 2015-02-27 Fenbid 5% gel (AMCo) NA \n",
- "56629793 6025198 2015-05-05 Ramipril 2.5mg capsules 35296 \n",
- "56629794 6025198 2015-05-05 Simvastatin 40mg tablets 36567 \n",
- "56629795 6025198 2015-05-05 Fenbid 5% gel (AMCo) NA \n",
- "56629796 6025198 2015-06-24 Ramipril 2.5mg capsules 35296 \n",
- "56629797 6025198 2015-06-24 Simvastatin 40mg tablets 36567 \n",
- "56629798 6025198 2015-06-24 Fenbid 5% gel (AMCo) NA \n",
- "56629799 6025198 2015-08-19 Ramipril 2.5mg capsules 35296 \n",
- "56629800 6025198 2015-08-19 Simvastatin 40mg tablets 36567 \n",
- "56629801 6025198 2015-08-19 Fenbid 5% gel (AMCo) NA \n",
- "56629802 6025198 2015-10-14 Ramipril 2.5mg capsules 35296 \n",
- "56629803 6025198 2015-10-14 Simvastatin 40mg tablets 36567 \n",
- "56629804 6025198 2015-10-14 Fenbid 5% gel (AMCo) NA \n",
- "56629805 6025198 2015-12-10 Ramipril 2.5mg capsules 35296 \n",
- "56629806 6025198 2015-12-10 Simvastatin 40mg tablets 36567 \n",
- "56629807 6025198 2015-12-10 Fenbid 5% gel (AMCo) NA \n",
- "56629808 6025198 2016-02-03 Ramipril 2.5mg capsules 35296 \n",
- "56629809 6025198 2016-02-03 Simvastatin 40mg tablets 36567 \n",
- "56629810 6025198 2016-02-03 Fenbid 5% gel (AMCo) NA \n",
- "56629811 6025198 2016-04-06 Ramipril 2.5mg capsules 35296 \n",
- "56629812 6025198 2016-04-06 Simvastatin 40mg tablets 36567 \n",
- "56629813 6025198 2016-04-06 Fenbid 5% gel (AMCo) NA \n",
- "56629814 6025198 2016-05-25 Ramipril 2.5mg capsules 35296 \n",
- "56629815 6025198 2016-05-25 Simvastatin 40mg tablets 36567 \n",
- "56629816 6025198 2016-05-25 Fenbid 5% gel (AMCo) NA \n",
- " name \n",
- "1 doxycycline \n",
- "2 propranolol \n",
- "3 propranolol \n",
- "4 NA \n",
- "5 propranolol \n",
- "6 propranolol \n",
- "7 gamma-linolenic acid\n",
- "8 propranolol \n",
- "9 amoxicillin \n",
- "10 amoxicillin \n",
- "11 metronidazole \n",
- "12 mebeverine \n",
- "13 propranolol \n",
- "14 hydrocortisone \n",
- "15 gamma-linolenic acid\n",
- "16 hydrocortisone \n",
- "17 acyclovir \n",
- "18 doxycycline \n",
- "19 acyclovir \n",
- "20 doxycycline \n",
- "21 doxycycline \n",
- "22 beclomethasone \n",
- "23 atenolol \n",
- "24 atenolol \n",
- "25 atenolol \n",
- "26 atenolol \n",
- "27 atenolol \n",
- "28 atenolol \n",
- "29 atenolol \n",
- "30 atenolol \n",
- " \n",
- "56629787 ramipril \n",
- "56629788 simvastatin \n",
- "56629789 NA \n",
- "56629790 ramipril \n",
- "56629791 simvastatin \n",
- "56629792 NA \n",
- "56629793 ramipril \n",
- "56629794 simvastatin \n",
- "56629795 NA \n",
- "56629796 ramipril \n",
- "56629797 simvastatin \n",
- "56629798 NA \n",
- "56629799 ramipril \n",
- "56629800 simvastatin \n",
- "56629801 NA \n",
- "56629802 ramipril \n",
- "56629803 simvastatin \n",
- "56629804 NA \n",
- "56629805 ramipril \n",
- "56629806 simvastatin \n",
- "56629807 NA \n",
- "56629808 ramipril \n",
- "56629809 simvastatin \n",
- "56629810 NA \n",
- "56629811 ramipril \n",
- "56629812 simvastatin \n",
- "56629813 NA \n",
- "56629814 ramipril \n",
- "56629815 simvastatin \n",
- "56629816 NA "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "gp_scripts_rxnorm = gp_scripts_names_available %>% left_join(rx_norm_mapping_table, on=\"drug_name\") %>% select(eid, date, drug_name, rx_code, name) %>% distinct()\n",
- "gp_scripts_rxnorm "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\t- $platform
\n",
- "\t\t- 'x86_64-conda-linux-gnu'
\n",
- "\t- $arch
\n",
- "\t\t- 'x86_64'
\n",
- "\t- $os
\n",
- "\t\t- 'linux-gnu'
\n",
- "\t- $system
\n",
- "\t\t- 'x86_64, linux-gnu'
\n",
- "\t- $status
\n",
- "\t\t- ''
\n",
- "\t- $major
\n",
- "\t\t- '4'
\n",
- "\t- $minor
\n",
- "\t\t- '0.3'
\n",
- "\t- $year
\n",
- "\t\t- '2020'
\n",
- "\t- $month
\n",
- "\t\t- '10'
\n",
- "\t- $day
\n",
- "\t\t- '10'
\n",
- "\t- $`svn rev`
\n",
- "\t\t- '79318'
\n",
- "\t- $language
\n",
- "\t\t- 'R'
\n",
- "\t- $version.string
\n",
- "\t\t- 'R version 4.0.3 (2020-10-10)'
\n",
- "\t- $nickname
\n",
- "\t\t- 'Bunny-Wunnies Freak Out'
\n",
- "
\n"
- ],
- "text/latex": [
- "\\begin{description}\n",
- "\\item[\\$platform] 'x86\\_64-conda-linux-gnu'\n",
- "\\item[\\$arch] 'x86\\_64'\n",
- "\\item[\\$os] 'linux-gnu'\n",
- "\\item[\\$system] 'x86\\_64, linux-gnu'\n",
- "\\item[\\$status] ''\n",
- "\\item[\\$major] '4'\n",
- "\\item[\\$minor] '0.3'\n",
- "\\item[\\$year] '2020'\n",
- "\\item[\\$month] '10'\n",
- "\\item[\\$day] '10'\n",
- "\\item[\\$`svn rev`] '79318'\n",
- "\\item[\\$language] 'R'\n",
- "\\item[\\$version.string] 'R version 4.0.3 (2020-10-10)'\n",
- "\\item[\\$nickname] 'Bunny-Wunnies Freak Out'\n",
- "\\end{description}\n"
- ],
- "text/markdown": [
- "$platform\n",
- ": 'x86_64-conda-linux-gnu'\n",
- "$arch\n",
- ": 'x86_64'\n",
- "$os\n",
- ": 'linux-gnu'\n",
- "$system\n",
- ": 'x86_64, linux-gnu'\n",
- "$status\n",
- ": ''\n",
- "$major\n",
- ": '4'\n",
- "$minor\n",
- ": '0.3'\n",
- "$year\n",
- ": '2020'\n",
- "$month\n",
- ": '10'\n",
- "$day\n",
- ": '10'\n",
- "$`svn rev`\n",
- ": '79318'\n",
- "$language\n",
- ": 'R'\n",
- "$version.string\n",
- ": 'R version 4.0.3 (2020-10-10)'\n",
- "$nickname\n",
- ": 'Bunny-Wunnies Freak Out'\n",
- "\n",
- "\n"
- ],
- "text/plain": [
- "$platform\n",
- "[1] \"x86_64-conda-linux-gnu\"\n",
- "\n",
- "$arch\n",
- "[1] \"x86_64\"\n",
- "\n",
- "$os\n",
- "[1] \"linux-gnu\"\n",
- "\n",
- "$system\n",
- "[1] \"x86_64, linux-gnu\"\n",
- "\n",
- "$status\n",
- "[1] \"\"\n",
- "\n",
- "$major\n",
- "[1] \"4\"\n",
- "\n",
- "$minor\n",
- "[1] \"0.3\"\n",
- "\n",
- "$year\n",
- "[1] \"2020\"\n",
- "\n",
- "$month\n",
- "[1] \"10\"\n",
- "\n",
- "$day\n",
- "[1] \"10\"\n",
- "\n",
- "$`svn rev`\n",
- "[1] \"79318\"\n",
- "\n",
- "$language\n",
- "[1] \"R\"\n",
- "\n",
- "$version.string\n",
- "[1] \"R version 4.0.3 (2020-10-10)\"\n",
- "\n",
- "$nickname\n",
- "[1] \"Bunny-Wunnies Freak Out\"\n"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "R.Version()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {},
- "outputs": [],
- "source": [
- "arrow::write_feather(gp_scripts_rxnorm, glue(\"{path}/codes_gp_prescription_scispacy_210121.feather\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "### OLD NOT WORKING TRASH"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 83,
- "metadata": {},
- "outputs": [],
- "source": [
- "readv2_readv3 = head(fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/read_v2_read_ctv3.csv\"), -3) %>% rename(read_2=\"READV2_CODE\", code =\"READV3_CODE\", name =\"TERMV3_DESC\") %>% select(read_2, code)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_scripts_read3 = gp_scripts_read_available %>% left_join(readv2_readv3, by=\"read_2\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A data.table: 0 × 10\n",
- "\n",
- "\teid | data_provider | issue_date | read_2 | bnf_code | dmd_code | drug_name | quantity | date | code |
\n",
- "\t<int> | <int> | <chr> | <chr> | <chr> | <int64> | <chr> | <chr> | <date> | <chr> |
\n",
- "\n",
- "\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A data.table: 0 × 10\n",
- "\\begin{tabular}{llllllllll}\n",
- " eid & data\\_provider & issue\\_date & read\\_2 & bnf\\_code & dmd\\_code & drug\\_name & quantity & date & code\\\\\n",
- " & & & & & & & & & \\\\\n",
- "\\hline\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A data.table: 0 × 10\n",
- "\n",
- "| eid <int> | data_provider <int> | issue_date <chr> | read_2 <chr> | bnf_code <chr> | dmd_code <int64> | drug_name <chr> | quantity <chr> | date <date> | code <chr> |\n",
- "|---|---|---|---|---|---|---|---|---|---|\n",
- "\n"
- ],
- "text/plain": [
- " eid data_provider issue_date read_2 bnf_code dmd_code drug_name quantity\n",
- " date code"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "gp_scripts_read3 %>% drop_na(code)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {},
- "outputs": [],
- "source": [
- "bnf_snomed_mapping = fread(\"/data/analysis/ag-reils/steinfej/code/umbrella/pre/ukbb/mapping/gp_codings/bnf_snomed_mapping.csv\") %>%\n",
- " rename(bnf_code=\"BNF Code\", sct_code =\"SNOMED Code\") %>% \n",
- " filter(`VMP / VMPP/ AMP / AMPP`==\"VMP\") %>% \n",
- " filter(bnf_code != \"\") %>% mutate(bnf_map = str_sub(bnf_code, 1, 7))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {},
- "outputs": [],
- "source": [
- "gp_test = gp_scripts %>% sample_n(1000) %>% filter(bnf_code != \"\") %>% mutate(bnf_code =str_replace_all(bnf_code, \"\\\\.\", \"\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 100,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A data.table: 58742 × 11\n",
- "\n",
- "\teid | data_provider | issue_date | read_2 | bnf_code | dmd_code | drug_name | quantity | date | bnf_map | sct_code |
\n",
- "\t<int> | <int> | <chr> | <chr> | <chr> | <int64> | <chr> | <chr> | <date> | <chr> | <int64> |
\n",
- "\n",
- "\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 374294006 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 374295007 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 374296008 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 325315001 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 325316000 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584011000001100 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584111000001104 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584211000001105 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584411000001109 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584511000001108 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584611000001107 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584711000001103 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584311000001102 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584811000001106 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584911000001101 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585011000001101 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585111000001100 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586611000001103 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586711000001107 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585211000001106 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585411000001105 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585311000001103 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585511000001109 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585811000001107 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585611000001108 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585911000001102 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585711000001104 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586811000001104 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586011000001105 |
\n",
- "\t5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586111000001106 |
\n",
- "\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 12301811000001104 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13004211000001106 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13004111000001100 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13004311000001103 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13892911000001107 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13892811000001102 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13893011000001104 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13893811000001105 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 16073011000001100 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 16665611000001108 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 16757111000001108 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 17853711000001103 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 18084511000001109 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 18595211000001106 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 18615611000001103 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 19200211000001107 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 19230711000001108 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 19805611000001105 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 21636411000001107 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 24014911000001102 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 24580811000001103 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 32637711000001103 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 33568211000001100 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 34625311000001101 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 34878611000001106 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 36441411000001100 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 36752911000001107 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 38063911000001100 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 38555311000001107 |
\n",
- "\t1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 38555211000001104 |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A data.table: 58742 × 11\n",
- "\\begin{tabular}{lllllllllll}\n",
- " eid & data\\_provider & issue\\_date & read\\_2 & bnf\\_code & dmd\\_code & drug\\_name & quantity & date & bnf\\_map & sct\\_code\\\\\n",
- " & & & & & & & & & & \\\\\n",
- "\\hline\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 374294006\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 374295007\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 374296008\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 325315001\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 325316000\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584011000001100\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584111000001104\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584211000001105\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584411000001109\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584511000001108\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584611000001107\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584711000001103\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584311000001102\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584811000001106\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8584911000001101\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585011000001101\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585111000001100\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8586611000001103\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8586711000001107\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585211000001106\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585411000001105\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585311000001103\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585511000001109\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585811000001107\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585611000001108\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585911000001102\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8585711000001104\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8586811000001104\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8586011000001105\\\\\n",
- "\t 5157903 & 3 & 25/05/2010 & NA & 0602010000 & NA & Levothyroxine sodium 100microgram tablets & 56 tablet(s) - 100 micrograms & 2010-05-25 & 0602010 & 8586111000001106\\\\\n",
- "\t ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮ & ⋮\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 12301811000001104\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13004211000001106\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13004111000001100\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13004311000001103\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13892911000001107\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13892811000001102\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13893011000001104\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 13893811000001105\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 16073011000001100\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 16665611000001108\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 16757111000001108\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 17853711000001103\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 18084511000001109\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 18595211000001106\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 18615611000001103\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 19200211000001107\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 19230711000001108\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 19805611000001105\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 21636411000001107\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 24014911000001102\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 24580811000001103\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 32637711000001103\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 33568211000001100\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 34625311000001101\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 34878611000001106\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 36441411000001100\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 36752911000001107\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 38063911000001100\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 38555311000001107\\\\\n",
- "\t 1918594 & 3 & 27/10/2004 & NA & 0407010200 & NA & Co-codamol 8mg/500mg tablets & 200 tablet(s) & 2004-10-27 & 0407010 & 38555211000001104\\\\\n",
- "\\end{tabular}\n"
- ],
- "text/markdown": [
- "\n",
- "A data.table: 58742 × 11\n",
- "\n",
- "| eid <int> | data_provider <int> | issue_date <chr> | read_2 <chr> | bnf_code <chr> | dmd_code <int64> | drug_name <chr> | quantity <chr> | date <date> | bnf_map <chr> | sct_code <int64> |\n",
- "|---|---|---|---|---|---|---|---|---|---|---|\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 374294006 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 374295007 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 374296008 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 325315001 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 325316000 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584011000001100 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584111000001104 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584211000001105 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584411000001109 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584511000001108 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584611000001107 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584711000001103 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584311000001102 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584811000001106 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8584911000001101 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585011000001101 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585111000001100 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586611000001103 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586711000001107 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585211000001106 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585411000001105 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585311000001103 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585511000001109 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585811000001107 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585611000001108 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585911000001102 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8585711000001104 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586811000001104 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586011000001105 |\n",
- "| 5157903 | 3 | 25/05/2010 | NA | 0602010000 | NA | Levothyroxine sodium 100microgram tablets | 56 tablet(s) - 100 micrograms | 2010-05-25 | 0602010 | 8586111000001106 |\n",
- "| ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 12301811000001104 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13004211000001106 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13004111000001100 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13004311000001103 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13892911000001107 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13892811000001102 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13893011000001104 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 13893811000001105 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 16073011000001100 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 16665611000001108 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 16757111000001108 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 17853711000001103 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 18084511000001109 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 18595211000001106 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 18615611000001103 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 19200211000001107 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 19230711000001108 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 19805611000001105 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 21636411000001107 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 24014911000001102 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 24580811000001103 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 32637711000001103 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 33568211000001100 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 34625311000001101 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 34878611000001106 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 36441411000001100 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 36752911000001107 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 38063911000001100 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 38555311000001107 |\n",
- "| 1918594 | 3 | 27/10/2004 | NA | 0407010200 | NA | Co-codamol 8mg/500mg tablets | 200 tablet(s) | 2004-10-27 | 0407010 | 38555211000001104 |\n",
- "\n"
- ],
- "text/plain": [
- " eid data_provider issue_date read_2 bnf_code dmd_code\n",
- "1 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "2 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "3 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "4 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "5 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "6 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "7 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "8 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "9 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "10 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "11 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "12 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "13 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "14 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "15 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "16 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "17 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "18 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "19 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "20 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "21 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "22 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "23 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "24 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "25 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "26 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "27 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "28 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "29 5157903 3 25/05/2010 NA 0602010000 NA \n",
- "30 5157903 3 25/05/2010 NA 0602010000 NA \n",
- " \n",
- "58713 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58714 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58715 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58716 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58717 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58718 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58719 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58720 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58721 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58722 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58723 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58724 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58725 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58726 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58727 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58728 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58729 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58730 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58731 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58732 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58733 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58734 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58735 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58736 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58737 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58738 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58739 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58740 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58741 1918594 3 27/10/2004 NA 0407010200 NA \n",
- "58742 1918594 3 27/10/2004 NA 0407010200 NA \n",
- " drug_name quantity \n",
- "1 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "2 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "3 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "4 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "5 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "6 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "7 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "8 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "9 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "10 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "11 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "12 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "13 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "14 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "15 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "16 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "17 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "18 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "19 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "20 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "21 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "22 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "23 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "24 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "25 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "26 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "27 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "28 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "29 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- "30 Levothyroxine sodium 100microgram tablets 56 tablet(s) - 100 micrograms\n",
- " \n",
- "58713 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58714 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58715 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58716 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58717 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58718 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58719 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58720 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58721 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58722 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58723 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58724 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58725 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58726 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58727 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58728 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58729 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58730 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58731 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58732 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58733 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58734 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58735 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58736 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58737 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58738 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58739 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58740 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58741 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- "58742 Co-codamol 8mg/500mg tablets 200 tablet(s) \n",
- " date bnf_map sct_code \n",
- "1 2010-05-25 0602010 374294006 \n",
- "2 2010-05-25 0602010 374295007 \n",
- "3 2010-05-25 0602010 374296008 \n",
- "4 2010-05-25 0602010 325315001 \n",
- "5 2010-05-25 0602010 325316000 \n",
- "6 2010-05-25 0602010 8584011000001100 \n",
- "7 2010-05-25 0602010 8584111000001104 \n",
- "8 2010-05-25 0602010 8584211000001105 \n",
- "9 2010-05-25 0602010 8584411000001109 \n",
- "10 2010-05-25 0602010 8584511000001108 \n",
- "11 2010-05-25 0602010 8584611000001107 \n",
- "12 2010-05-25 0602010 8584711000001103 \n",
- "13 2010-05-25 0602010 8584311000001102 \n",
- "14 2010-05-25 0602010 8584811000001106 \n",
- "15 2010-05-25 0602010 8584911000001101 \n",
- "16 2010-05-25 0602010 8585011000001101 \n",
- "17 2010-05-25 0602010 8585111000001100 \n",
- "18 2010-05-25 0602010 8586611000001103 \n",
- "19 2010-05-25 0602010 8586711000001107 \n",
- "20 2010-05-25 0602010 8585211000001106 \n",
- "21 2010-05-25 0602010 8585411000001105 \n",
- "22 2010-05-25 0602010 8585311000001103 \n",
- "23 2010-05-25 0602010 8585511000001109 \n",
- "24 2010-05-25 0602010 8585811000001107 \n",
- "25 2010-05-25 0602010 8585611000001108 \n",
- "26 2010-05-25 0602010 8585911000001102 \n",
- "27 2010-05-25 0602010 8585711000001104 \n",
- "28 2010-05-25 0602010 8586811000001104 \n",
- "29 2010-05-25 0602010 8586011000001105 \n",
- "30 2010-05-25 0602010 8586111000001106 \n",
- " \n",
- "58713 2004-10-27 0407010 12301811000001104\n",
- "58714 2004-10-27 0407010 13004211000001106\n",
- "58715 2004-10-27 0407010 13004111000001100\n",
- "58716 2004-10-27 0407010 13004311000001103\n",
- "58717 2004-10-27 0407010 13892911000001107\n",
- "58718 2004-10-27 0407010 13892811000001102\n",
- "58719 2004-10-27 0407010 13893011000001104\n",
- "58720 2004-10-27 0407010 13893811000001105\n",
- "58721 2004-10-27 0407010 16073011000001100\n",
- "58722 2004-10-27 0407010 16665611000001108\n",
- "58723 2004-10-27 0407010 16757111000001108\n",
- "58724 2004-10-27 0407010 17853711000001103\n",
- "58725 2004-10-27 0407010 18084511000001109\n",
- "58726 2004-10-27 0407010 18595211000001106\n",
- "58727 2004-10-27 0407010 18615611000001103\n",
- "58728 2004-10-27 0407010 19200211000001107\n",
- "58729 2004-10-27 0407010 19230711000001108\n",
- "58730 2004-10-27 0407010 19805611000001105\n",
- "58731 2004-10-27 0407010 21636411000001107\n",
- "58732 2004-10-27 0407010 24014911000001102\n",
- "58733 2004-10-27 0407010 24580811000001103\n",
- "58734 2004-10-27 0407010 32637711000001103\n",
- "58735 2004-10-27 0407010 33568211000001100\n",
- "58736 2004-10-27 0407010 34625311000001101\n",
- "58737 2004-10-27 0407010 34878611000001106\n",
- "58738 2004-10-27 0407010 36441411000001100\n",
- "58739 2004-10-27 0407010 36752911000001107\n",
- "58740 2004-10-27 0407010 38063911000001100\n",
- "58741 2004-10-27 0407010 38555311000001107\n",
- "58742 2004-10-27 0407010 38555211000001104"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "gp_scripts_pre = gp_test %>% mutate(bnf_map = str_sub(bnf_code, 1, 7)) %>% left_join(bnf_snomed_mapping %>% select(bnf_map, sct_code), by=\"bnf_map\") %>% distinct() %>% drop_na(sct_code)\n",
- "gp_scripts_pre "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 180,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "A data.table: 5842014 × 10\n",
- "\n",
- "\tconcept_id | concept_name | domain_id | vocabulary_id | concept_class_id | standard_concept | concept_code | valid_start_date | valid_end_date | invalid_reason |
\n",
- "\t<int> | <chr> | <chr> | <chr> | <chr> | <chr> | <chr> | <int> | <int> | <chr> |
\n",
- "\n",
- "\n",
- "\t45756805 | Pediatric Cardiology | Provider | ABMS | Physician Specialty | S | OMOP4821938 | 19700101 | 20991231 | |
\n",
- "\t45756804 | Pediatric Anesthesiology | Provider | ABMS | Physician Specialty | S | OMOP4821939 | 19700101 | 20991231 | |
\n",
- "\t45756803 | Pathology-Anatomic/Pathology-Clinical | Provider | ABMS | Physician Specialty | S | OMOP4821940 | 19700101 | 20991231 | |
\n",
- "\t45756802 | Pathology - Pediatric | Provider | ABMS | Physician Specialty | S | OMOP4821941 | 19700101 | 20991231 | |
\n",
- "\t45756801 | Pathology - Molecular Genetic | Provider | ABMS | Physician Specialty | S | OMOP4821942 | 19700101 | 20991231 | |
\n",
- "\t45756800 | Microbiology | Provider | ABMS | Physician Specialty | S | OMOP4821943 | 19700101 | 20991231 | |
\n",
- "\t45756799 | Pathology - Hematology | Provider | ABMS | Physician Specialty | S | OMOP4821944 | 19700101 | 20991231 | |
\n",
- "\t45756798 | Pathology - Forensic | Provider | ABMS | Physician Specialty | S | OMOP4821945 | 19700101 | 20991231 | |
\n",
- "\t45756797 | Pathology - Clinical | Provider | ABMS | Physician Specialty | S | OMOP4821946 | 19700101 | 20991231 | |
\n",
- "\t45756796 | Pathology - Chemical | Provider | ABMS | Physician Specialty | S | OMOP4821947 | 19700101 | 20991231 | |
\n",
- "\t45756795 | Pathology - Anatomic | Provider | ABMS | Physician Specialty | S | OMOP4821948 | 19700101 | 20991231 | |
\n",
- "\t45756794 | Orthopaedic Sports Medicine | Provider | ABMS | Physician Specialty | S | OMOP4821949 | 19700101 | 20991231 | |
\n",
- "\t45756793 | Nuclear Radiology | Provider | ABMS | Physician Specialty | S | OMOP4821950 | 19700101 | 20991231 | |
\n",
- "\t45756792 | Neurotology | Provider | ABMS | Physician Specialty | S | OMOP4821951 | 19700101 | 20991231 | |
\n",
- "\t45756791 | Neuroradiology | Provider | ABMS | Physician Specialty | S | OMOP4821952 | 19700101 | 20991231 | |
\n",
- "\t45756790 | Neuropathology | Provider | ABMS | Physician Specialty | S | OMOP4821953 | 19700101 | 20991231 | |
\n",
- "\t45756789 | Neuromuscular Medicine | Provider | ABMS | Physician Specialty | S | OMOP4821954 | 19700101 | 20991231 | |
\n",
- "\t45756788 | Neurology with Special Qualification in Child Neurology | Provider | ABMS | Physician Specialty | S | OMOP4821955 | 19700101 | 20991231 | |
\n",
- "\t45756787 | Neurodevelopmental Disabilities | Provider | ABMS | Physician Specialty | S | OMOP4821956 | 19700101 | 20991231 | |
\n",
- "\t45756786 | Neonatal-Perinatal Medicine | Provider | ABMS | Physician Specialty | S | OMOP4821957 | 19700101 | 20991231 | |
\n",
- "\t45756785 | Molecular Genetic Pathology | Provider | ABMS | Physician Specialty | | OMOP4821958 | 19700101 | 20991231 | |
\n",
- "\t45756784 | Medical Toxicology | Provider | ABMS | Physician Specialty | | OMOP4821959 | 19700101 | 20991231 | |
\n",
- "\t45756783 | Medical Physics | Provider | ABMS | Physician Specialty | S | OMOP4821960 | 19700101 | 20991231 | |
\n",
- "\t45756782 | Medical Genetics and Genomics | Provider | ABMS | Physician Specialty | | OMOP4821961 | 19700101 | 20991231 | |
\n",
- "\t45756781 | Medical Biochemical Genetics | Provider | ABMS | Physician Specialty | S | OMOP4821962 | 19700101 | 20991231 | |
\n",
- "\t45756780 | Maternal and Fetal Medicine | Provider | ABMS | Physician Specialty | S | OMOP4821963 | 19700101 | 20991231 | |
\n",
- "\t45756779 | Interventional Cardiology | Provider | ABMS | Physician Specialty | | OMOP4821964 | 19700101 | 20991231 | |
\n",
- "\t45756778 | Internal Medicine - Critical Care Medicine | Provider | ABMS | Physician Specialty | S | OMOP4821965 | 19700101 | 20991231 | |
\n",
- "\t45756777 | Hospice and Palliative Medicine | Provider | ABMS | Physician Specialty | S | OMOP4821966 | 19700101 | 20991231 | |
\n",
- "\t45756776 | Geriatric Psychiatry | Provider | ABMS | Physician Specialty | S | OMOP4821967 | 19700101 | 20991231 | |
\n",
- "\t⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ | ⋮ |
\n",
- "\t36080587 | Ruxience | Drug | dm+d | Brand Name | | OMOP4977061 | 19700101 | 20991231 | |
\n",
- "\t36081833 | Uropyrine | Drug | dm+d | Brand Name | | OMOP4977062 | 19700101 | 20991231 | |
\n",
- "\t36081455 | Thyrotardin-Inject | Drug | dm+d | Brand Name | | OMOP4977063 | 19700101 | 20991231 | |
\n",
- "\t36070943 | Adynovi | Drug | dm+d | Brand Name | | OMOP4977064 | 19700101 | 20991231 | |
\n",
- "\t36073151 | Combiprasal | Drug | dm+d | Brand Name | | OMOP4977065 | 19700101 | 20991231 | |
\n",
- "\t36046146 | PulmoClear | Drug | dm+d | Brand Name | | OMOP4977066 | 19700101 | 20991231 | |
\n",
- "\t36071153 | Ambelina | Drug | dm+d | Brand Name | | OMOP4977067 | 19700101 | 20991231 | |
\n",
- "\t36046221 | AlfacalEss | Drug | dm+d | Brand Name | | OMOP4977068 | 19700101 | 20991231 | |
\n",
- "\t36081267 | TauriDose | Drug | dm+d | Brand Name | | OMOP4977069 | 19700101 | 20991231 | |
\n",
- "\t36046222 | UroFlush | Drug | dm+d | Brand Name | | OMOP4977070 | 19700101 | 20991231 | |
\n",
- "\t36076935 | IroFate | Drug | dm+d | Brand Name | | OMOP4977071 | 19700101 | 20991231 | |
\n",
- "\t36080331 | RestorD3 | Drug | dm+d | Brand Name | | OMOP4977072 | 19700101 | 20991231 | |
\n",
- "\t36081270 | Tavlesse | Drug | dm+d | Brand Name | | OMOP4977073 | 19700101 | 20991231 | |
\n",
- "\t36077754 | MagnaLac | Drug | dm+d | Brand Name | | OMOP4977074 | 19700101 | 20991231 | |
\n",
- "\t36068497 | Dutrozen | Drug | dm+d | Brand Name | | OMOP4977075 | 19700101 | 20991231 | |
\n",
- "\t36080621 | Scenesse | Drug | dm+d | Brand Name | | OMOP4977076 | 19700101 | 20991231 | |
\n",
- "\t36077757 | MagnaTrate | Drug | dm+d | Brand Name | | OMOP4977077 | 19700101 | 20991231 | |
\n",
- "\t36076553 | Gonasi | Drug | dm+d | Brand Name | | OMOP4977078 | 19700101 | 20991231 | |
\n",
- "\t36077330 | Lenzetto | Drug | dm+d | Brand Name | | OMOP4977079 | 19700101 | 20991231 | |
\n",
- "\t36071438 | Aspire Allergy Relief | Drug | dm+d | Brand Name | | OMOP4977080 | 19700101 | 20991231 | |
\n",
- "\t36078445 | Myloxifin | Drug | dm+d | Brand Name | | OMOP4977081 | 19700101 | 20991231 | |
\n",
- "\t36070312 | Polivy | Drug | dm+d | Brand Name | | OMOP4977082 | 19700101 | 20991231 | |
\n",
- "\t36078737 | Norditropin Flexpro | Drug | dm+d | Brand Name | | OMOP4977083 | 19700101 | 20991231 | |
\n",
- "\t36079462 | PF | Drug | dm+d | Brand Name | | OMOP4977084 | 19700101 | 20991231 | |
\n",
- "\t36082335 | Zirabev | Drug | dm+d | Brand Name | | OMOP4977085 | 19700101 | 20991231 | |
\n",
- "\t36080079 | Quest L-Lysine | Drug | dm+d | Brand Name | | OMOP4977086 | 19700101 | 20991231 | |
\n",
- "\t36076118 | FoliSol | Drug | dm+d | Brand Name | | OMOP4977087 | 19700101 | 20991231 | |
\n",
- "\t36049404 | Munuza | Drug | dm+d | Brand Name | | OMOP4977088 | 19700101 | 20991231 | |
\n",
- "\t36076134 | FORTUM MONO | Drug | dm+d | Brand Name | | OMOP4977089 | 19700101 | 20991231 | |
\n",
- "\t36076588 | Hashmats Health A-Z | Drug | dm+d | Brand Name | | OMOP4977090 | 19700101 | 20991231 | |
\n",
- "\n",
- "
\n"
- ],
- "text/latex": [
- "A data.table: 5842014 × 10\n",
- "\\begin{tabular}{llllllllll}\n",
- " concept\\_id & concept\\_name & domain\\_id & vocabulary\\_id & concept\\_class\\_id & standard\\_concept & concept\\_code & valid\\_start\\_date & valid\\_end\\_date & invalid\\_reason\\\\\n",
- " & & & &