Clinical Commercial Product

Heart Failure's Stage A and B Blind Spot: The Upstream Patients Coding and Risk Adjustment Cannot Represent

The 2022 heart failure guideline told clinicians to find at-risk and pre-HF patients before symptoms start. The diagnostics can find them. The claim may not say so. The codes were written by and for specialists, the at-risk patient maps to no risk weight at all, and the only codes that earn weight assert a heart failure these patients do not yet have. The population the guideline most wants identified is the one the data layer is least able to represent honestly.

Cardiology spent the last decade moving upstream. The 2022 AHA/ACC/HFSA heart failure guideline rebuilt the staging language around prevention, renaming Stage A as at risk and Stage B as pre-HF, and asking clinicians to catch structural disease before a patient ever decompensates. The clinical intent is sound and the detection tools mostly exist. The problem sits one layer down, in the administrative vocabulary that turns a clinical encounter into a claim. The code set never moved with the guideline, so the pre-HF patient the guideline is built to find has no clean way to be recorded, counted, or risk-adjusted.

This is the same structural fault that runs through the new prevention guidelines and the PREVENT calculator, examined in the companion piece on the payer harmonization gap. Heart failure is the cleaner illustration, because here the clinical signal is often visible on imaging and still cannot survive the trip into claims data.

The guideline moved, the code set did not

The 2022 guideline redefined Stage B as the presence of structural heart disease, increased filling pressures, or risk factors paired with elevated natriuretic peptides or persistently elevated troponin, all in a patient without symptoms. That is a precise clinical construct. The ICD-10 vocabulary available to record it still traces to 2013 definitions, with narrow updates in 2015 and 2017.

Heart failure staging, 2013 to 2022
Stage2013 definition2022 redefinition
AAt high risk for HF, without structural heart disease or symptomsAt risk for HF, with the focus shifted to modifying risk factors
BStructural heart disease without signs or symptoms of HFPre-HF, defined by structural disease, increased filling pressures, or risk factors plus elevated biomarkers
CStructural disease with prior or current symptomsSymptomatic HF
DRefractory HF requiring specialized interventionsAdvanced HF

Per CMS coding guidance, Stage A is recorded as Z91.89, a generic entry for other personal risk factors, and Stage B defaults to I50.9, heart failure unspecified, unless the documentation specifies a systolic or diastolic phenotype. Neither captures a pre-symptomatic stage. I50.9 reads as established heart failure of unknown type, which is the opposite of what pre-HF means, and Z91.89 carries no disease weight at all. The vocabulary forces a clinician to record a 2022 staging concept using categories that predate it by nearly a decade.

What the diagnostics find, the claim may not say

The detection layer is where this gets sharp, and it is broader than imaging alone. The findings that define Stage B come from several modalities. Echocardiography characterizes structural disease, including reduced systolic function, diastolic dysfunction, ventricular hypertrophy, chamber enlargement, wall motion abnormalities, and valvular disease. Natriuretic peptides and high-sensitivity troponin supply the biomarker evidence the guideline names. A growing set of non-invasive tests aims to estimate filling pressures and left ventricular end-diastolic pressure earlier, and outside the catheterization lab. Map these findings to the ICD-10 codes available to record them and the unevenness is plain. Some findings have reasonably specific codes, others fall to general or unspecified entries, and the staging concept the findings collectively support has no clean home.

There is a second break in the same chain. Even when testing is ordered, resting transthoracic echo is an imperfect screen for early heart failure with preserved ejection fraction, where filling pressures may be abnormal only with exertion. So the pathway from physiology to claim can lose the signal twice, once when a test fails to flag early disease and again when the code set cannot record the stage that was found. For a primary care physician managing most of these patients, the result is a normal-looking record for a patient who is measurably on the path to heart failure.

The diagnostics keep getting better at finding pre-HF. The vocabulary that turns a visit into a claim has not kept pace.

The risk-adjustment paradox

The coding gap would be a documentation nuisance if it stopped at the chart. It does not, because the same codes drive risk adjustment, and the structure works against the guideline's intent in a way that is easy to miss.

How heart failure stages map to claims and risk adjustment
ICD-10 codeWhat it representsHCC v24HCC v28
Z91.89Stage A, at risk for HFNoneNone
I50.9Stage B default, heart failure unspecifiedHCC 85HCC 226
I50.1Left ventricular failure, where some non-invasive functional findings are codedHCC 85HCC 226
I50.22 / I50.32Specified chronic systolic or diastolic HFHCC 85HCC 226
I50.84End-stage heart failureHCC 85HCC 222

