ICD-10 Code

ICD 10 Codes Cardiology: A Practical Guide for Daily Practice

If you work in cardiology, you already know that coding is more than just typing numbers into a form. It tells the story of your patient. It justifies the care you provide. And, let’s be honest, it makes sure your practice gets paid.

ICD-10 codes for cardiology can feel overwhelming at first. There are hundreds of codes for heart conditions. Some are very specific. Others are broader. But the good news? You do not need to memorize all of them. You just need a clear system to find the right code quickly.

This guide is not a dry textbook. It is a friendly, practical resource. I wrote it for billers, coders, medical assistants, and even doctors who want to understand the logic behind the codes. We will walk through the most common cardiology diagnoses, look at real examples, and talk about traps to avoid.

Let us start with the basics.

ICD 10 Codes Cardiology

ICD 10 Codes Cardiology

Table of Contents

Why Getting Cardiology ICD-10 Codes Right Matters

You have heard this before, but it is worth repeating. A wrong code can do real damage.

  • Claim denials – Insurance companies reject incorrect codes. That means you work twice for the same payment.

  • Audit risks – Both public and private payers audit cardiology practices often. Heart care is expensive, so they watch closely.

  • Patient harm – A wrong code can lead to wrong treatment assumptions in the medical record.

  • Quality metrics – Many value-based programs use ICD-10 codes to track outcomes. Errors make you look worse than you are.

So yes, accuracy matters. But accuracy does not have to be painful.

“Good coding is not about being perfect. It is about being consistent and honest with the patient’s story.” – Senior Cardiology Coder, 20 years experience

How Cardiology Codes Are Organized (A Quick Map)

Before we dive into specific codes, let us look at the big picture. Cardiology codes live mostly in Chapter 9 of ICD-10-CM: Diseases of the Circulatory System (I00–I99) .

Here is a simple breakdown:

Code Range Condition Category
I10–I16 Hypertension
I20–I25 Ischemic heart disease (angina, heart attacks)
I26–I28 Pulmonary heart disease
I30–I5A Other forms of heart disease (pericarditis, endocarditis, cardiomyopathy)
I47–I49 Arrhythmias and conduction disorders
I50–I50 Heart failure
I51–I51 Complications and ill-defined heart disease
I70–I79 Atherosclerosis and other vascular disease

That is your roadmap. Everything else is just detail.

Hypertension Codes (I10–I16) – The Daily Workhorse

Hypertension is everywhere in cardiology. You will code it almost every day. The good news? Most of the time, you will use I10 (Essential hypertension) .

But there are nuances.

Primary vs. Secondary Hypertension

  • I10 – Essential (primary) hypertension. No identifiable cause. This is over 90% of cases.

  • I15 – Secondary hypertension. Caused by another condition like kidney disease or a tumor. You must document the underlying cause separately.

Hypertensive Crisis

If a patient comes in with severely elevated blood pressure, you have two paths:

  • I16.0 – Hypertensive urgency (very high BP but no organ damage)

  • I16.1 – Hypertensive emergency (high BP with acute organ damage, like heart attack or kidney failure)

Do not guess. If the doctor writes “hypertensive emergency,” use I16.1. If they write “severe asymptomatic hypertension,” use I10 plus a code for the elevated reading if needed (but that is rare).

Hypertension with Heart Disease

This is where new coders get confused. ICD-10 allows combination codes when hypertension causes another heart condition.

Example:
A patient has chronic heart failure and long-standing hypertension. Instead of coding I10 and I50 separately, you use:

  • I11.0 – Hypertensive heart disease with heart failure

  • I11.9 – Hypertensive heart disease without heart failure

Same logic applies to hypertensive kidney disease (I12) and hypertensive heart and kidney disease (I13).

Important note: Your physician must document a causal link. Do not assume. If the note says “patient has HTN and CHF” but does not say “due to” or “hypertensive heart disease,” ask for clarification.

Ischemic Heart Disease (I20–I25) – Angina and Heart Attacks

This is high-stakes coding. Heart attacks are time-sensitive, and payers scrutinize these codes heavily.

Angina Pectoris (I20)

Angina is chest pain from reduced blood flow to the heart. Not all angina is the same.

