Heart failure type (LVEF) and acuity
Rule heart_failure version 2026.11-1 · condition: Heart failure
Published source
Universal Definition and Classification of Heart Failure (HFSA/HFA/JHFS, 2021), as restated in Chandramouli et al., Clin Cardiol 2022 (2021). LVEF classification: HFrEF <=40%, HFmrEF 41-49%, HFpEF >=50%; HFimpEF = baseline <=40%, rise >=10 points, second LVEF >40%. https://eprints.gla.ac.uk/274434/1/274434.pdf · public page checked 2026-11-14
Natriuretic peptide levels supporting HF in hospitalized/decompensated patients: BNP >=100 pg/mL or NT-proBNP >=300 pg/mL (secondary source; primary not open access).
Also: 2021 ESC Guidelines for the diagnosis and treatment of acute and chronic heart failure (2021). Section 3.2.1, Table 3 (LVEF categories); Section 11 (acute heart failure). link
Also: 2022 AHA/ACC/HFSA Guideline for the Management of Heart Failure (2022). Same LVEF categories (publisher page not loadable during verification). link
Contested or local convention. No guideline gives a numeric definition of "acute" versus "chronic" heart failure. This rule uses a LOCAL CONVENTION: at least two acute indicators (IV loop diuretic, elevated natriuretic peptide, new oxygen requirement) = acute; with a prior history of heart failure = acute on chronic; none with history = chronic; exactly one = clinical judgement.
Inputs
- lvef
- Latest LVEF within 12 months (%)
- lvef_prior_min
- Lowest earlier LVEF within 12 months (%)
- iv_loop_diuretic
- IV loop diuretic given this stay
- bnp_max
- Highest BNP this stay (pg/mL)
- ntprobnp_max
- Highest NT-proBNP this stay (pg/mL)
- new_o2
- Supplemental oxygen started this stay without home oxygen
- hf_history
- Prior heart failure on the problem list / history
Thresholds
- t.ref
- 40
- t.pres
- 50
- t.improved_rise
- 10
- t.bnp
- 100
- t.ntprobnp
- 300
Derived values
| Name | Expression |
|---|---|
| np_elevated | coalesce(bnp_max >= t.bnp, false) or coalesce(ntprobnp_max >= t.ntprobnp, false) |
| acute_count | count(iv_loop_diuretic, np_elevated, new_o2) |
| hf_type | case(lvef <= t.ref, 'systolic', lvef >= t.pres, 'diastolic', 'midrange') |
| improved | coalesce(lvef_prior_min <= t.ref and lvef > t.ref and lvef - lvef_prior_min >= t.improved_rise, false) |
| acuity | case(acute_count >= 2 and hf_history, 'acute on chronic', acute_count >= 2, 'acute', acute_count == 0 and hf_history, 'chronic', null) |
Outcomes
| Outcome | When | Status | Supports |
|---|---|---|---|
| improved_ef LVEF improved from {lvef_prior_min}% to {lvef}% (HFimpEF); type wording needs the clinician | improved | judgement | — |
| midrange LVEF {lvef}% (HFmrEF, 41-49%); the type wording and its coding convention need the clinician | hf_type == 'midrange' | judgement | — |
| sys_aoc LVEF {lvef}% with {acute_count} acute indicators and prior heart failure | hf_type == 'systolic' and acuity == 'acute on chronic' | supported | I50.23 Acute on chronic systolic (HFrEF) heart failure |
| sys_acute LVEF {lvef}% with {acute_count} acute indicators, no prior heart failure on file | hf_type == 'systolic' and acuity == 'acute' | supported | I50.21 Acute systolic (HFrEF) heart failure |
| sys_chronic LVEF {lvef}%, prior heart failure, no acute indicators | hf_type == 'systolic' and acuity == 'chronic' | supported | I50.22 Chronic systolic (HFrEF) heart failure |
| dia_aoc LVEF {lvef}% with {acute_count} acute indicators and prior heart failure | hf_type == 'diastolic' and acuity == 'acute on chronic' | supported | I50.33 Acute on chronic diastolic (HFpEF) heart failure |
| dia_acute LVEF {lvef}% with {acute_count} acute indicators, no prior heart failure on file | hf_type == 'diastolic' and acuity == 'acute' | supported | I50.31 Acute diastolic (HFpEF) heart failure |
| dia_chronic LVEF {lvef}%, prior heart failure, no acute indicators | hf_type == 'diastolic' and acuity == 'chronic' | supported | I50.32 Chronic diastolic (HFpEF) heart failure |
| one_indicator Only one acute indicator; acuity needs clinical judgement | acute_count == 1 | judgement | — |
ICD-10-CM specificity ladder (FY2026 CC/MCC status as a secondary diagnosis)
- I50.9 Heart failure, unspecified · non-CC
- I50.20 Systolic heart failure, acuity unspecified · CC (refines I50.9)
- I50.30 Diastolic heart failure, acuity unspecified · CC (refines I50.9)
- I50.22 Chronic systolic heart failure · CC (refines I50.20)
- I50.21 Acute systolic heart failure · MCC (refines I50.20)
- I50.23 Acute on chronic systolic heart failure · MCC (refines I50.22, I50.21)
- I50.32 Chronic diastolic heart failure · CC (refines I50.30)
- I50.31 Acute diastolic heart failure · MCC (refines I50.30)
- I50.33 Acute on chronic diastolic heart failure · MCC (refines I50.32, I50.31)
Query topic: cardiac documentation · prompts for an undocumented diagnosis: no
Where clinical judgement is required
- Acuity is a local convention (see "contested"); exactly one acute indicator is never concluded.
- HFmrEF and HFimpEF type wording is left to the clinician.
- The rule does not prompt for heart failure that is not documented at all.
Coding notes
- When heart failure is the principal diagnosis, secondary I50.x codes are CC-excluded (Table 6K).