Start with the part that works. The heart failure codes map to HCC 226 under V28, which carries a meaningful risk-adjustment coefficient, so a coded heart failure diagnosis still earns weight. The problem is what it costs to get there. Stage A in Z91.89 maps to no HCC at all, so the at-risk patient is invisible to risk adjustment by design. Furthermore, every code that does earn weight asserts that the patient has heart failure, which a Stage B, pre-HF patient by definition does not. The vocabulary offers no honest path. A clinician can code the patient accurately as at risk and capture nothing, or capture risk weight by assigning a heart failure code that overstates the clinical reality.

In practice, the capture path is narrower than it looks. Experienced coders are appropriately wary of non-specific codes, and many will not assign I50.9 to a patient who does not carry a documented heart failure diagnosis, the CMS crosswalk notwithstanding. Risk-adjustment teams share that caution, and reasonably so, given the OIG's posture on diagnosis validity and the scrutiny on anything that resembles upcoding. So the option that appears to capture weight, assigning I50.9, is one a compliant program will often decline. The honest alternative is Z91.89, the at-risk code that carries no weight, and Z codes like it are inconsistently applied to begin with. Caught between a weighted code that invites compliance risk and an unweighted code that many clinicians never enter, the pre-HF patient frequently ends up not coded for the condition at all.

V28 sharpens the bind rather than easing it. The model rewards specificity, the systolic or diastolic phenotype that supports a defensible severity tier, which is exactly what a pre-symptomatic patient may not yet have. So the guideline asks clinicians to identify the at-risk and pre-HF population earlier than ever, while the cleanest way to make that population count is to assign it a diagnosis it does not yet meet. A plan running population health off claims sees a distorted version of its own risk, and the patients most amenable to prevention are the ones the financial model is least equipped to recognize honestly. This is the actuarial half of the harmonization gap, and it is why coding alignment is a payer strategy issue rather than a coder's footnote.

Written for specialists, used by generalists

There is a deeper reason the vocabulary fails here. The ICD-10 codes for heart failure and cardiomyopathy were written largely by and for specialists, organized around the phenotypes and procedures that matter inside a cardiology clinic. Primary care manages most of Stage A, most of Stage B, and a meaningful share of early Stage C. The generalist working furthest upstream needs codes that capture risk and pre-disease in a form usable at the front line, and the current system offers the opposite. It rewards subspecialty precision a generalist may not yet be able to document, and it provides nothing for the at-risk and pre-symptomatic states a generalist is best positioned to catch. The patients managed earliest are the ones the code set represents worst.

The access math makes this urgent. A new patient now waits about 33 days on average to see a cardiologist, up nearly a quarter since 2022. Primary care is not a stopgap for this population. It is the setting where most at-risk and pre-HF patients are found and managed, often for a year or more before any cardiology visit. Those clinicians need codes that let them represent the risk they are carrying and the management they are providing, not codes that presume a subspecialty encounter that may be a month away or may never come.

What is needed is not a single new code. It is a refined coding and ontology for heart failure that reflects the stages and their subcharacterization, built to be specialist-informed and primary-care-enabled at the same time. The clinical depth cardiology requires and the usability primary care requires are not competing demands. They are two requirements of one vocabulary, and a system that serves only the specialist will keep producing data that misrepresents the patients the guideline cares most about.

The payoff of getting this right is concrete. Stage-level codes a generalist can apply would let a plan or an accountable provider run a clean query for the patients sitting in Stage A and Stage B, the folds of rising clinical and financial risk, and intervene before the expensive decompensation arrives. The same specificity would ease utilization management, because diagnoses mapped to the therapies the guideline recommends give a clearer and more defensible basis for coverage than the current mismatch between a staging concept and an unspecified code.

Aligned coding is not only a measurement fix. It is the substrate for prevention-oriented population health and for less adversarial prior authorization.

The fix has a mechanism and a precedent

The route to close the gap is established and has been used for this exact condition before. The ICD-10-CM Coordination and Maintenance Committee, run by the CDC's National Center for Health Statistics with CMS, reviews public code proposals at least twice a year. Heart failure has been on its agenda already, with sessions addressing the I50 family in 2015 and heart failure staging in 2017. A focused proposal to add staging and subcharacterization codes that represent Stage A and Stage B as the 2022 guideline defines them, designed to be specialist-informed and primary-care-enabled, would give the construct a home in the vocabulary. Proposals of this kind carry far more weight when the relevant societies endorse them together, with cardiology, primary care, and diabetes organizations as the natural co-signers.

