Skip to content
Back to Blog
April 9, 2026·12 min read

Heart Failure HCC Coding: Systolic vs Diastolic Guide

Heart FailureHCC CodingICD-10Risk AdjustmentCHFV28Ejection Fraction

By Daniel Plasencia — Certified Risk Coder (CRC), Certified Professional Coder (CPC)

Heart Failure HCC Coding: Systolic vs Diastolic Guide

Introduction: Why Heart Failure Is One of the Highest-Stakes HCC Categories

Heart failure is among the most clinically complex and financially significant conditions in HCC coding. It affects over 6 million adults in the United States and is one of the leading causes of hospitalization in the Medicare population. For risk adjustment coders, heart failure coding carries outsized importance because of the condition's high cost profile, its multiple clinical subtypes, and the documentation specificity required to assign the correct ICD-10-CM code.

Under CMS-HCC Model V28, heart failure maps to HCC 85 (Congestive Heart Failure), one of the higher-weighted chronic condition HCCs. Getting the code right means the difference between accurate risk prediction and either undercoding (leaving legitimate RAF value uncaptured) or overcoding (creating RADV audit exposure). Getting it wrong is easy because heart failure has more clinical subtypes, classification systems, and documentation requirements than most conditions coders encounter.

This guide covers everything a risk adjustment coder needs to know: the ICD-10-CM code structure for heart failure, V28 HCC mappings, the V24-to-V28 transition, ejection fraction documentation, systolic vs diastolic vs combined coding, MEAT criteria specific to CHF, common coding pitfalls, and practical tips for accuracy.

Heart Failure in the V28 HCC Model

