A lot of coders search “Warfarin ICD-10” or “Eliquis ICD-10” expecting to land on a drug-specific code. None exists. The correct chronic anticoagulation ICD-10 code is Z79.01, Long term (current) use of anticoagulants, and it applies the same way no matter which anticoagulant the patient takes. The medication name is documented in the patient’s medication list and does not determine which diagnosis code should be reported.
That single fact resolves most of the confusion behind this search term, though it’s only the starting point. Coders still need to know when Z79.01 applies instead of a neighboring Z79 code, how to sequence it with the codes for bleeding and monitoring, and what actually counts as “long term” in the first place. This guide works through all three.
What chronic anticoagulation actually means
Chronic anticoagulation refers to long-term blood-thinning treatment that a patient is expected to remain on indefinitely or for many months or years, rather than a temporary course prescribed for an acute condition. Five days of prophylactic enoxaparin after a knee replacement doesn’t count as chronic anticoagulation. A patient with atrial fibrillation who will take apixaban for the rest of their life is a different situation entirely.
The ICD-10-CM manual doesn’t define “long term” with a specific day count. Coding references and many payer policies generally consider anticoagulant therapy expected to continue for more than 90 days to be long-term, with coding education resources often using three months as the practical threshold. Treat that figure as an industry convention rather than language written into the official guidelines. Documentation stating the therapy is ongoing or indefinite carries more weight than counting days from a start date.
Chronic anticoagulation ICD-10 basics: what Z79.01 covers
Z79.01 sits inside category Z79, Long term (current) drug therapy, within the broader Z77-Z99 block covering persons with potential health hazards related to personal history and health status. Z79 includes long-term drug use for prophylactic purposes as well as active treatment, so a patient on anticoagulation to prevent a first clot qualifies just as much as one who has already had one.
Z79.01 is a child of the parent code Z79.0, Long term (current) use of anticoagulants and antithrombotics/antiplatelets. Two billable codes sit under that parent, and a third related code sits just outside the family:
Code | Descriptor | Typical drugs |
Z79.01 | Long term (current) use of anticoagulants | Warfarin, apixaban, rivaroxaban, dabigatran, edoxaban, long-term heparin or enoxaparin |
Z79.02 | Long term (current) use of antithrombotics/antiplatelets | Clopidogrel, ticagrelor, prasugrel |
Z79.82 | Long term (current) use of aspirin | Aspirin only |
Z79.82 was created as a separate code to distinguish long-term aspirin use from prescription anticoagulants and antiplatelet medications. The ICD-10-CM tabular list also includes it as an Excludes2 note under both Z79.01 and Z79.02. A patient on aspirin plus a prescription anticoagulant gets both codes, not one combined code.
One instructional note matters for sequencing. The tabular list carries a “code also” reference to Z51.81, Encounter for therapeutic drug level monitoring, wherever Z79.0 codes appear. When a patient is seen primarily for INR monitoring, Z51.81 is generally reported as the first-listed diagnosis, with Z79.01 added to indicate the need for ongoing anticoagulant therapy.
Why Eliquis, Xarelto, and Pradaxa don’t get their own codes
ICD-10-CM codes reasons for encounters and health status, not pharmaceutical products. A status code is built to describe a clinical fact (the patient is on long-term anticoagulation), not to duplicate what the medication list and the prescription’s own NDC code already capture. Searches for “Xarelto ICD-10,” “Pradaxa ICD-10,” or “Lovenox ICD-10” all land on the same answer: Z79.01, with the specific drug documented in the chart rather than the diagnosis field.
There’s a narrow exception worth knowing. Unfractionated heparin is usually given short-term in a hospital setting, so it rarely generates a long-term status code at all. Enoxaparin (Lovenox) is different. It’s commonly continued for months during pregnancy, where warfarin’s teratogenic risk rules it out, and in cancer-associated thrombosis, where low molecular weight heparin has long been a standard option. In both situations, if the therapy is genuinely ongoing rather than a short bridging course, Z79.01 applies just as it would for a DOAC or for warfarin.
The conditions that put patients on long-term anticoagulation
Three clinical situations account for most chronic anticoagulation orders, and the coding pattern differs slightly for each.
Atrial fibrillation
A 2024 study by Jean Jacques Noubiap and colleagues at the University of California, San Francisco, published in the Journal of the American College of Cardiology, estimated that at least 10.55 million US adults about 4.48% of the adult population are living with diagnosed atrial fibrillation (AFib), nearly tripling earlier estimates based on 1990s data. The Centers for Disease Control and Prevention (CDC) projects that 12.1 million Americans will have AFib by 2050. CDC mortality records also show that AFib appeared on 232,030 death certificates in 2021 and was identified as the underlying cause of death in 28,037 cases. Treatment patterns have shifted substantially over the past decade. A Journal of the American Heart Association study of 436,864 AFib patients across 88 US health systems found that direct oral anticoagulant (DOAC) use increased from 4.7% in 2011 to 47.9% in 2020, while warfarin use declined from 52.4% to 17.7% during the same period. From a coding standpoint, patients with atrial fibrillation who are receiving long-term anticoagulant therapy are typically assigned an appropriate I48.- diagnosis code for the arrhythmia together with Z79.01 to indicate long-term (current) use of anticoagulants.
Venous thromboembolism
The CDC estimates that deep vein thrombosis and pulmonary embolism together affect up to 900,000 Americans a year and cause an estimated 60,000 to 100,000 deaths. Roughly 3 in 10 people who have one clot will have a second episode within ten years, which is the clinical reasoning behind extending anticoagulation well past the initial treatment window for unprovoked clots or ongoing risk factors. A patient still in active treatment would carry the relevant I26 (pulmonary embolism) or I82 (other venous thrombosis) code; once care shifts to pure secondary prevention, a personal history code plus Z79.01 fits better.
Mechanical heart valves
The 2020 ACC/AHA Guideline for the Management of Patients With Valvular Heart Disease, published in Circulation, recommends vitamin K antagonists such as warfarin, not DOACs, for anyone with a mechanical heart valve, with an INR goal of 3.0 (range 2.5 to 3.5) for mitral mechanical valves or higher-risk aortic valves. The recommendation has a real trial behind it: the RE-ALIGN study testing dabigatran against warfarin in mechanical valve patients was stopped early after the dabigatran group had more strokes and more bleeding events. Tissue, or bioprosthetic, valves don’t carry the same requirement. Those patients typically need no long-term anticoagulation at all, which is part of why some choose a tissue valve specifically to avoid it.
Documentation rules coders can’t skip
The ICD-10-CM guidelines draw a firm line between long-term therapy and a short course for an acute problem. Ten days of amoxicillin for acute bronchitis doesn’t get a Z79 code; that’s brief, self-limited treatment. Starting apixaban after a first unprovoked DVT, with the plan to continue indefinitely, does. The distinguishing question isn’t the drug class. It’s whether the physician intends the therapy to continue as an ongoing part of the patient’s care.
A few more rules show up repeatedly in coding guidance and payer audits:
- Z79 itself, the three-character category, isn’t valid for billing. Use the specific child code: Z79.01, Z79.02, or Z79.82.
- PRN (as-needed) use doesn’t qualify. Z79.01 is meant for scheduled, ongoing therapy, not medication taken intermittently.
- The underlying condition still needs its own code. Z79.01 explains why a patient is on anticoagulation; it doesn’t replace the code for atrial fibrillation, the clot history, or the valve replacement that justifies the therapy.
- Documentation should name the indication, even briefly. “Continue home anticoagulation for AFib” supports the code far better than “on blood thinner” with no reason stated.
Coding bleeding, adverse effects, and monitoring
Long-term anticoagulation carries a real bleeding risk, and ICD-10-CM has a specific way of capturing it that trips up even experienced coders.
When bleeding is a genuine adverse effect of a correctly prescribed and correctly taken anticoagulant, three codes typically appear together: D68.32, Hemorrhagic disorder due to extrinsic circulating anticoagulants, a code for the bleeding site itself, and T45.515A, Adverse effect of anticoagulants, initial encounter. A commonly referenced coding scenario from the American Hospital Association’s Coding Clinic for ICD-10-CM, First Quarter 2016, describes a patient with gastrointestinal (GI) bleeding from a duodenal ulcer that the physician determined was related to long-term Coumadin (warfarin) therapy. The guidance instructs coders to report D68.32 together with K26.4 (duodenal ulcer with hemorrhage) and T45.515A, with either D68.32 or K26.4 sequenced first based on the primary reason for the encounter.
This differs from a poisoning code. T45.515A applies when the drug was properly prescribed and taken as directed but still caused harm. The T45.51-series poisoning codes (accidental, self-harm, assault, or undetermined intent) apply instead when the wrong dose was taken, the wrong drug was involved, or the anticoagulant wasn’t used as prescribed. Warfarin toxicity following a dosing error or an intentional overdose falls under poisoning; an elevated INR causing bleeding despite correct dosing falls under adverse effect. Mixing the two up is one of the more common triggers for denied anticoagulation-related claims.
Routine monitoring runs on its own logic. An INR check with no abnormal finding and no new symptoms is coded with Z51.81 as the reason for the visit, with Z79.01 added as a secondary code explaining why monitoring is needed. When the INR result itself is abnormal, subtherapeutic or supratherapeutic, and the cause hasn’t been worked up yet, R79.1, abnormal coagulation profile, is the appropriate placeholder. R79.1 is a finding code, not a final diagnosis, so it should be replaced once a cause is identified: Z79.01 if it’s simply the expected effect of therapy, T45.515A if it’s a clinically significant adverse reaction.
A quick coding walkthrough
A patient with a history of atrial fibrillation comes in for a routine follow-up. She’s stable on apixaban, has no new symptoms, and isn’t there for a drug-level check. The visit would typically carry I48.91, atrial fibrillation, unspecified, as the reason for the encounter, with Z79.01 added to document the ongoing anticoagulation.
Compare that with a patient admitted for melena, later found to have a duodenal ulcer, where the physician documents that long-term warfarin therapy contributed to the bleeding. Following the Coding Clinic guidance above, that encounter is built around D68.32, K26.4, and T45.515A, not a plain Z79.01 status code, because the reason for the visit has shifted from routine management to an adverse bleeding event.
The difference between these two cases is the reason for the encounter, not the medication. Both patients are on chronic anticoagulation. Only one of them is being seen because of it.
Common mistakes that trigger denials
A short list of patterns shows up again and again in audit findings and coding forums:
- Reporting Z79.01 for aspirin therapy instead of Z79.82, or reporting Z79.02 when the drug is actually a prescription anticoagulant rather than an antiplatelet.
- Assigning Z79.01 for short-term perioperative DVT prophylaxis that will stop within days of discharge, instead of reserving it for therapy expected to continue.
- Dropping the underlying condition code and reporting Z79.01 alone, which leaves the record without a clear reason for the therapy.
- Coding a bleeding event as a plain complication code without adding T45.515A, understating that the anticoagulant was the causative factor.
- Leaving R79.1 on the claim after a definitive diagnosis has been established, when it should have been replaced.
None of these errors are exotic. They’re the kind of small sequencing and specificity issues that turn up in routine chart audits, and they clear up once a coder has a working mental model of how Z79.01 relates to the condition codes, the monitoring code, and the adverse-effect codes sitting around it.
The three codes aren’t complicated on their own: Z79.01 for anticoagulants, Z79.02 for other antiplatelets, Z79.82 for aspirin. What takes practice is recognizing, from the chart in front of you, which one the visit actually calls for. Building that judgment is the real skill behind chronic anticoagulation ICD-10 coding, and it comes one chart at a time, not from memorizing a list of codes.