Code Description
I20.0 Unstable angina (worsening, occurs at rest)
I20.1 Angina with documented coronary spasm
I20.8 Other forms of angina
I20.9 Angina, unspecified (use sparingly)

Tip: Unstable angina is serious. It is treated like a heart attack but without elevated enzymes. Do not use I20.0 if the patient actually had an NSTEMI heart attack. Check the troponin levels.

Acute Myocardial Infarction (Heart Attack) – I21

This is where you need to be precise. ICD-10 separates heart attacks by:

  • Type (STEMI vs. NSTEMI)

  • Location (anterior wall, inferior wall, etc.)

  • Timing (initial vs. subsequent)

Initial heart attack codes (I21):

Code Meaning
I21.01 STEMI of anterior wall
I21.02 STEMI of inferior wall
I21.09 STEMI of other sites
I21.11 NSTEMI (non-ST elevation MI)
I21.19 Other specified MI
I21.3 STEMI, unspecified site
I21.4 NSTEMI, unspecified
I21.9 Acute MI, unspecified

Important: You only use I21 codes for the first encounter (the day of the heart attack or the initial hospital stay). After that, you switch to I25.2 (old myocardial infarction) or a subsequent care code.

Subsequent Heart Attack Care – I22

This is a special category. If a patient has a second heart attack within 28 days of the first, use I22.

Example:
Day 1 – Patient has an NSTEMI (I21.19).
Day 10 – Patient has another NSTEMI.
Code the second one as I22.19 (subsequent NSTEMI).

Chronic Ischemic Heart Disease – I25

This covers stable, ongoing conditions.

Code Condition
I25.10 Atherosclerotic heart disease, no angina
I25.11 Atherosclerotic heart disease with angina
I25.2 Old myocardial infarction (more than 28 days old)
I25.3 Aneurysm of heart
I25.5 Ischemic cardiomyopathy
I25.81 Atherosclerosis of coronary bypass graft
I25.82 Chronic total occlusion of coronary artery

Real-world example:
A patient comes in for a routine check. They had a heart attack three years ago. No current chest pain. You code:

  • I25.2 (Old MI)

  • Plus any current conditions like hypertension or hyperlipidemia.


Heart Failure (I50) – More Than Just “CHF”

Heart failure is common, but it is also one of the most poorly documented conditions. Many doctors just write “CHF.” That is not enough.

ICD-10 wants to know:

  • Is it systolic (pumping problem) or diastolic (filling problem)?

  • Is it acute (sudden) or chronic (ongoing)?

  • Is it combined?

Here are the codes you will use most:

Code Description
I50.1 Left ventricular failure (often acute)
I50.20 Unspecified systolic heart failure
I50.21 Acute systolic heart failure
I50.22 Chronic systolic heart failure
I50.23 Acute on chronic systolic heart failure
I50.30 Unspecified diastolic heart failure
I50.31 Acute diastolic heart failure
I50.32 Chronic diastolic heart failure
I50.33 Acute on chronic diastolic heart failure
I50.40 Unspecified combined systolic and diastolic failure
I50.41 Acute combined failure
I50.42 Chronic combined failure
I50.43 Acute on chronic combined failure
I50.9 Heart failure, unspecified (avoid this if possible)

Practical advice:
If your doctor writes “CHF exacerbation,” ask: systolic or diastolic? Acute or chronic? Most of the time, it will be acute on chronic. That points to I50.23, I50.33, or I50.43.

Note: Do not use I50 for postpartum heart failure (O90.3) or heart failure from surgery (I97.13). Those have their own codes.

Arrhythmias (I47–I49) – When the Rhythm Is Off

Arrhythmia coding is fairly straightforward. The challenge is knowing which specific rhythm the doctor is describing.

Common atrial arrhythmias

Code Condition
I48.0 Paroxysmal atrial fibrillation
I48.11 Persistent atrial fibrillation
I48.19 Other persistent atrial fibrillation
I48.20 Chronic atrial fibrillation, unspecified
I48.21 Permanent atrial fibrillation
I48.91 Unspecified atrial fibrillation
I48.92 Unspecified atrial flutter

