## ----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)

