Comorbidity Assessment
Charlson Comorbidity Index and genetic risk integration
Overview
The comorbidity scoring system quantifies chronic disease burden and family health history using the evidence-based Charlson Comorbidity Index (CCI). This component reduces overall health scores based on existing conditions and genetic predisposition.
Implementation: preact/health_scorer/comorbidity_factor.py
What is Comorbidity?
Comorbidity refers to the presence of multiple chronic health conditions in an individual. These conditions:
- Complicate disease management
- Increase healthcare costs
- Reduce quality of life
- Worsen health outcomes
Example: A person with diabetes and heart disease has worse outcomes than someone with either condition alone.
Charlson Comorbidity Index
Background
The Charlson Comorbidity Index (CCI) is a validated clinical tool that: - Assigns weighted scores to 19 chronic conditions - Predicts 10-year mortality risk - Used in hospitals worldwide since 1987
Condition Weights
Each condition receives a weight from 0-6 based on mortality risk:
| Weight | Conditions |
|---|---|
| 1 | Myocardial infarction, CHF, peripheral vascular disease, cerebrovascular disease, dementia, COPD, connective tissue disease, ulcer disease, mild liver disease, diabetes (uncomplicated) |
| 2 | Hemiplegia, moderate/severe renal disease, diabetes with end-organ damage, any tumor (within 5 years), leukemia, lymphoma |
| 3 | Moderate or severe liver disease |
| 6 | Metastatic solid tumor, AIDS |
Mathematical Formula
For a set of conditions \(C\) with Charlson weights \(w_i\):
\[ \text{Raw Charlson Score} = \sum_{i=1}^{N} w_i \cdot m \]
Where: - \(w_i \in [0, 6]\) = Charlson weight for condition \(i\) - \(m\) = Severity multiplier (default 1.0) - \(N\) = Number of present conditions
Note: Conditions without Charlson weights (e.g., mental health diagnoses) are tracked but don’t contribute to raw Charlson score.
Family History Integration
Genetic Component
Family health history provides genetic risk information. Our system:
- Identifies genetic conditions: Only conditions flagged
has_genetic_component=TRUEcontribute - Deduplicates: Multiple family members with same condition count once
- Weights appropriately: Family history carries less weight than personal diagnosis
Deduplication Example
Input:
Father - hypertension
Mother - hypertension
Aunt - arthritis
Processing: - Hypertension appears twice → Count once - Arthritis appears once → Count once - Final unique conditions: {hypertension, arthritis}
Family History Formula
For unique family conditions \(F\) with weights \(w_j\):
\[ \text{Family History Score} = \sum_{j \in \text{unique}(F)} \max(w_j, 1.0) \cdot r_j \cdot m_{fh} \]
Where: - \(\text{unique}(F)\) = Deduplicated condition set - \(w_j\) = Charlson weight (or 1.0 if no weight defined) - \(r_j\) = Family risk weight (default 0.1) - \(m_{fh}\) = Family multiplier (default 0.1)
Combined effect: Family history contributes ~1% of personal diagnosis weight
Total Comorbidity Calculation
Step 1: Raw Charlson Points
\[ \text{Total Charlson} = \text{Condition Score} + \text{Family History Score} \]
Step 2: Nonlinear Penalty Model
The comorbidity penalty uses a bounded nonlinear function to avoid excessive penalties:
Baseline Penalty: \[ \text{Comorbidity Baseline} = \begin{cases} 0.15 & \text{if Total Charlson} > 0 \\ 0 & \text{otherwise} \end{cases} \]
Capping: \[ \text{Capped Charlson} = \min(\text{Total Charlson}, 6) \]
Normalization (logarithmic): \[ \text{Normalized} = \frac{\ln(1 + \text{Capped Charlson})}{\ln(1 + 6)} \]
Modifier: \[ \text{Charlson Modifier} = \max\left(1 - 0.35 \cdot \text{Normalized}, 0.65\right) \]
Final Comorbidity Factor: \[ \text{Comorbidity Factor} = \text{Comorbidity Baseline} \times \text{Charlson Modifier} \]
Why Logarithmic?
Linear scaling would over-penalize severe multi-morbidity. The logarithmic function: - Captures rapid increase in risk with first few conditions - Prevents excessive penalties for complex patients - Reflects diminishing marginal impact of additional diagnoses
Special Cases
Age 0 (Infants)
\[ \text{Comorbidity Factor}_{\text{age}=0} = 0 \]
Rationale: Infants are assumed to have no chronic comorbidities unless explicitly diagnosed.
Missing Data
If no comorbidity data provided: - Assume no chronic conditions - Comorbidity Factor = 0
Conservative assumption: Better than falsely penalizing users
Data Sources
Condition Data
Conditions are mapped via dim_health_conditions database table: - Condition name - Charlson weight - ICD-10 code - Genetic component flag - Category
Survey Integration
Users report conditions through: - Multi-select condition checklist - Free-text family history (with fuzzy matching) - Medical history upload (future)
Validation
Clinical Correlation
- Hospital readmissions: CCI predicts 30-day readmissions (AUC 0.73)
- Mortality: Strong correlation with 1-year and 10-year mortality
- Healthcare costs: Linear relationship with annual costs
Our Implementation
Validated against: - Known high-risk cases: Correctly identifies severe multi-morbidity - Family history: Appropriately reduces but doesn’t eliminate genetic risk - Edge cases: Handles missing data, age extremes, rare conditions
See Scoring Audit for detailed validation.
Limitations
Self-report accuracy: Users may not know all diagnoses or family history
Undiagnosed conditions: Cannot capture conditions not yet diagnosed
Family history quality: Depends on user knowledge of relatives’ health
Population generalizability: CCI validated primarily in Western healthcare systems
Future Enhancements
- EHR integration: Direct import of diagnosed conditions
- Medication inference: Infer conditions from medication lists
- Genomic data: Incorporate polygenic risk scores
- Dynamic weights: Adjust Charlson weights based on modern outcomes data
Open Source
Full implementation: github.com/preacterik/preact-health-scoring/blob/main/preact/health_scorer/v020/comorbidity_factor.py
Review the algorithm or contribute improvements.
References
- Charlson ME, et al. A new method of classifying prognostic comorbidity in longitudinal studies. Journal of Chronic Diseases (1987)
- Quan H, et al. Updating and validating the Charlson Comorbidity Index. Medical Care (2011)
- CDC. Family Health History and Chronic Disease. (2021)
- Elixhauser A, et al. Comorbidity measures for use with administrative data. Medical Care (1998)
Last updated: February 17, 2026