Working with IPPS A: What Actually Happens When You Try to Code
Most people encounter IPPS A when they're handed a batch of hospital discharge records and told to assign diagnosis and procedure codes under the Medicare Inpatient Prospective Payment System. It sounds straightforward on paper. It isn't. The user guide itself will tell you to follow the coding conventions, check the tabular list, verify the principal diagnosis, and apply the MCCI edits. That's the surface level. The real work happens in the gaps between those instructions. Here's the sequence I use, and it's probably close to what you'll end up doing whether you follow a manual or not: Start with the discharge summary and the operative report if one exists. Don't rely on the chief complaint alone. The chief complaint is not the principal diagnosis unless the documentation explicitly confirms it after full workup. I've seen coders pull I10 for an uncontrolled hypertension from the admission note when the actual reason the patient stayed ten days was acute kidney injury from contrast exposure. Wrong code, wrong DRG, claim gets rejected or down-coded later. Takes three weeks to fix.
Next, go through every documented condition that affected length of stay, treatment, or resource use. Comorbidities matter. The MS-DRG system cares about them because they shift the weight. MCCs and CCs are what separate a base payment from a payout that actually covers the cost of the stay. If the physician documented malnutrition and pressure ulcer stage 3, both get coded. Both change the DRG. Skipping either is a compliance risk. For procedures, pull from the OR report, anesthesia record, and nursing flowsheets. If a central line was placed and documented in the procedure note, it goes in. If it was attempted but not placed, you code the attempt only if the payer's guidelines support it — and most IPPS rules don't want that one. I learned that the hard way when a colleague coded a failed IV stick as a procedure and triggered an audit flag on three consecutive claims. The workaround was simple: cross-reference the CPT procedural code set against the ICD-10-PCS only for documented, completed interventions. Anything ambiguous goes into the query pool for the attending physician. After you have your diagnosis and procedure lists, run them through an encoder. Not a guess. An encoder. The crosswalks between ICD-10-CM, ICD-10-PCS, and MS-DRG weights are not something you can hold in your head. I've seen experienced coders misalign a CCBY to an MCC by one character and land two DRGs apart. That's a-thousand-dollar difference per case.
Then validate the MCCI edits. These tables tell you which procedure codes can't be paired with which diagnosis codes. If your encoder doesn't flag these automatically, you're coding blind. Run the edits, resolve contradictions, and only then finalize the case mix index contribution for that admission.
Get the Full Details

What the Guide Won't Tell You
The first counter-intuitive thing nobody mentions upfront is that physician documentation quality drives your entire revenue cycle more than any coding rule does. You can know every MCCI combination perfectly and still produce garbage output if the provider wrote "shortness of breath, worked up" and nothing else. The coder can't invent a diagnosis. The workaround I use is a structured query template sent back to the physician within 48 hours of discharge. It asks specific questions: Was heart failure confirmed by ejection fraction? Was sepsis present on admission or developed during the stay? What was the underlying cause of the acute kidney injury? Getting precise answers cuts my rework time from about 20 minutes per problematic case to roughly 3 minutes. The second thing is that present on admission (POA) indicators are where most facilities get penalized. Not because the rules are complex, but because they're inconsistently applied. A urinary tract infection that shows up on day three of a five-day stay needs a POA of "N" — no, it didn't exist at admission. But if the patient had asymptomatic bacteriuria on day one that progressed to a symptomatic UTI on day three, the coder has to query whether the qualifying episode of care makes it present on admission. I once spent four hours reviewing 60 charts because a new hire had flagged every UTI as "Y" across the board. The fix was creating a quick-reference decision tree that distinguishes colonization from active infection based on lab evidence and symptom onset timing.
Where It Breaks Down
IPPS A coding as described in any standard user guide assumes a perfect world: complete documentation, clear physician notes, accessible operative reports, and enough time to do it right. That world doesn't exist in most hospitals. The system breaks hardest in three scenarios. First, short-stay observations. When a patient comes in, gets watched for 23 hours, and goes home, the documentation often reflects an emergency department visit rather than an inpatient admission. Coding it as inpatient under IPPS pulls in DRG weights that don't apply. The workaround is reviewing the admit/discharge status code and the "medically necessary inpatient" criteria before locking the case. If it's observation, it's outpatient billing, period. Second, dual adjudication cases where Medicare and a secondary insurer disagree on the DRG. This happens more often than you'd think with borderline MCC cases. The facility takes the hit on the difference. My approach here is to maintain a separate tracking log for every borderline case and document the clinical justification for each CC/MCC assignment. It saves about two hours of back-and-forth per denied claim during audits.
Third, the encoder dependency. If your facility relies on a single encoder and it hasn't been updated for the current fiscal year's DRG weights, you're coding against stale data. I've seen this happen during transition periods between October 1st updates. The encoder still maps to the prior year's weight table until the vendor pushes the patch. This typically affects 5 to 8 percent of cases in the first two weeks after a rate update. The workaround is running a spot-check on the top 20 DRGs by volume against the CMS published weights before closing out the batch. If your operation is small — fewer than 50 inpatient discharges per month — the overhead of maintaining an IPPS A coding workflow may not be worth it. You'd be better served by contracting with a specialized risk-adjusted coding firm that handles the encoder updates, MCCI validation, and audit defense as part of a fixed per-case fee. The per-case cost runs roughly $15 to $30 depending on complexity, which is cheaper than the salary of a dedicated coder plus the encoder license and ongoing education requirements.

Download and Resources
The official IPPS A rule set and user guidance comes directly from CMS. You can find the current fiscal year's final rule, the MS-DRG definitions manual, the MCCI edit tables, and the coding conventions document at cms.gov. Those are the primary sources. Third-party encoders like 3M, TruCode, and Optum bundle these files into their platforms, which is convenient but means you're trusting their update cadence. I always verify encoder outputs against the raw CMS documents at least once per quarter. It takes about 90 minutes and has caught two misaligned weight tables and one incorrectly excluded CC in the past year alone. The AAPC and AHIMA offer coding update courses specifically for IPPS inpatient coding. They're not free, but the 20-hour annual CE requirement for certified coders covers this material. Attending one of those sessions before the October update cycle saves you from learning corrections the hard way through denied claims.
Bottom Line
IPPS A coding works when the documentation is solid, the encoder is current, and someone actually reads the operative report instead of just the discharge summary. It fails when you treat it as a checklist exercise. The margin between a clean payment and an audit trigger is usually one missing POA indicator or one comorbidity that was documented but never coded. Pay attention to those details. Everything else is just procedure.