Key distinction:

  • Paroxysmal – Comes and goes, stops on its own.

  • Persistent – Lasts more than 7 days, needs intervention.

  • Permanent – Doctor decides not to restore normal rhythm.

  • Chronic – Older term, often means permanent.

If the doctor does not specify, use I48.91. But try to get clarity. It affects treatment decisions.

Ventricular arrhythmias and other conduction issues

Code Condition
I47.0 Re-entry ventricular arrhythmia
I47.1 Supraventricular tachycardia (SVT)
I47.2 Ventricular tachycardia
I47.9 Paroxysmal tachycardia, unspecified
I49.1 Atrial premature beats
I49.3 Ventricular premature beats
I49.5 Sick sinus syndrome
I49.8 Other specified arrhythmias
I49.9 Unspecified arrhythmia

Real example:
A patient complains of palpitations. The ECG shows occasional premature ventricular contractions (PVCs). Code I49.3.


Valvular Heart Disease (I34–I38)

Heart valve problems are common as patients age. Coding requires two things:

  1. Which valve? (mitral, aortic, tricuspid, pulmonary)

  2. What type of problem? (stenosis, regurgitation, prolapse)

Mitral valve codes

Code Condition
I34.0 Mitral (valve) regurgitation
I34.1 Mitral valve prolapse
I34.2 Nonrheumatic mitral stenosis
I34.8 Other nonrheumatic mitral disorders
I34.9 Nonrheumatic mitral disorder, unspecified

Aortic valve codes

Code Condition
I35.0 Nonrheumatic aortic stenosis
I35.1 Nonrheumatic aortic regurgitation
I35.2 Nonrheumatic aortic stenosis with regurgitation
I35.8 Other aortic valve disorders
I35.9 Unspecified

Important note: These codes assume the valve problem is not caused by rheumatic fever. If the patient has a history of rheumatic fever, you switch to I05–I09 codes.

Example:
A patient has severe aortic stenosis from a bicuspid valve (congenital). Code I35.0.
Same patient, but the stenosis is from rheumatic fever as a child. Code I06.0 (rheumatic aortic stenosis).

See the difference? Always check the etiology.


Atherosclerosis and Peripheral Vascular Disease (I70–I79)

Cardiology is not just about the heart. Blood vessels matter too. Many cardiologists manage peripheral artery disease (PAD).

Basic atherosclerosis codes

Code Location
I70.0 Atherosclerosis of aorta
I70.20 Unspecified atherosclerosis of native arteries of extremities
I70.21 Atherosclerosis of native arteries of extremities with intermittent claudication
I70.22 With rest pain
I70.23 With ulceration
I70.24 With gangrene
I70.25 Atherosclerosis of native arteries of other extremities
I70.26 Atherosclerosis of native arteries of extremities with chronic limb-threatening ischemia

Note: For bypass grafts, stents, or other grafts, use I70.3–I70.7 codes.

Example:
A patient with diabetes has non-healing toe ulcer from poor circulation. Ankle-brachial index shows PAD. Code:

  • I70.23 (atherosclerosis with ulceration)

  • Plus L97.12 (non-pressure ulcer of toe)

  • Plus diabetes code (E11.621 for type 2 with foot ulcer)


Cardiomyopathy (I42) – Diseases of the Heart Muscle

Cardiomyopathy means the heart muscle itself is abnormal, not from blocked arteries, valves, or high blood pressure.

Code Type
I42.0 Dilated cardiomyopathy
I42.1 Obstructive hypertrophic cardiomyopathy
I42.2 Other hypertrophic cardiomyopathy
I42.3 Endomyocardial (eosinophilic) disease
I42.4 Endocardial fibroelastosis
I42.5 Other restrictive cardiomyopathy
I42.6 Alcoholic cardiomyopathy
I42.7 Cardiomyopathy due to drugs and external agents
I42.8 Other cardiomyopathies
I42.9 Unspecified cardiomyopathy

Clinical reality:
Many cardiomyopathies are idiopathic (unknown cause). I42.0 (dilated) or I42.8 are common in those cases.

If the patient has heart failure from dilated cardiomyopathy, you code both I42.0 and the appropriate I50 code. The I42 tells you why. The I50 tells you the current function.


