How to Generate ICD-10 Codes with AI (and Verify Them Before You Bill)

Generating ICD-10-CM codes with AI takes a few seconds. Knowing whether to trust what comes back is the part worth learning, and it is the part almost nobody writes about. This walks through both: the workflow itself, then the verification pass that stands between a suggestion and a claim.
Throughout, one assumption: you are a coder, biller or clinician who can read a chart. AI shifts where your attention goes. It does not remove the need for it.
What AI actually does to a clinical note
An AI coding tool reads the narrative text of a note and proposes codes that the documentation supports. In practice that means recognising the clinical entities in the text, mapping them to the ICD-10-CM vocabulary, and picking the most specific code whose criteria the note actually meets.
Three things follow from that, and they explain most of what you will see day to day:
- It can only code what is written. If the note says "diabetes" with no type and no complication, the honest output is a non-specific code. A tool that invents specificity is doing you harm, not a favour.
- It is good at recall, weaker at judgement. Surfacing a combination code you had forgotten existed is exactly what it is for. Deciding which diagnosis is principal for an inpatient stay is not.
- It produces suggestions, not decisions. Nothing about an AI suggestion satisfies your obligation to code from the documentation. The verification pass below is not optional politeness, it is the job.
The five-step workflow
1. De-identify the note first
Strip the patient name, date of birth, address, medical record number and any other identifier before the text leaves your system. The clinical content is what gets coded, and none of the identifiers contribute anything to code selection. If you are using our code generator, this matters: we are not a HIPAA-covered entity, which our compliance page states plainly, so de-identifying is on you and it is genuinely necessary.
2. Paste the whole note, not a summary
The instinct is to paste the assessment and plan and skip the rest. Resist it. Specificity usually lives elsewhere: the laterality is in the exam, the stage is in the labs, the acuity is in the history. A note trimmed to its assessment produces unspecified codes, and then the tool gets blamed for being vague about something it was never shown.
3. Read the rationale before the code
This is the habit that separates useful AI coding from dangerous AI coding. A code on its own tells you nothing about whether it is right. A code attached to the sentence it came from can be checked in seconds. Read the reasoning first and the code second, and you will catch the disagreements immediately.
4. Check specificity and combination codes
There are two failure directions, opposite in character. Under-specification means a code was left unspecified when the note supported more detail, which costs you reimbursement. Over-specification means the code asserts something the documentation does not say, which is the more dangerous of the two in an audit. Combination codes sit in the middle, and they are where the most money is left on the table: a single code that captures a disease and its manifestation is almost always correct where two separate codes would be wrong.
5. Verify against the tabular list before submitting
Any code you are about to bill gets looked up. Not because the AI is usually wrong, but because the instructional notes in the tabular list are where the rules live, and those rules are what a payer or auditor will hold you to. Our ICD-10-CM guide covers the index and tabular workflow if you want the longer version.
A worked example, including the part AI often misses
Take a note reading, in part: "68-year-old with type 2 diabetes mellitus and diabetic chronic kidney disease, stage 3a. eGFR 52. Office visit, moderate complexity decision making, metformin continued and lisinopril titrated."
A hurried coder, or a weak tool, codes this as two independent problems: a diabetes code and a kidney disease code, unrelated to each other. That is wrong, and it throws away the clinical relationship the documentation establishes. The correct starting point is the combination code:
- E11.22, type 2 diabetes mellitus with diabetic chronic kidney disease. One code, capturing both the diabetes and the fact that the kidney disease is diabetic in origin.
Here is the part that gets missed. E11.22 carries an instructional note in the tabular list: use an additional code to identify the stage of chronic kidney disease. So E11.22 on its own is incomplete. The full picture is:
- E11.22, type 2 diabetes mellitus with diabetic chronic kidney disease
- N18.31, chronic kidney disease, stage 3a
Note that the stage code is N18.31, not N18.3. Stage 3 is split into 3a and 3b, and N18.3 itself is not a billable code. Submitting it gets the claim rejected on an invalid-code edit, and it is one of the more common avoidable ICD-10 rejections in nephrology and primary care billing. An eGFR of 52 puts this patient in stage 3a, so N18.31.
This example is worth sitting with, because it shows exactly what the verification pass is for. A tool that returns only E11.22 has given you a genuinely good answer to the hard part, recognising the combination code, while leaving out a required additional code. That is not a reason to distrust the output. It is a reason to read the instructional notes on every code you bill.
Where AI suggestions commonly fall short
Four patterns, in roughly the order you will run into them:
- Required additional codes. As above. "Use additional code" and "code first" notes are instructions, and a suggestion that ignores one is incomplete rather than wrong.
- Laterality and the seventh character. Injury and fracture codes need an encounter character: A for initial, D for subsequent, S for sequela. The note frequently does not say which encounter this is, and only you know. The same goes for left versus right when the exam is silent.
- Sequencing. Which condition is principal depends on what the encounter was chiefly for, and for an inpatient stay it depends on rules that live outside the note entirely. Treat ordering as yours to decide. Our inpatient coding guide covers the principal diagnosis rules.
- Payer-specific rules. No general-purpose tool knows your payer's local coverage determinations or which of your contracts bundle what. This is also where most denials actually come from, rather than from outright wrong codes.
The one-minute verification pass
Per chart, before anything is submitted:
- Does every code trace to a specific sentence in the note? If you cannot find the sentence, the code goes.
- Does any code assert more than the note says, in laterality, stage, acuity or type?
- Did you check each code's instructional notes for "use additional code" or "code first"?
- Is a combination code available for anything you are coding as two separate conditions?
- Do the injury codes carry the right seventh character for this encounter?
- Is the principal diagnosis the reason the patient was actually seen?
- If a procedure and an E/M service are both billed, does the documentation support the modifier? See our modifier guide and the E/M coding guide.
Six of those seven questions are answerable from the note in front of you. That is really the point: AI moves your time from lookup to review, and review is where your expertise is worth something.
What this does and does not change
Done this way, AI coding removes the codebook lookup and the nagging sense that you have forgotten a combination code. It does not remove the review, it does not make you compliant, and it does not move responsibility for the claim anywhere. Every code you submit is still yours.
If you want to try the workflow on a real note, our AI code generator returns ICD-10, CPT and HCPCS codes with the rationale and a denial-risk flag on each one, and your first generation needs no account. De-identify the note first, then read the rationale before the codes.