Skip to main content
Exact Dx synthetic data · demonstration
Extended criteria (experimental). This is the broader ten-condition engine, kept as a secondary area. It shows ICD-10-CM codes and illustrative grouping effects for CDI staff. The primary surface is Before you sign (kidney, measurement only). All extended pages.

← All rules

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

Evaluated in order
NameExpression
np_elevatedcoalesce(bnp_max >= t.bnp, false) or coalesce(ntprobnp_max >= t.ntprobnp, false)
acute_countcount(iv_loop_diuretic, np_elevated, new_o2)
hf_typecase(lvef <= t.ref, 'systolic', lvef >= t.pres, 'diastolic', 'midrange')
improvedcoalesce(lvef_prior_min <= t.ref and lvef > t.ref and lvef - lvef_prior_min >= t.improved_rise, false)
acuitycase(acute_count >= 2 and hf_history, 'acute on chronic', acute_count >= 2, 'acute', acute_count == 0 and hf_history, 'chronic', null)

Outcomes

First true outcome wins; an unknown input makes an outcome unknown
OutcomeWhenStatusSupports
improved_ef
LVEF improved from {lvef_prior_min}% to {lvef}% (HFimpEF); type wording needs the clinician
improvedjudgement —
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 == 1judgement —

ICD-10-CM specificity ladder (FY2026 CC/MCC status as a secondary diagnosis)

Query topic: cardiac documentation · prompts for an undocumented diagnosis: no

Where clinical judgement is required

Coding notes