A patient comes in for a routine follow-up. Type 2 diabetes, hypertension, and chronic kidney disease are all stable and have been managed for years. Today she also mentions a cough that started three days ago. The physician pulls up her recent labs, adjusts two medications, orders a chest X-ray, and documents the visit in about eleven minutes.
Clinically, none of this is hard. An experienced internist could handle this encounter in their sleep.
Coding it correctly is a different problem entirely.
Do you bill this on medical decision-making or total time? Are the three chronic conditions documented with enough specificity to hold up if a payer asks why? Does the new cough change the diagnosis picture, or is it incidental? And does the note actually back up every line on the claim, or does it just feel like it does?
These aren’t hypothetical questions. They’re the exact decisions that determine whether a claim gets paid on the first pass or comes back three weeks later as a denial.
Internal medicine is unusual in how often a single visit touches four or five active problems at once. That’s what makes coding here harder than most other specialties; it’s rarely a matter of picking one diagnosis and one office visit code. It’s untangling which conditions actually drove today’s decision-making and proving it on paper.
Documentation Is the Real Bottleneck, Not the Code
Here’s a mistake that’s easy to make: assuming the hard part of billing is knowing which CPT code to use.
It usually isn’t. Most internists and their coders know the code set well enough. The actual failure point is whether the documentation in the chart supports the level being billed.
For office and outpatient E/M visits, you pick one of two paths: Medical decision-making or total time on the date of the encounter, and you stick with it. Payers want to see that the note clearly supports whichever method was used. Mixing signals (a note that gestures at complexity but also lists a short visit duration, for instance) is one of the fastest ways to get flagged during claim review.
The rule of thumb worth repeating to every provider: the code should be a reflection of the documentation. Not the other way around. If someone is deciding on 99214 first and then writing a note to justify it after the fact, that’s backwards, and it shows.
Chronic Conditions Need Specificity, Not Shortcuts
A patient managing diabetes alongside hypertension, CKD, obesity, and hyperlipidemia isn’t unusual in internal medicine; it’s Tuesday. If each of those conditions genuinely factored into today’s decision-making, each one needs to be documented in a way that shows how.
The shortcut that causes trouble: reaching for an unspecified diagnosis code because it’s faster to enter than tracking down the specific one. It saves thirty seconds at the keyboard and costs a lot more than that later.
Payers are increasingly cross-referencing diagnosis codes against the services actually billed. If the diagnosis is vague, it doesn’t clearly explain why a test was ordered or why the visit merited a higher level of service, and that disconnect is exactly what triggers a medical necessity denial. Complete documentation has to come before code selection, not after.
AI Coding Tools Are Helpful. They’re Not the Final Word.
More coding workflows now run through some kind of AI-assisted suggestion engine, and that’s not inherently a problem. These tools are genuinely good at scanning a note and flagging plausible CPT and ICD-10 candidates.
Where it goes wrong is when the suggestion gets treated as an answer instead of a starting point. An algorithm might flag a higher-level office visit purely because it spotted several chronic conditions mentioned in the note, without any real read on whether the documented medical decision-making actually supports that level. Accepting that suggestion without checking it against the actual chart isn’t a shortcut. It’s a compliance risk with your name on it.
The coders who get this right treat AI output the same way they’d treat a second opinion: useful, worth considering, never automatically accepted. Every AI-suggested code still needs a human to check it against what the provider actually documented before the claim goes out.
Medicare Preventive Visits Keep Tripping Practices Up
This one’s avoidable and still shows up constantly: confusing an annual wellness visit with a routine physical.
They can look similar from the patient’s side of the desk. Someone walks in for their “yearly checkup,” and depending on what actually gets discussed and documented, that visit is either an annual wellness visit (G0438 for the initial visit, G0439 for subsequent ones) or a routine preventive physical, and Medicare treats these as entirely different services with entirely different coverage rules. The AWV is about risk assessment and a personalized prevention plan, not a hands-on comprehensive exam. Bill the wrong one, and you’re looking at a denial and a confused patient asking why they got a bill.
Chronic care management runs into a similar trap. CPT 99490 isn’t just “we talked on the phone a few times this month.” It requires documented patient consent, an actual care plan on file, and at least 20 minutes of qualifying non-face-to-face clinical staff time tracked within the calendar month. Skip the time log, and the code doesn’t hold up if a payer asks for backup.
Denial Patterns Are Rarely One-Off Mistakes
Coding errors in a practice almost never show up as isolated incidents. They show up as habits.
One provider might consistently undercode follow-ups because their documentation habits don’t fully capture the MDM involved. Another practice might lean on unspecified diagnosis codes across the board, not out of laziness but because nobody’s flagged it as a pattern. Somewhere else, a provider might still be selecting E/M levels based on how long the appointment ran instead of what total documented time actually supports.
None of these get noticed from a single denied claim. They show up when reimbursement slows down across the board, or when an external audit pulls a sample of charts and finds the same issue five times in a row.
This is why routine internal chart reviews matter more than most practices give them credit for, pulling a sample of charts periodically and checking documentation quality, E/M level selection, and diagnosis specificity before a payer or auditor does it for you.
Staying Current Isn’t Optional Anymore
Internal medicine coding doesn’t sit still. ICD-10-CM gets updated annually, CPT guidance shifts, Medicare issues new guidance, and individual payers layer their own edits on top of all of it. A practice running on last year’s habits, even when the actual patient care hasn’t changed, can start seeing denials creep up simply because the coding hasn’t kept pace.
Practices that build in a regular review of coding updates and actually walk providers through what changed and why tend to stay ahead of this instead of getting blindsided by it mid-year.
A Quick Pre-Submission Checklist
Before a claim goes out the door, it’s worth running through a short list:
| Check | Why it matters |
| E/M level matches documented MDM or total time, not a mix of both | Prevents level-of-service denials |
| Diagnosis codes are as specific as the documentation allows | Supports medical necessity |
| Every chronic condition billed is tied to today’s actual decision-making | Reflects the true complexity of the visit |
| AWV vs. routine physical coded correctly | Avoids preventive-care billing errors |
| Current ICD-10 and CPT guidance applied, not last year’s | Reduces audit exposure |
Small as this list looks, running through it consistently catches most of the errors that would otherwise sit in a denial queue for weeks.
The Bottom Line
Strong internal medicine coding isn’t really about memorizing more codes. It’s about documentation that actually reflects what happened in the room, the conditions addressed, the decisions made, and the time it took, and coding that follows from that, rather than working backward from a number someone had in mind.
The practices that handle this well aren’t coding faster than everyone else. They’ve just built a workflow where documentation and coding tell the same story, which is ultimately what keeps reimbursement steady and audits uneventful.