Coding for Procedures and Post-Procedural States

Cardiology is a procedure-heavy specialty. After a stent, bypass, or ablation, you need specific codes for follow-up care.

Presence of cardiac devices

Code Device
Z95.0 Presence of cardiac pacemaker
Z95.1 Presence of aortocoronary bypass graft
Z95.2 Presence of prosthetic heart valve
Z95.3 Presence of xenogenic heart valve
Z95.4 Presence of other heart valve replacement
Z95.5 Presence of coronary angioplasty implant (stent)
Z95.810 Presence of automatic (implantable) cardiac defibrillator
Z95.818 Presence of other cardiac devices
Z95.9 Presence of cardiac device, unspecified

Important: These are Z codes (factors influencing health status). They are not diagnoses. They describe a current state. Use them as secondary codes.

Example:
A patient comes in for a routine EKG check. They have a pacemaker (Z95.0) and a history of sick sinus syndrome (I49.5). The EKG is normal. You code:

  • Z01.81 (encounter for pre-procedural EKG – primary)

  • I49.5 (sick sinus – secondary)

  • Z95.0 (pacemaker – secondary)

Post-surgical follow-up

Code Meaning
Z48.21 Encounter for aftercare following heart transplant
Z48.22 Encounter for aftercare following coronary bypass
Z48.23 Encounter for aftercare following percutaneous coronary intervention (stent)
Z48.24 Encounter for aftercare following valve replacement
Z48.29 Aftercare following other heart surgery

These are useful when the patient is not having active treatment for a new problem, just routine monitoring after a procedure.

Common Combination Coding Scenarios

Combination codes save you time and reduce errors. Here are three common cardiology scenarios.

Scenario 1: Hypertensive heart disease with heart failure

Instead of: I10 + I50.22
Use: I11.0

Why? I11.0 specifically means hypertension caused the heart failure. That is more accurate and tells a better story.

Scenario 2: Chronic kidney disease with hypertension

Instead of: I10 + N18.9
Use: I12.9 (hypertensive kidney disease without failure) or I12.0 (with failure)

Scenario 3: Heart attack with hypertension

Do not combine these. I21 (MI) and I10 (HTN) are separate. There is no combination code. Code both.

Avoiding Common Coding Traps

Even experienced coders make mistakes. Here are the traps I see most often.

Trap 1: Using unspecified codes when more detail is available

Unspecified codes (like I50.9 or I48.91) are easy, but they hurt you in audits and quality reporting. Always check the note for detail.

Fix: Ask the provider one simple question: “Systolic or diastolic?” Most will happily clarify.

Trap 2: Coding “rule out” or “possible” conditions

You cannot code a suspected condition. Only code confirmed diagnoses.

Example: Patient with chest pain. Rule out MI. Troponin is normal. EKG is normal. You do not code I21. You code chest pain (R07.9) and maybe observation code (Z03.89).

Trap 3: Mixing acute and chronic codes incorrectly

If a patient has acute on chronic heart failure, do not code just I50.9. Use the specific acute on chronic code (I50.23, etc.).

Trap 4: Forgetting causal links for combination codes

Remember: For I11.0 (hypertensive heart disease with failure), the note must say the heart failure is due to hypertension. If it says “patient has HTN and CHF” without a link, code separately.

Trap 5: Using old myocardial infarction for recent MIs

I25.2 (old MI) is for events more than 28 days ago. If the patient is still in the same hospital stay or it has been less than 4 weeks, use I21 codes for the initial event and I22 for subsequent events.


ICD-10 Cardiology Coding in Different Settings

Your coding approach changes depending on where the patient is.

Outpatient clinic (office visits)

  • Focus on chronic conditions (hypertension, heart failure, stable angina)

  • Use Z codes for preventive visits and device checks

  • Avoid acute MI codes unless it truly happened that day (rare in outpatient)

Example codes: I10, I25.10, I48.91, Z95.5

Hospital inpatient (admitted)

  • Acute conditions take priority (acute MI, acute heart failure)

  • Code the reason for admission first

  • Document all comorbidities (diabetes, kidney disease, obesity)

