## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", warning = FALSE, message = FALSE) library(mudnester) ## ----conditions-table, echo=FALSE--------------------------------------------- knitr::kable( data.frame( Category = c( "Metabolic/Endocrine", "Metabolic/Endocrine", "Mental Health", "Mental Health", "Mental Health", "Mental Health", "Neurological", "Neurological", "Neurological", "Neurological", "Neurological", "Cardiovascular", "Cardiovascular", "Cardiovascular", "Respiratory", "Respiratory", "Respiratory", "Respiratory", "Respiratory", "Respiratory", "Gastrointestinal", "Gastrointestinal", "Gastrointestinal", "Musculoskeletal", "Musculoskeletal", "Musculoskeletal", "Musculoskeletal", "Renal", "Congenital", "Congenital" ), Condition = c( "Obesity", "Cystic fibrosis†", "Dementia", "Schizophrenia", "Depression", "Intellectual/developmental disability", "Parkinson's disease", "Multiple sclerosis", "Epilepsy", "Cerebral palsy", "Paralysis", "Ischaemic heart disease", "Heart failure", "Hypertension", "Emphysema", "COPD", "Asthma/chronic bronchitis", "Bronchiectasis", "Chronic respiratory failure", "Cystic fibrosis†", "Crohn's disease", "Ulcerative colitis", "Liver failure", "Rheumatoid arthritis", "Osteoarthritis", "SLE", "Osteoporosis", "Chronic kidney disease", "Spina bifida", "Down syndrome" ), `Column name` = c( "obesity", "cystic_fibrosis", "dementia", "schizophrenia", "depression", "intellectual_dev", "parkinsons", "multiple_sclerosis", "epilepsy", "cerebral_palsy", "paralysis", "ihd", "heart_failure", "hypertension", "emphysema", "copd", "asthma", "bronchiectasis", "respiratory_failure", "cystic_fibrosis", "crohns", "ulcerative_colitis", "liver_failure", "rheumatoid_arthritis", "osteoarthritis", "lupus", "osteoporosis", "kidney_disease", "spina_bifida", "downs" ), check.names = FALSE ), caption = "† Cystic fibrosis is intentionally counted in both Metabolic/Endocrine and Respiratory because it has clinically relevant manifestations in both systems." ) ## ----basic-------------------------------------------------------------------- hospital_data <- data.frame( patient_id = 1:5, icd_codes = c( "K29.70", # gastritis only — no chronic comorbidities "U78.1, U83.2, U82.3", # obesity + COPD + hypertension (all U-codes) "J44.1, U79.3", # COPD via acute ICD + depression via U-code "J43.2, J47", # emphysema + bronchiectasis (acute ICD, no U-codes) "E84.0, U80.3" # cystic fibrosis (acute ICD) + epilepsy (U-code) ) ) results <- plumage(hospital_data, "icd_codes") # View key columns results[, c("patient_id", "copd", "emphysema", "bronchiectasis", "cystic_fibrosis", "total_conditions", "conditions_category")] ## ----category----------------------------------------------------------------- table(results$conditions_category) ## ----decimal-false------------------------------------------------------------ df_nodot <- data.frame( icd = c("U832 U823", "J441 J431"), stringsAsFactors = FALSE ) plumage(df_nodot, "icd", decimal = FALSE)[, c("copd", "hypertension", "emphysema")] ## ----drg---------------------------------------------------------------------- df_drg <- data.frame( patient_id = 1:3, icd_codes = c("K29.70", "J44.1", "K29.70"), # row 3: no respiratory ICD drg_codes = c("G07B", "E65A", "E65A") # row 3: COPD DRG only ) # Without DRG: row 3 missed entirely plumage(df_drg, "icd_codes", include_drg = FALSE)[, c("patient_id", "copd")] # With DRG: row 3 caught via E65A plumage(df_drg, "icd_codes", include_drg = TRUE, drg_column = "drg_codes")[, c("patient_id", "copd")] ## ----prefix------------------------------------------------------------------- res_prefixed <- plumage(hospital_data, "icd_codes", prefix = "chr_") names(res_prefixed)[grepl("^chr_", names(res_prefixed))] |> head(8) ## ----drop-eggs---------------------------------------------------------------- res_lean <- plumage(hospital_data, "icd_codes", drop_eggs = TRUE) names(res_lean)