In CMS-HCC Model V28, heart failure maps primarily to one payment HCC:

  • HCC 85: Congestive Heart Failure — This category captures the full spectrum of heart failure diagnoses, including systolic (HFrEF), diastolic (HFpEF), combined systolic and diastolic, acute, chronic, and acute-on-chronic presentations. The V28 coefficient for HCC 85 makes it one of the more impactful cardiovascular HCCs, reflecting the condition's high cost burden in the Medicare population.
  • Heart failure codes also interact with other cardiovascular HCCs through V28's hierarchy structure. Understanding where heart failure sits in the hierarchy prevents duplicate counting and ensures the highest applicable HCC is captured.

    Related HCC to know:

  • HCC 86: Acute Myocardial Infarction — While not a heart failure HCC, coders should be aware that patients with heart failure frequently have a history of myocardial infarction. HCC 86 captures acute MI events and has its own distinct mapping. A patient can have both HCC 85 and HCC 86 scored simultaneously when both conditions are documented and supported by the encounter, as they are not in the same hierarchy.
  • ICD-10-CM Code Structure for Heart Failure (I50.x)

    The I50 code family is the primary category for heart failure coding. Understanding the structure is essential for selecting the correct code.

    Systolic Heart Failure (Heart Failure with Reduced Ejection Fraction / HFrEF) — I50.2x

    Systolic heart failure, now clinically referred to as Heart Failure with Reduced Ejection Fraction (HFrEF), occurs when the left ventricle cannot contract forcefully enough to pump blood effectively. This is characterized by an ejection fraction (EF) of 40% or less.

  • I50.20: Unspecified systolic (congestive) heart failure — Use when the provider documents systolic heart failure but does not specify whether it is acute, chronic, or acute-on-chronic.
  • I50.21: Acute systolic (congestive) heart failure — A sudden onset or sudden worsening of systolic heart failure symptoms. Typically documented during an inpatient admission or emergency encounter.
  • I50.22: Chronic systolic (congestive) heart failure — The most commonly coded systolic heart failure code in outpatient risk adjustment. This indicates an ongoing, managed condition.
  • I50.23: Acute on chronic systolic (congestive) heart failure — A documented acute exacerbation of an existing chronic systolic heart failure condition. This code requires documentation of both the chronic baseline and the acute decompensation.
  • All I50.2x codes map to HCC 85 in V28.

    Diastolic Heart Failure (Heart Failure with Preserved Ejection Fraction / HFpEF) — I50.3x

    Diastolic heart failure, now referred to as Heart Failure with Preserved Ejection Fraction (HFpEF), occurs when the left ventricle cannot relax properly to fill with blood, despite a normal or near-normal ejection fraction (typically EF of 50% or greater).

  • I50.30: Unspecified diastolic (congestive) heart failure
  • I50.31: Acute diastolic (congestive) heart failure
  • I50.32: Chronic diastolic (congestive) heart failure — Common in outpatient risk adjustment settings.
  • I50.33: Acute on chronic diastolic (congestive) heart failure
  • All I50.3x codes map to HCC 85 in V28.

    Combined Systolic and Diastolic Heart Failure — I50.4x

    When a patient has both systolic and diastolic dysfunction, ICD-10-CM provides combination codes:

  • I50.40: Unspecified combined systolic and diastolic heart failure
  • I50.41: Acute combined systolic and diastolic heart failure
  • I50.42: Chronic combined systolic and diastolic heart failure
  • I50.43: Acute on chronic combined systolic and diastolic heart failure
  • All I50.4x codes map to HCC 85 in V28.

    Other Heart Failure Codes — I50.1, I50.8x, I50.9

  • I50.1: Left ventricular failure, unspecified — Covers left heart failure not otherwise specified. Maps to HCC 85.
  • I50.810: Right heart failure, unspecified — Isolated right-sided heart failure. Maps to HCC 85.
  • I50.811: Acute right heart failure
  • I50.812: Chronic right heart failure
  • I50.813: Acute on chronic right heart failure
  • I50.814: Right heart failure due to left heart failure
  • I50.82: Biventricular heart failure — Both ventricles are failing.
  • I50.83: High output heart failure — Heart failure caused by conditions that increase cardiac output demand (severe anemia, thyrotoxicosis, arteriovenous fistula).
  • I50.84: End stage heart failure — The most severe classification, indicating the patient has advanced, refractory heart failure. This code carries significant clinical weight and audit scrutiny.
  • I50.89: Other heart failure
  • I50.9: Heart failure, unspecified — This is the code that causes the most problems in risk adjustment. See the pitfalls section below.
  • Heart Failure Codes Beyond the I50 Family

    Heart failure does not exist in isolation. Several important ICD-10-CM categories intersect with heart failure coding:

    Hypertensive Heart Disease with Heart Failure — I11.0

  • I11.0: Hypertensive heart disease with heart failure — When a patient has both hypertension and heart failure, ICD-10-CM assumes a causal relationship per the Official Coding Guidelines (Section I.C.9.a). This code must be assigned when both conditions are documented, even if the provider does not explicitly state a causal link. An additional code from I50.x is required to identify the type of heart failure.
  • This is a critical coding rule. A patient documented as having "hypertension" and "chronic systolic heart failure" should be coded with both I11.0 AND I50.22. The I11.0 code captures the hypertensive heart disease, and the I50.22 specifies the type of heart failure. Both codes map to HCC 85, but the I11.0 code is required by ICD-10-CM sequencing guidelines.

    Hypertensive Heart and Chronic Kidney Disease — I13.x

  • I13.0: Hypertensive heart and chronic kidney disease with heart failure and stage 1-4 or unspecified CKD
  • I13.2: Hypertensive heart and chronic kidney disease with heart failure and stage 5 CKD or ESRD
  • These codes apply when a patient has hypertension, heart failure, AND chronic kidney disease. The same presumed causal relationship applies. An additional I50.x code is required to specify the heart failure type, and an N18.x code is required for the CKD stage. This combination is common in the Medicare population and can generate multiple HCC captures from a single encounter when properly documented.

    Cardiomyopathies — I42.x

    Several cardiomyopathy codes map to HCC 85 when they cause heart failure:

  • I42.0: Dilated cardiomyopathy — The most common cardiomyopathy causing systolic heart failure.
  • I42.1: Obstructive hypertrophic cardiomyopathy
  • I42.2: Other hypertrophic cardiomyopathy
  • I42.5: Other restrictive cardiomyopathy
  • I42.6: Alcoholic cardiomyopathy
  • I42.7: Cardiomyopathy due to drug and external agent
  • I42.8: Other cardiomyopathies
  • I42.9: Cardiomyopathy, unspecified
  • When a cardiomyopathy is the underlying cause of heart failure, code both the cardiomyopathy and the heart failure type (I50.x) to capture the full clinical picture. The provider should document the causal relationship.

    V24 to V28 Transition Changes for Heart Failure

    The transition from CMS-HCC Model V24 to V28 brought significant changes to cardiovascular coding, including heart failure. Understanding these changes is essential during the current transition period.

    V24 Heart Failure HCCs:

  • HCC 85: Congestive Heart Failure — Captured the full range of I50.x codes
  • HCC 86: Acute Myocardial Infarction — Separate from heart failure
  • HCC 87: Unstable Angina and Other Acute Ischemic Heart Disease
  • HCC 88: Angina Pectoris
  • V28 Heart Failure HCCs:

  • HCC 85: Congestive Heart Failure — Retained with recalibrated coefficients. The I50.x codes continue to map here.
  • HCC 86: Acute Myocardial Infarction — Retained, but with updated code mappings.
  • HCCs 87 and 88 from V24 were eliminated in V28. Angina pectoris and unstable angina no longer map to a payment HCC.
  • Key changes to understand:

  • Heart failure itself (HCC 85) survived the V28 transition largely intact, unlike many cardiovascular categories that were eliminated or consolidated. This is because heart failure remains one of the most expensive conditions to treat in Medicare.
  • The elimination of HCCs 87 and 88 means that ischemic heart disease without heart failure or acute MI carries less risk adjustment value under V28. Plans that relied heavily on angina codes for RAF capture must now focus on documenting and coding the actual heart failure diagnosis when present.
  • RAF weights were recalibrated. The V28 coefficient for HCC 85 reflects updated cost data and may differ from the V24 weight. Use the HCC Buddy RAF calculator to see the exact current-year coefficient.
  • During the blend period, both V24 and V28 models are scored for each beneficiary. The final payment is a weighted average, transitioning to full V28 by Payment Year 2028.
  • For a comprehensive look at all V24 to V28 changes, see our complete V28 changes guide.

    Ejection Fraction Documentation: Why It Matters

    Ejection fraction (EF) is the single most important clinical metric for heart failure coding because it determines the type of heart failure:

  • EF at or below 40%: Heart Failure with Reduced Ejection Fraction (HFrEF) = Systolic heart failure (I50.2x)
  • EF between 41-49%: Heart Failure with Mildly Reduced Ejection Fraction (HFmrEF) — This is a newer clinical classification. ICD-10-CM does not have a specific code for HFmrEF; coders should code per the provider's documentation of the heart failure type or query for clarification.
  • EF at or above 50%: Heart Failure with Preserved Ejection Fraction (HFpEF) = Diastolic heart failure (I50.3x)
  • Why EF documentation is critical for coders:

    The provider must document the type of heart failure (systolic, diastolic, or combined) for the coder to assign a specific I50.2x, I50.3x, or I50.4x code. The EF value alone, without a heart failure diagnosis, is not codeable. However, the EF value in the chart supports the specificity of the code and is the single best defense against RADV audit challenge.

    Documentation best practices for providers:

  • State the EF percentage from the most recent echocardiogram
  • Explicitly name the heart failure type: "chronic systolic heart failure" or "chronic diastolic heart failure"
  • If EF has changed from prior measurements, note the trend and its clinical significance
  • For combined heart failure, document both systolic and diastolic dysfunction and the EF value
  • For coders: If the provider documents "heart failure" with an EF of 35% but does not specify "systolic," the coder should query for clarification rather than inferring the type from the EF. The provider must document the clinical diagnosis. The EF supports the code but does not replace the provider's diagnostic statement.

    MEAT Documentation Requirements for Heart Failure

    Every heart failure HCC code must be supported by MEAT criteria documentation in the current encounter. For CHF, the MEAT elements take specific forms. For a complete MEAT framework overview, see our MEAT criteria guide.

    M - Monitor

    Heart failure monitoring evidence includes:

  • Daily weight logs reviewed or discussed
  • BNP (B-type natriuretic peptide) or NT-proBNP lab results ordered or reviewed
  • Echocardiogram results reviewed or ordered
  • Chest X-ray findings discussed (cardiomegaly, pulmonary edema, pleural effusion)
  • Vital signs relevant to CHF: blood pressure, heart rate, oxygen saturation
  • Fluid intake/output tracking
  • Telemetry or remote monitoring data review
  • E - Evaluate

    Heart failure evaluation language includes:

  • "Heart failure is currently compensated" or "decompensated"
  • "EF stable at 30%, no change from last echo"
  • "NYHA Class II functional status, unchanged from last visit"
  • "No signs of fluid overload — no JVD, no peripheral edema, lungs clear"
  • "Symptoms improved since diuretic adjustment"
  • A - Assess

    Heart failure assessment evidence includes:

  • Heart failure named in the assessment/plan section with type specified (systolic, diastolic, combined)
  • Acuity documented (acute, chronic, acute on chronic)
  • Staging or classification documented (NYHA class, ACC/AHA stage)
  • The condition listed on the active encounter problem list (not just the global problem list)
  • T - Treat

    Heart failure treatment documentation includes:

  • ACE inhibitors, ARBs, or ARNI (sacubitril/valsartan) prescribed, continued, or adjusted
  • Beta-blockers (carvedilol, metoprolol succinate, bisoprolol) prescribed or continued
  • Diuretics (furosemide, bumetanide, torsemide) prescribed or dose adjusted
  • Mineralocorticoid receptor antagonists (spironolactone, eplerenone)
  • SGLT2 inhibitors (dapagliflozin, empagliflozin) for heart failure
  • Hydralazine/isosorbide dinitrate combination
  • Implantable cardioverter-defibrillator (ICD) or cardiac resynchronization therapy (CRT) discussed, placed, or monitored
  • Referral to cardiology or heart failure clinic
  • Fluid restriction or sodium restriction counseled
  • Cardiac rehabilitation referral
  • A single MEAT element is sufficient to support coding the diagnosis, but the best-documented encounters include multiple elements. For detailed MEAT guidance with chart examples, see our MEAT criteria deep dive.

    Common Heart Failure Coding Pitfalls

    Pitfall 1: Defaulting to I50.9 (Heart Failure, Unspecified)

    This is the single most common heart failure coding error in risk adjustment. I50.9 maps to HCC 85, so it does capture RAF value. However, it is a red flag for RADV auditors because it suggests a lack of clinical specificity. In most clinical settings, the provider knows whether the patient has systolic or diastolic heart failure, and the documentation should reflect that knowledge.

    The fix: Query the provider whenever you see "heart failure" or "CHF" without a type specified. Ask: "Is this systolic, diastolic, or combined? Is it acute, chronic, or acute on chronic?" Most providers can answer immediately because they already know — they just did not write it in the note.

    Pitfall 2: Missing the I11.0 Requirement

    When a patient has both hypertension and heart failure, ICD-10-CM guidelines require I11.0 (Hypertensive heart disease with heart failure) as an additional code, along with the I50.x code specifying the type. Many coders forget this and code only the I50.x code, missing the hypertensive heart disease component.

    The fix: Any time you code an I50.x code, check whether the patient also has documented hypertension. If yes, add I11.0. If the patient also has CKD, consider whether I13.0 or I13.2 is more appropriate.

    Pitfall 3: Not Coding All Applicable Heart Failure Types

    A patient can have both systolic and diastolic dysfunction. Some coders pick one and ignore the other. ICD-10-CM provides the I50.4x combination codes specifically for this scenario.

    The fix: When the echo or provider documentation mentions both reduced EF and diastolic filling abnormalities, use the I50.4x combined code rather than choosing one type.

    Pitfall 4: Coding Heart Failure from the Problem List Alone

    Heart failure on the problem list without any evidence of management at the current encounter does not meet MEAT criteria. This is especially common with patients who have long problem lists carried forward from prior encounters.

    The fix: Verify that at least one MEAT element exists in the current encounter note for heart failure before coding it. If the only mention is on the problem list, query the provider or do not code it from this encounter.

    Pitfall 5: Confusing "History of" with Active Heart Failure

    A provider who writes "history of heart failure" may mean the patient currently has heart failure (using "history of" colloquially) or may mean the patient had heart failure in the past but it has resolved. These are different clinical and coding scenarios.

    The fix: If the provider writes "history of heart failure" but the patient is on active heart failure medications (furosemide, carvedilol, lisinopril for HF indication), query the provider to clarify whether the condition is active or resolved. Active heart failure on treatment is not a "history of" — it is a current condition. For guidance on when to query vs code, see our provider query templates.

    Pitfall 6: Not Capturing Cardiomyopathy as an Additional Code

    When heart failure is caused by a documented cardiomyopathy (dilated, hypertrophic, restrictive, alcoholic), both the cardiomyopathy code (I42.x) and the heart failure code (I50.x) should be assigned. The cardiomyopathy provides the underlying etiology, and the heart failure code provides the clinical manifestation.

    The fix: When you see heart failure documentation that mentions cardiomyopathy, code both. Check the provider's documentation for the specific type of cardiomyopathy.

    Using HCC Buddy for Heart Failure Coding

    HCC Buddy streamlines heart failure code lookup and validation:

  • Search any I50 code — Type any heart failure code into the ICD-10 Encoder to see the full description, HCC mapping for both V24 and V28, RAF weight, hierarchy information, and coding guidelines. Try searching I50.22 to see the complete detail for chronic systolic heart failure.
  • Compare V24 and V28 mappings — See both model assignments side by side during the transition period to understand how the blend calculation affects heart failure codes.
  • RAF impact modeling — Use the RAF Calculator to see the exact RAF weight for HCC 85 and model the impact of capturing heart failure across a patient panel.
  • AI coding assistant — Ask natural language questions like "What is the difference between I50.22 and I50.32?" or "Does I50.9 map to an HCC?" and get answers grounded in ICD-10-CM guidelines and CMS mapping data.
  • Drug-to-diagnosis cross-reference — Search heart failure medications (furosemide, carvedilol, sacubitril/valsartan) in the drug lookup to see associated ICD-10 codes, helping verify that the documented diagnosis matches the treatment regimen.
  • Frequently Asked Questions

    Does I50.9 (heart failure, unspecified) map to an HCC?

    Yes, I50.9 maps to HCC 85 (Congestive Heart Failure) in V28 and does carry RAF value. However, it is a clinically unspecified code and is a known audit risk. RADV reviewers expect providers to document the type of heart failure (systolic, diastolic, or combined) and the acuity (acute, chronic, or acute on chronic). Using I50.9 when more specific documentation exists in the chart is undercoding and may trigger a query or audit finding. Always seek the most specific code supported by the documentation.

    What is the difference between systolic and diastolic heart failure for coding purposes?

    Systolic heart failure (HFrEF, I50.2x) involves a reduced ejection fraction — the heart cannot pump with enough force. Diastolic heart failure (HFpEF, I50.3x) involves a preserved ejection fraction — the heart pumps normally but cannot relax and fill properly. Both map to HCC 85 in V28 and carry the same RAF weight. The coding difference is in the 4th character of the ICD-10 code: I50.2x for systolic, I50.3x for diastolic, I50.4x for combined. The provider must document the type; the coder should not infer it from ejection fraction values alone.

    Do I need to code I11.0 separately when a patient has hypertension and heart failure?

    Yes. ICD-10-CM Official Guidelines (Section I.C.9.a) establish a presumed causal relationship between hypertension and heart disease. When a patient has both hypertension and heart failure, you must code I11.0 (Hypertensive heart disease with heart failure) in addition to the specific I50.x code identifying the type of heart failure. This is not optional — it is a guideline requirement, even if the provider does not explicitly state that hypertension caused the heart failure.

    What changed for heart failure between V24 and V28?

    Heart failure HCC 85 was retained in V28 with recalibrated coefficients based on updated cost data. The most significant change affecting heart failure coders is the elimination of V24 HCCs 87 (Unstable Angina) and 88 (Angina Pectoris), which means ischemic heart disease without heart failure or acute MI no longer carries risk adjustment value. The heart failure codes themselves (I50.x) continue to map to HCC 85 in both models. During the blend period, both V24 and V28 scores are calculated and the payment uses a weighted average.

    How do I code heart failure when the provider only documents "CHF" without specifying the type?

    "CHF" without further specification defaults to I50.9 (heart failure, unspecified). While this code does map to HCC 85, best practice is to query the provider for the type (systolic, diastolic, or combined) and acuity (acute, chronic, or acute on chronic). Check the chart for an echocardiogram report or prior cardiology note that may contain the EF and heart failure classification. If you find supporting documentation elsewhere in the record for the same encounter, use that information to query the provider rather than defaulting to the unspecified code. The query should ask the provider to confirm the type and acuity in their documentation.

    Conclusion

    Heart failure coding demands clinical knowledge, documentation specificity, and awareness of the complex interactions between heart failure, hypertension, cardiomyopathy, and chronic kidney disease. The core principles for accurate heart failure HCC coding:

  • Specify the type — Systolic (I50.2x), diastolic (I50.3x), or combined (I50.4x) instead of unspecified (I50.9)
  • Specify the acuity — Acute, chronic, or acute on chronic instead of unspecified
  • Document ejection fraction — EF supports the code selection and defends against audit challenge
  • Code hypertensive heart disease — I11.0 is required when hypertension and heart failure coexist
  • Apply MEAT criteria — Heart failure must be monitored, evaluated, assessed, or treated at the current encounter to be reportable
  • Code the complete picture — Cardiomyopathy etiology, CKD comorbidity, and all applicable heart failure codes should be captured
  • Search any heart failure code at hccbuddy.com/encoder and see the HCC mapping instantly. Use the RAF Calculator to model the financial impact of HCC 85 across your patient panel. Start your 14-day Pro trial to access the complete ICD-10-CM code set with V24 and V28 HCC mappings — no credit card required.

    Daniel Plasencia

    Daniel Plasencia

    Founder & Developer

    Daniel Plasencia — Risk adjustment coding professional and software engineer who built the tool he wished existed, at a price coders can actually afford.

    Get HCC Coding Tips in Your Inbox

    Join our newsletter for coding tips, guideline updates, and tool announcements.

    Related Articles