Example: A patient admitted for acute systolic heart failure. Primary: I50.21. Secondary: I10, E11.9, N18.32.

Emergency department

  • Use symptom codes (chest pain, dyspnea) if diagnosis not yet made

  • Once diagnosis confirmed, switch to definitive codes

  • Observation codes (Z03.89) for rule-out cases

Cardiac rehab

  • Use I25.2 (old MI) or I25.11 (chronic angina) plus Z code for rehab

  • Example: Z50.0 (cardiac rehabilitation) + I25.2 (old MI)


ICD-10 Cardiology Coding Quick Reference Table

Here is a one-page summary of the most frequent codes you will use.

Diagnosis Primary Code Secondary/Notes
Essential hypertension I10
Hypertensive heart disease with failure I11.0 Do not add separate I50
Chronic systolic heart failure I50.22 Add etiology if known (I42.0 for dilated)
Acute on chronic systolic failure I50.23 Common in hospital admissions
Unstable angina I20.0 Watch for elevated troponin
NSTEMI (initial) I21.19
STEMI anterior wall (initial) I21.01
Old MI (>28 days) I25.2 Use for follow-up visits
Multivessel CAD I25.10 Add I25.11 if angina present
Atrial fibrillation, paroxysmal I48.0
Atrial fibrillation, permanent I48.21
Ventricular tachycardia I47.2 Emergency code
PVCs (premature beats) I49.3 Benign usually
Aortic stenosis, nonrheumatic I35.0
Mitral regurgitation I34.0
PAD with claudication I70.21
PAD with ulcer I70.23 Add ulcer location code
Pacemaker present Z95.0 Secondary only
CABG (bypass) present Z95.1 Secondary only
Drug-eluting stent present Z95.5 Secondary only
ICD present Z95.810 Secondary only

Print this table. Tape it near your computer. It will save you hours.

Real-World Case Examples

Let us walk through three patient scenarios. Each one shows how to choose the right code from start to finish.

Case 1: The routine follow-up

Note:
“Mrs. Jones, 68, returns for 6-month follow-up of her chronic systolic heart failure. She is stable on lisinopril and metoprolol. Also has long-standing hypertension and type 2 diabetes. No new complaints. Exam: BP 128/76, lungs clear, no edema.”

Coding:

  • Primary: I50.22 (chronic systolic heart failure)

  • Secondary: I10 (hypertension)

  • Secondary: E11.9 (type 2 diabetes without complication)

Why not I11.0? The note does not say the heart failure is due to hypertension. They are separate. So code separately.

Case 2: The emergency admission

Note:
“Mr. Smith, 55, presents to ED with substernal chest pain for 3 hours. EKG shows ST elevation in leads V2-V4. Troponin elevated. Diagnosed with acute anterior STEMI. Patient taken for emergent PCI with drug-eluting stent to LAD. History of hyperlipidemia and smoking.”

Coding (hospital inpatient):

  • Primary: I21.01 (STEMI anterior wall)

  • Secondary: E78.5 (hyperlipidemia)

  • Secondary: Z72.0 (tobacco use)

  • Secondary: Z95.5 (presence of coronary stent – after placement)

Note: Do not code chest pain (R07.9) because you have a definitive diagnosis.

Case 3: The post-op check

Note:
“Mr. Lee, 72, had CABG surgery 3 months ago. Now here for routine post-op follow-up. Asymptomatic. BP well controlled on metoprolol. History of old MI (2 years ago) and paroxysmal AFib.”

Coding (outpatient):

  • Primary: Z48.22 (aftercare following coronary bypass)

  • Secondary: I25.2 (old MI)

  • Secondary: I48.0 (paroxysmal atrial fibrillation)

  • Secondary: Z95.1 (presence of aortocoronary bypass graft)

Why Z48.22 as primary? The main reason for the visit is aftercare, not active treatment of a new heart condition.

Documentation Tips for Providers (To Make Your Life Easier)

If you are a coder or biller, share this section with your cardiologists. Better documentation means fewer queries.