Until the code set catches up, documentation discipline is the available bridge. Capturing the structural finding, the biomarker context, and the management plan, the M.E.A.T. that coders look for, lets a careful record represent the patient as fully as the current codes allow. That is mitigation rather than a fix. The durable answer is to align the vocabulary with the guideline so the at-risk patient is countable by design rather than by workaround.

A guideline that defines a population the code set cannot record will be measured against data that does not contain the patients it was written to protect.

Toward one language

Heart failure staging and the new cardiovascular-kidney-metabolic guidance are the same problem at different stages of neglect. One has codes that lag the guideline by a decade and force a choice between coding a patient accurately and coding to capture risk. The other has no code for its central construct at all. Both leave clinicians and actuaries describing the same patient in languages that do not reconcile, which is exactly the friction that surfaces later as utilization management disputes, undercounted populations, and quality measures built on data that cannot support them.

Conclusion

The work worth doing is unglamorous and high leverage. Align the codes with the guidelines, give the at-risk and pre-disease stages a way to be recorded, and let the clinical and financial views of a patient finally describe the same person. The societies that write the guidelines, the committee that maintains the codes, and the plans that price the risk all have a role, and none of it requires a new technology. It requires the parties to agree that the patient should be countable before anyone tries to manage, measure, or pay for the care.

Frequently Asked Questions  ·  Erik’s Hot Take

What are heart failure Stage A and Stage B?

Stage A and Stage B are the upstream prevention stages in the 2022 AHA/ACC/HFSA guideline. Stage A means at risk for HF, with no structural disease yet. Stage B means pre-HF, defined by structural disease, increased filling pressures, or risk factors paired with elevated natriuretic peptides or troponin, all without symptoms. These are exactly the patients the guideline wants caught earliest. They are also the patients the code set has the least vocabulary for.

Why can't pre-HF be coded accurately in ICD-10?

The codes trace to 2013. CMS maps Stage A to Z91.89, a generic risk factor entry with no HCC weight. Stage B defaults to I50.9, heart failure unspecified, which actually asserts established HF, the clinical opposite of pre-HF. There is no code that says "this patient has pre-symptomatic structural disease the 2022 guideline classifies as Stage B." The vocabulary and the guideline are nine years apart and never converged.

How does this hit risk adjustment?

Every code that earns HCC weight overstates the diagnosis. Z91.89 is accurate but earns nothing. So a compliant program has no clean path. Use the honest code and capture zero weight, or use a weighted code that does not reflect what the patient actually has. Most compliant programs take the first option, which means the pre-HF population disappears from claims entirely. Plans are pricing risk on a population that has been quietly edited out of their own data.

Why is this especially bad for primary care?

Most Stage A and Stage B patients never see a cardiologist, at least not in the first year or more of their at-risk trajectory. Primary care is where they live. But the code set was designed for specialist encounters. It rewards the subspecialty precision a generalist cannot yet document and provides nothing for the risk states a generalist is best positioned to catch. The physicians doing the most upstream work have the worst vocabulary to show for it.

What does the fix actually look like?

A focused proposal to the ICD-10-CM Coordination and Maintenance Committee, co-signed by the relevant cardiology, primary care, and diabetes societies. The committee reviews proposals twice a year. Heart failure has been on its agenda before. A staged code for pre-HF built around the 2022 definitions, designed to be specialist-informed and primary-care-usable, would close the gap the guideline created. This is not a complicated ask. It has just not been made clearly or jointly.

How does this connect to the PREVENT and CKM coding problem?

Same root. The PREVENT calculator and the CKM syndrome construct share the same structural gap. Clinical precision in both cases has no matching administrative vocabulary. Heart failure at least has codes; they just lag by a decade. CKM has none at all. Both leave the same at-risk patient uncountable to the plans that should be managing and pricing their care. The commonality matters. One coordinated push at the ICD-10 committee level, co-signed by the right societies, could move all three constructs at once.

Aligning coding, guidelines, and payer policy?

OneAnother Health works at the seam between clinical guidelines and payer operations, including the coding and risk-adjustment plumbing that determines whether a population is visible to the people paying for its care.

Schedule a call

Related Research

← Back to Research Hub