Verified
ICD-10 I25.2: Old Myocardial Infarction – Complete Billing & Coding Audit Guide
Master ICD-10 I25.2 Old Myocardial Infarction coding for billing audits. FY2026 guidelines, DRG impact, documentation tips & common audit findings.


🔄 Clinical Update — June 2026: This guide has been revised to incorporate the FY2026 ICD-10-CM Official Guidelines for Coding and Reporting (effective October 2025), updated CMS MS-DRG v44 grouper logic, and the AHA/ACC 2025 Fourth Universal Definition of Myocardial Infarction update refining chronic myocardial injury classification.
ICD-10 I25.2: Old Myocardial Infarction — Operations Playbook for Clinical Documentation, Coding Compliance, and AI Scribe Deployment
TL;DR — Why This Page Exists
ICD-10 code I25.2 ("Old myocardial infarction") designates a healed MI more than 4 weeks from onset. Miscoding it as I21 ("Acute MI") is one of the fastest routes to a CMS Diagnostic Upcoding flag, DRG overpayment recoupment, and audit exposure. This guide provides the clinical decision logic, biomarker-ECG reconciliation framework, and point-of-documentation safeguards that Scribing.io uses to prevent that error — including a granular ED scenario walkthrough that no existing CMS reference covers. If you are a Cardiology Medical Director responsible for coding compliance, documentation integrity, or AI scribe deployment, this is your operational playbook.
Contents
The 4-Week MI Rule: Why I25.2 vs. I21 Is the Highest-Stakes Coding Decision in Cardiology
Cross-Modal Biomarker-ECG Reconciliation: The Original Insight CMS References Miss
Scribing.io Clinical Logic: ED Intake — 72-Year-Old With Exertional Dyspnea and Remote MI
Anchor Truth: Granular Logic Breakdown — How AI Must Distinguish Old MI From Acute MI
Technical Reference: ICD-10 Documentation Standards
EHR Problem-List Pitfalls and Auto-Suggestion Failure Modes
CMS Audit Defense: Building a Claim That Survives Data-Matching
Implementation Checklist for Cardiology Medical Directors
See the I25.2 vs I21 Guardrail in Action
The 4-Week MI Rule: Why I25.2 vs. I21 Is the Highest-Stakes Coding Decision in Cardiology
Scribing.io exists because coding rules that look simple on paper produce catastrophic errors at the point of care. The I25.2 vs. I21 distinction is the canonical example. The ICD-10-CM classification system draws a hard temporal boundary at 4 weeks (28 days) from the date of myocardial infarction onset:
Within 4 weeks: The MI is acute. Codes from the I21 (initial acute MI) or I22 (subsequent acute MI during the initial 4-week window) categories apply.
Beyond 4 weeks: The MI is healed or old. The correct code is I25.2 — Old myocardial infarction.
This distinction drives DRG assignment, risk-adjustment weighting, and CMS audit logic. An I21 code triggers Major Complication/Comorbidity (MCC) status in most MS-DRG groupings, substantially increasing reimbursement — often by $15,000–$40,000 per encounter depending on the base DRG. An I25.2 code does not carry MCC weight. When CMS Program Integrity contractors and the OIG Work Plan data-matching algorithms compare a claim bearing I21 against the absence of concurrent acute biomarkers, recent catheterization, or ischemic symptom documentation, the result is a Diagnostic Upcoding flag — one of the most common and costly audit triggers in cardiovascular medicine.
The ICD-10-CM Official Guidelines (Section I.C.9.e) state that codes from category I21 should not be assigned for encounters occurring after the 4-week timeframe unless an acute MI is documented as having occurred within that window. The prior ICD-9 system used an 8-week boundary; the compression to 4 weeks under ICD-10 increased the precision burden on documentation. Yet the CMS ICD-10 Clinical Concepts for Cardiology reference provides no operational guidance on enforcing this rule at the point of documentation — no biomarker cross-referencing logic, no EHR problem-list pitfall analysis, no workflow for distinguishing persistent Q-waves from acute ischemia. That gap is where documentation errors originate, and the Scribing.io ICD-10 Documentation Library closes it.
Cross-Modal Biomarker-ECG Reconciliation: The Original Insight CMS References Miss
What Existing Resources Get Wrong — or Simply Omit
The CMS Clinical Concepts reference treats I25.2 as a line item in a code table. The AMA's ICD-10-CM coding guidance defines the code but offers no decision tree for differentiating old MI from acute MI when ECG findings — particularly Q-waves — are present. Neither resource addresses:
How persistent Q-waves on a 12-lead ECG mislead EHR auto-coders into suggesting I21
How negative high-sensitivity troponin values interact with Q-wave findings to confirm chronicity
How verbal history ("history of MI") captured by a scribe or dictation system gets misinterpreted by downstream coding engines
How ECG interpretations stored as unstructured PDFs in many EHR systems create a data silo that prevents automated cross-referencing
Scribing.io's Cross-Modal, Time-Aware Reconciliation Framework
Scribing.io enforces the ICD-10 4-week MI rule at the point of documentation by cross-linking dictated clinical history with three discrete EHR data streams in real time. The Fourth Universal Definition of Myocardial Infarction (Circulation, 2018; updated 2025) establishes that acute MI diagnosis requires a rise and/or fall of cardiac troponin with at least one value above the 99th percentile upper reference limit, combined with clinical evidence of ischemia. Scribing.io operationalizes this definition programmatically:
Scribing.io Cross-Modal MI Classification Engine — Data Inputs & Logic | |||
Data Stream | Source / Standard | What It Tells the System | How It Influences Code Selection |
|---|---|---|---|
High-Sensitivity Troponin Observations | LOINC 67151-1 (hs-cTnT), LOINC 10839-9 (Troponin I) — pulled via EHR lab feed within ±72 hours of encounter | Whether acute myocardial necrosis is biochemically present | Positive + rising pattern → guards toward I21/I22 with mandatory onset/date qualifiers. Negative at 0 and 2–3 hours → removes acute MI from code recommendations. |
12-Lead ECG Interpretation | SNOMED CT mapped: 164947007 ("old myocardial infarction" on ECG), 426429009 ("Q-wave abnormality") — extracted via FHIR R4 DiagnosticReport or OCR/NLP from PDF reports | Whether ECG findings reflect acute ST-elevation/depression or chronic Q-wave persistence from prior infarction | Q-waves present without acute ST changes → supports I25.2. Acute ST changes → supports I21 with anatomical specificity prompts (I21.0–I21.4). |
Dictated / Verbalized Clinical History | Real-time NLP of clinician dictation or scribe entry | Whether the clinician describes current ischemic symptoms (chest pain, acute dyspnea with ischemic character) or references a remote event ("history of MI," "MI 9 months ago") | Ischemic symptom language + positive biomarkers → I21/I22. Historical language + no acute symptoms → I25.2 with onset documentation (>4 weeks). |
Prior Discharge / Problem List Data | EHR ADT feeds, FHIR Condition resources, prior encounter diagnoses | Date of original MI event, prior coding as I21 during acute phase | Confirms temporal distance from original event; auto-populates "healed MI >4 weeks" language when >28 days have elapsed. |
Bridging the ECG PDF Gap
A critical and widely unaddressed EHR interoperability problem: in many health systems, 12-lead ECG interpretations are stored as scanned PDFs or unstructured text blobs — not as discrete, queryable FHIR DiagnosticReport resources. The HL7 FHIR R4 DiagnosticReport specification supports structured ECG data exchange, but adoption remains inconsistent. This means that even sophisticated coding engines cannot programmatically access the ECG finding "old MI with inferior Q-waves" to cross-reference against troponin results and dictated history.
Scribing.io addresses this through OCR/NLP extraction of ECG PDF reports, time-stamping the extracted finding to the encounter, mapping it to the appropriate SNOMED concept (e.g., 164947007), and appending the result as a structured, claims-ready audit note. Where FHIR DiagnosticReport feeds are available, the system parses them directly. This note survives CMS data-matching because it creates a traceable, time-linked evidentiary chain connecting the ECG interpretation, the negative biomarkers, and the I25.2 code selection — exactly the documentation package that prevents a Diagnostic Upcoding flag.
Scribing.io Clinical Logic: ED Intake — 72-Year-Old With Exertional Dyspnea and Remote MI
This scenario is the centerpiece of the I25.2 documentation challenge. It reflects the single most common pathway to an inadvertent I21 upcoding error in emergency and cardiology settings.
The Clinical Presentation
A 72-year-old male presents to the Emergency Department with exertional dyspnea of gradual onset over the past 2 weeks. His medical history includes a documented inferior STEMI 9 months ago, managed with primary PCI and stenting of the right coronary artery. He reports no chest pain, no radiation, no diaphoresis, and no rest dyspnea.
12-Lead ECG: Inferior Q-waves (leads II, III, aVF) consistent with prior infarction. No acute ST-segment elevation or depression. No T-wave inversions suggesting acute ischemia.
High-Sensitivity Troponin (hs-cTnI):
0-hour draw: 4 ng/L (below 99th percentile upper reference limit)
2-hour draw: 5 ng/L (no significant delta; absolute change <3 ng/L per ESC 0/1h or 0/2h algorithm thresholds)
Resident Dictation: "72-year-old male with history of MI, presenting with dyspnea. ECG shows Q-waves inferiorly."
The Problem: EHR Default Behavior
The resident dictates "MI." The EHR problem picker — operating on keyword matching without temporal or biomarker context — surfaces I21.9 (Acute myocardial infarction, unspecified) as the top suggestion. If the resident or coder accepts this default, the claim will:
Trigger MCC-level DRG weighting for an acute MI that is not occurring
Be flagged during CMS data-matching when no concurrent troponin elevation, cardiac catheterization, or acute intervention is found on the same claim
Generate a Diagnostic Upcoding flag requiring audit response, potential recoupment, and compliance investigation
The Scribing.io Intervention — Step by Step
Scribing.io Real-Time Documentation Safeguard Workflow | |||
Step | System Action | Data Source | Clinician Experience |
|---|---|---|---|
1. Dictation Capture & Temporal NLP | NLP parses "history of MI" and flags the temporal qualifier ("history of") as indicating a past event, not an acute presentation. The phrase "MI" alone would trigger an acute/chronic disambiguation pathway. | Real-time voice/text stream | Clinician dictates naturally; no workflow interruption. |
2. Troponin Cross-Reference | System pulls hs-cTnI results from lab feed (LOINC 10839-9). Both values below the 99th percentile URL with no significant delta. Acute MI biomarker criterion per Fourth Universal Definition: NOT MET. | EHR lab integration (±72 hours) | No action required from clinician. |
3. ECG Interpretation Extraction | OCR/NLP processes the 12-lead ECG report (stored as PDF in this EHR). Extracts: "Q-waves in II, III, aVF — old inferior infarction." Maps to SNOMED 164947007. Confirms: no acute ST changes detected. | ECG PDF via OCR → SNOMED mapping | No action required from clinician. |
4. Prior Encounter Linkage | System identifies prior discharge from index STEMI hospitalization 9 months ago (FHIR Encounter resource or ADT feed). Calculates: 274 days elapsed > 28-day acute MI window. | EHR ADT / discharge records | No action required from clinician. |
5. I21 Block + Confirmation Prompt | System blocks I21.9 default from the EHR problem picker. Surfaces prompt: "Confirm history of MI >4 weeks with persistent Q-waves; no acute ischemia?" Displays supporting evidence: prior discharge date, troponin values, ECG finding. | Aggregated cross-modal analysis | Clinician reviews prompt, confirms with one click. |
6. Documentation & Code Finalization | Upon confirmation: assigns I25.2, auto-inserts "healed MI >4 weeks; inferior Q-waves consistent with prior infarction; hs-cTnI negative ×2 (0h: 4 ng/L, 2h: 5 ng/L); no acute ischemic symptoms." Appends structured audit note with LOINC, SNOMED, and CPT references linking troponin timeline + ECG evidence + onset documentation. | System-generated, clinician-confirmed | Clinician reviews final note; complete, defensible documentation is generated in <8 seconds. |
The Outcome
I25.2 is assigned — accurately reflecting the clinical reality of a healed, old MI
I21.9 is blocked — preventing an erroneous acute MI code
No DRG upshift occurs; reimbursement reflects actual acuity
No CMS upcoding flag is generated during data-matching audits
A clean, defensible claim with a structured audit trail is produced
Anchor Truth: Granular Logic Breakdown — How AI Must Distinguish Old MI From Acute MI
The core principle: AI must distinguish "Old MI" (I25.2) from "Acute MI" (I21) by cross-referencing verbal history with recent EKG Q-wave findings to prevent Diagnostic Upcoding flags during CMS data-matching audits. Here is the decision logic decomposed into its atomic steps, each corresponding to a discrete validation gate in the Scribing.io classification engine.
Gate 1: Temporal Signal Detection
The NLP layer classifies every MI-related utterance into one of three temporal buckets:
Acute-present: "He is having an MI," "STEMI in progress," "acute infarction"
Acute-recent (<4 weeks): "MI two weeks ago," "infarction last Tuesday"
Historical (>4 weeks): "History of MI," "MI 9 months ago," "prior infarction," "old MI"
If the temporal signal is historical, the system advances to Gate 2. If acute-present or acute-recent, it shifts to the I21/I22 pathway with mandatory onset date documentation.
Gate 2: Biomarker Validation
The system queries the EHR lab feed for high-sensitivity troponin results (LOINC 67151-1 for hs-cTnT; LOINC 10839-9 for hs-cTnI) within ±72 hours of the encounter. Three possible states:
Below 99th percentile URL, no significant delta: Acute myocardial necrosis is excluded. Consistent with I25.2. Advance to Gate 3.
Above 99th percentile URL with rise/fall pattern: Acute MI criterion met per Fourth Universal Definition (JACC 2018). Override historical temporal signal; route to I21 pathway. Prompt clinician to reconcile.
Chronically elevated without rise/fall (e.g., CKD, heart failure): Flag as chronic myocardial injury — neither acute MI (I21) nor old MI (I25.2). Route to I25.9 or appropriate heart failure code. This edge case is undocumented in competing resources.
Gate 3: ECG Q-Wave Contextualization
Q-waves on ECG are the physical scar of transmural infarction. Their presence does not indicate acute MI — it indicates completed necrosis. The system evaluates:
Q-waves present WITHOUT acute ST changes: Consistent with old infarction. Supports I25.2. Advance to Gate 4.
Q-waves present WITH acute ST elevation/depression or dynamic T-wave changes: May indicate reinfarction in the territory of prior MI. Route to I22 (subsequent MI) pathway; require troponin confirmation.
No Q-waves, no acute changes: If the clinical history states prior MI but ECG shows no Q-waves (possible in non-Q-wave MI or revascularized patients), the system flags for clinician adjudication and recommends I25.2 if prior MI is confirmed in the medical record.
Gate 4: Temporal Arithmetic
The system calculates the number of days between the original MI event date (from prior discharge records, problem list, or dictated history) and the current encounter date. If >28 days: I25.2 is confirmed. If ≤28 days: I21 or I22 applies even if the patient has been discharged, per ICD-10-CM Section I.C.9.e.1 guidelines.
Gate 5: Code Assignment, Documentation Insertion, and Audit Trail Generation
Upon passing all gates, the system assigns I25.2, generates the structured documentation string, and creates an audit note containing:
Troponin values with LOINC codes and timestamps
ECG finding with SNOMED code and encounter date
Prior MI date and elapsed day calculation
Clinician confirmation timestamp
CPT codes for troponin assay (CPT 84484) and ECG interpretation (CPT 93010) cross-referenced to support medical necessity
Technical Reference: ICD-10 Documentation Standards
Accurate code selection requires maximum specificity. The following codes are central to MI documentation and are maintained in the I25.2 — Old myocardial infarction; I21.9 — Acute myocardial infarction reference within Scribing.io's documentation library:
ICD-10-CM MI Code Specificity Requirements | ||||
Code | Description | When to Use | Documentation Requirements | Common Error |
|---|---|---|---|---|
I25.2 | Old myocardial infarction (healed MI, past MI) | MI onset >4 weeks (28 days) ago; no current acute ischemia | Prior MI date or approximate timeframe; ECG evidence of Q-waves or imaging evidence of scar; negative acute biomarkers if tested | Assigning I21.9 when only historical Q-waves are present |
I21.0–I21.4 | ST-elevation myocardial infarction (STEMI) — site-specific | Acute MI within 4 weeks, with ST elevation; specific coronary artery territory documented | Onset date, coronary artery (LAD, RCA, LCx), troponin values, ECG with ST elevation, intervention if performed | Using I21.9 (unspecified) when the territory is documented in the note |
I21.9 | Acute myocardial infarction, unspecified | Acute MI within 4 weeks when STEMI/NSTEMI type and artery cannot be determined | Same as above; should prompt query for specificity | Default EHR suggestion when "MI" is dictated without temporal context |
I22.x | Subsequent STEMI/NSTEMI | New acute MI occurring within the 4-week window of a prior acute MI | Both MI dates, both sites if different, biomarker re-elevation | Confusing with I25.2 when a remote MI precedes a new acute event by >4 weeks |
Scribing.io drives code specificity by parsing dictated anatomical references ("inferior," "anterior," "lateral") and mapping them to the appropriate 4th-character I21 subcategory when acute MI is confirmed. For I25.2, the system ensures that unspecified codes are avoided whenever prior records or ECG data can supply the anatomical detail — even though I25.2 itself does not have site-specific subcategories, the documentation should specify the territory for clinical completeness and audit defensibility.
The ICD-10-CM Official Guidelines for Coding and Reporting (FY2026), Section I.C.9.e, remain the authoritative source for MI coding temporality. Scribing.io's engine is synchronized to these guidelines and updated within 72 hours of any CMS revision.
EHR Problem-List Pitfalls and Auto-Suggestion Failure Modes
The EHR problem picker is the single largest source of I25.2 → I21 miscoding errors. Here is why, and what to do about it.
Failure Mode 1: Keyword Matching Without Temporal Context
When a clinician types or dictates "MI" or "myocardial infarction," most EHR systems surface I21.9 as the first result because it is the most frequently coded MI diagnosis in acute care. The problem list does not query troponin results, ECG data, or prior encounters before making this suggestion. The result: a code that implies acute MI is placed on a chart that contains no supporting evidence of acute MI.
Failure Mode 2: Problem List Carry-Forward
A patient coded with I21 during their index STEMI admission returns for a 6-month follow-up. The EHR carries the I21 code forward on the active problem list. If not manually updated to I25.2 after the 4-week window, every subsequent encounter generates a claim with an acute MI code — a serial upcoding pattern that CMS algorithms are specifically designed to detect.
Failure Mode 3: Resident and Scribe Documentation Ambiguity
Trainees frequently document "MI" without temporal qualifiers. A note that reads "PMH: MI" is clinically reasonable but is a coding time bomb if the downstream coder cannot determine whether the MI is current or historical. Scribing.io's NLP requires temporal resolution for every MI reference and will prompt the clinician to specify onset if the context is ambiguous.
Scribing.io Countermeasures
EHR Auto-Suggestion Error Prevention | ||
Failure Mode | Scribing.io Countermeasure | Evidence Used |
|---|---|---|
Keyword match defaults to I21.9 | Intercepts EHR code suggestion; performs cross-modal check before allowing I21 assignment | Troponin results, ECG interpretation, prior discharge date |
Problem list carry-forward of I21 | Monitors problem list age; auto-flags I21 codes persisting >28 days from onset for conversion to I25.2 | Original MI onset date, encounter calendar |
Ambiguous "MI" without temporal qualifier | NLP requires temporal resolution; surfaces disambiguation prompt | Dictation context, prior encounter history |
CMS Audit Defense: Building a Claim That Survives Data-Matching
CMS uses automated prepayment and postpayment review systems — including the Comprehensive Error Rate Testing (CERT) program and Recovery Audit Contractors (RACs) — to identify claims where diagnosis codes do not match the clinical evidence on file. For cardiac claims, the algorithm checks:
Does the I21 code have a corresponding acute troponin elevation in the same encounter?
Is there a catheterization, PCI, or CABG procedure coded within the encounter window?
Does the documentation describe acute ischemic symptoms?
A claim with I21 and none of the above triggers a Targeted Probe and Educate (TPE) review or a full RAC audit. The financial exposure includes 100% recoupment of the DRG differential, potential False Claims Act referral for patterns, and compliance program reporting requirements under the OIG Compliance Guidance for Hospitals.
Scribing.io's audit note is specifically engineered to pre-empt this review. By documenting — at the point of care, not retrospectively — the negative troponin timeline, the chronic Q-wave ECG finding, the prior MI date, and the clinician's confirmation of historical (not acute) MI, the claim arrives at CMS with its own evidentiary package. The audit note references:
LOINC codes for troponin observations, linking values to timestamps
SNOMED codes for ECG findings, linking interpretation to encounter
CPT codes for the procedures performed (93010 for ECG interpretation, 84484 for troponin assay), demonstrating medical necessity alignment
ICD-10-CM guideline citation (Section I.C.9.e) confirming the >4-week rule applicability
This level of point-of-care audit trail generation is unprecedented in ambient scribe technology. It transforms the documentation workflow from a retrospective compliance exercise into a prospective defense mechanism.
Implementation Checklist for Cardiology Medical Directors
Deploy the I25.2 vs. I21 guardrail across your service line with this checklist:
Audit your current MI code distribution. Pull a 12-month report of all I21 and I25.2 codes. Flag any I21 claims where the patient had a prior MI >28 days earlier without a new acute event documented. This is your baseline exposure.
Review EHR problem-list carry-forward settings. Identify whether your EHR auto-carries I21 codes across encounters without temporal expiration. Configure alerts or partner with Scribing.io to intercept.
Assess ECG data accessibility. Determine whether your ECG interpretations are available as FHIR DiagnosticReport resources or only as PDFs. If PDFs only, Scribing.io's OCR/NLP extraction layer will bridge the gap.
Map troponin lab interfaces. Confirm that your lab feed delivers hs-cTn results with LOINC coding and timestamps accessible within the documentation workflow — not just within the lab module.
Train residents and scribes on temporal MI language. Mandate that every MI reference includes a temporal qualifier: "acute MI" or "history of MI" or "MI [date]." Scribing.io enforces this, but culture change accelerates adoption.
Deploy the Scribing.io I25.2 vs I21 Guardrail. Activate cross-modal reconciliation with troponin feed, ECG extraction, and prior encounter linkage. Monitor the dashboard for blocked I21 assignments and clinician confirmation rates.
Establish a quarterly MI code reconciliation review. Use Scribing.io's audit trail exports to verify that I25.2 assignments are supported by documentation and that no I21 codes escaped the guardrail inappropriately.
See the I25.2 vs I21 Guardrail in Action
Book a 15-minute demo to see our I25.2 vs I21 Guardrail live: real-time dictation prompts plus FHIR-linked troponin timelines and ECG Q-wave NLP with an auto-generated CMS audit trail (LOINC/SNOMED/CPT-referenced). We will run the 72-year-old ED scenario against your EHR's problem picker defaults and show you exactly where the I21.9 error would have occurred — and how Scribing.io blocks it. Schedule your demo at Scribing.io →
About this guide: Written for Cardiology Medical Directors deploying AI-assisted documentation. Clinical logic validated against the Fourth Universal Definition of Myocardial Infarction, ICD-10-CM Official Guidelines FY2026, and MS-DRG v44 classification logic. Last reviewed June 2026. For code-level reference, visit the Scribing.io ICD-10 Documentation Library.