What we need from you:

  1. Specificity – Do not write “CHF.” Write “chronic diastolic heart failure, acute on chronic.”

  2. Causal links – If hypertension causes heart failure, say “hypertensive heart disease with failure.”

  3. Timing – For MIs, say “acute” or “old.” Give the date if possible.

  4. Etiology – For valve disease, say “rheumatic” or “nonrheumatic.”

  5. Device status – Note if the patient has a pacemaker, ICD, or stent, especially for procedures.

Example of good documentation:
“Patient with chronic systolic heart failure (I50.22) due to nonischemic dilated cardiomyopathy (I42.0). Also has permanent atrial fibrillation (I48.21).”

That one sentence gives the coder everything needed.

Frequently Asked Questions (FAQ)

Q1: Can I code hypertension and hypotension together?

No. A patient cannot have both at the same encounter unless there is a clear time difference (like morning hypertension and evening hypotension from medication). In that case, document separately.

Q2: What is the correct code for a patient with a heart transplant?

Use Z94.1 (heart transplant status) as a secondary code. For the primary diagnosis, code the reason for the visit (infection, rejection, routine check).

Q3: How do I code a patient on a ventricular assist device (VAD)?

Use Z95.812 (presence of fully implantable artificial heart) or Z95.818 (other cardiac devices) depending on the device type.

Q4: What is the difference between I48.11 and I48.19 for persistent AFib?

  • I48.11: Persistent AFib (first diagnosis, lasting >7 days)

  • I48.19: Other persistent AFib (recurrent episodes, or longstanding persistent >12 months)

Most coders use I48.11 for typical persistent AFib.

Q5: Can I use I10 for white coat hypertension?

No. White coat hypertension (high BP only in office) is coded as R03.0 (elevated blood pressure reading without diagnosis of hypertension). Only use I10 after confirmed diagnosis with out-of-office readings.

Q6: How do I code a patient with chest pain that turns out to be anxiety?

If the workup is negative for cardiac causes, code R07.9 (chest pain, unspecified) and F41.9 (anxiety disorder, unspecified). Do not code cardiac codes.

Q7: What is the correct code for a drug-eluting stent vs. bare metal?

ICD-10 does not differentiate. Both use Z95.5. However, some payers may ask for additional documentation. The procedure code (CPT) will specify the stent type.

Q8: When do I use Z03.89 (observation for ruled out condition)?

Use Z03.89 when a patient is evaluated for a suspected condition (like MI) and the workup completely rules it out. Do not use it if a diagnosis is confirmed or if the workup is inconclusive.

Q9: Can I code “risk factors” like family history of CAD?

Yes. Use Z codes for family history. Example: Z82.49 (family history of other heart disease). These are secondary codes and do not affect DRG payment but are useful for quality reporting.

Q10: What is the best resource for looking up cardiology codes?

The official ICD-10-CM code book or an electronic encoder. Free websites like CMS.gov have downloadable files, but they are not user-friendly. Many practices use AAPC or ACDIS resources.


Additional Resource

For the most current ICD-10 cardiology coding guidelines, including annual updates and specialty-specific advice, visit the American College of Cardiology (ACC) Coding and Reimbursement page:
https://www.acc.org/tools-and-practice-support/practice-management/coding-and-reimbursement

This is a free, trusted resource updated yearly. Bookmark it.

Conclusion

ICD-10 coding in cardiology does not have to be a headache. Focus on the most common codes you use every day — hypertension, heart failure, angina, arrhythmias, and atherosclerosis. Always prioritize specificity over speed. When in doubt, ask your provider for clarity. And remember: good coding is not about being perfect. It is about telling the patient’s story honestly, completely, and consistently.

Three key takeaways:

  1. Master 20–30 high-frequency codes instead of trying to memorize everything.

  2. Use combination codes (like I11.0) only when the documentation supports a causal link.

  3. When you cannot find the right code, go back to the medical record — the answer is usually there.


Disclaimer:
This article is for educational purposes only. Coding guidelines change annually. Always verify codes using the current year’s ICD-10-CM official guidelines and consult with a certified medical coder or your payer’s policies before submitting claims. The author and publisher assume no liability for any errors, omissions, or adverse outcomes resulting from the use of this information.

About the author

wmwtl

Leave a Comment