Heart Failure HCC Coding: Systolic vs Diastolic Guide
By Daniel Plasencia — Certified Risk Coder (CRC), Certified Professional Coder (CPC)

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:
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:
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.
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).
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:
All I50.4x codes map to HCC 85 in V28.
Other Heart Failure Codes — I50.1, I50.8x, I50.9
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
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
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:
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:
V28 Heart Failure HCCs:
Key changes to understand:
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:
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:
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:
E - Evaluate
Heart failure evaluation language includes:
A - Assess
Heart failure assessment evidence includes:
T - Treat
Heart failure treatment documentation includes:
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:
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:
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.
Related Tools
ICD-10 Encoder
Search heart failure codes (I50.x, I11.0, I42.x) with instant HCC mapping and V28 coefficients.
RAF Calculator
Model the RAF impact of HCC 85 and CHF interaction terms across your patient panel.
Drug Reference
Cross-reference heart failure medications (furosemide, carvedilol, sacubitril/valsartan) with ICD-10 diagnoses.
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.