Medical Coding Examples: CPT, ICD-10-CM and HCPCS Walkthrough

Is your practice leaking revenue? Find out exactly where.

Book a 15-minute operational audit with our team.

Table of Contents

Chart note on a desk turning into three code cards for diagnosis, service and supplies

Medical coding examples show how one chart note becomes claim lines: ICD-10-CM codes the diagnosis, CPT codes the service, and HCPCS Level II codes items CPT leaves out. The codes must agree with each other and with the note. A strep throat visit shows the method, including how documentation changes the code.

Most lists of coding examples give you codes and no reasons. That is a weak way to learn, because the hard part is the decision, not the code number. This guide follows one constructed visit from the note to the claim and then changes the note to show how the codes move.

This updated version fixes two details from the earlier one: a positive strep test with a documented strep diagnosis codes to J02.0, not J02.9, and 99213 is a low decision-making visit. If you are deciding whether your own claims match your notes, you can use our revenue calculator to see what small denial rates cost a practice.

Key takeaways

  • ICD-10-CM codes the diagnosis, CPT codes the service, and HCPCS Level II codes items outside CPT.
  • The diagnosis code follows the clinician’s documented assessment, so a positive strep result with a documented strep diagnosis codes to J02.0.
  • 99213 maps to low medical decision making; 99214 maps to moderate.
  • QW marks a CLIA-waived test, and whether a payer requires it for 87880 should be confirmed with the payer.
  • Small, regular reviews of finished claims against notes catch coding drift early.

What do medical coding examples actually show?

They show the translation step: a clinician writes what happened, and a coder turns that note into code lines a payer can process. Each line answers one question. What was wrong with the patient? What was done? What was used? Three code sets answer those three questions, and a claim is only as good as the match between them and the note.

A good example therefore needs three things: the chart note, the code lines, and the reason each code was chosen. Many short lists online give only the second. This guide gives all three for one visit, then shows how the answer changes when the documentation changes. The visit is a teaching scenario we built for this post. It is not a real patient record, and nothing in it comes from a client.

If you want the full reference on how the three code sets relate, our CPT, ICD-10-CM and HCPCS explainer covers it. This post stays on worked examples and the habits that keep them accurate.

How do CPT, ICD-10-CM and HCPCS fit on one claim?

ICD-10-CM codes the diagnosis, CPT codes the service or procedure, and HCPCS Level II codes products, supplies and services that CPT does not include. The CDC’s National Center for Health Statistics publishes the ICD-10-CM files each October; the FY2027 files and guidelines were posted on the CDC site ahead of the October 1, 2026 start (CDC/NCHS).

CPT is itself Level I of HCPCS and is maintained by the American Medical Association. Level II is a separate letter-plus-four-digit system maintained by CMS, and it covers items such as ambulance services and durable medical equipment (HHS, CMS HCPCS general information). A typical office visit uses ICD-10-CM and CPT. A visit that sends a patient home with a brace or supply may add HCPCS.

The three code sets, what each answers and who maintains it
Code set Question it answers Who maintains it Shape of a code
ICD-10-CM What is the condition or reason for the visit? CDC National Center for Health Statistics Letter first, for example J02.0
CPT (HCPCS Level I) What service or procedure was performed? American Medical Association Five digits, for example 99213 or 87880
HCPCS Level II Which supplies, equipment or other services outside CPT were furnished? CMS One letter plus four digits

Source: CDC/NCHS ICD-10-CM FY2027 files (2026); HHS, CMS HCPCS general information.

Flow from clinician note to ICD-10-CM, CPT and HCPCS codes on one claim
How one clinical note turns into the three kinds of code on a claim. Source: RCM Finder.

The diagnosis code and the service code have to tell the same story. A payer reads the pair together to judge whether the service fits the condition. When they do not agree, the claim is slowed or denied even if each code is valid by itself.

What does a worked example look like, from note to claim?

Here is the scenario. An established patient visits a primary care office with a sore throat and fever. The physician examines the patient, runs an in-office rapid group A strep test, and the test is positive. The physician documents the assessment as streptococcal pharyngitis and the plan as treatment and follow-up. This is a constructed example for teaching.

A coder reads the note in three passes. The first pass finds the diagnosis. The second finds each billable service. The third checks the supporting detail, such as whether the E/M level is backed by the note and whether a modifier is needed.

Worked example: one primary care visit, coded line by line (constructed teaching scenario, not a real patient)
Claim element Code What it reports, in plain words Why this code
Diagnosis J02.0 Streptococcal pharyngitis The physician documented strep pharyngitis and the test supports it
Office visit 99213 Established patient visit at low medical decision making The note supports a low-complexity problem, data and risk
Lab test 87880 (often with QW) Group A strep rapid test The test was done in the office; QW applies only to a CLIA-waived test run under the right certificate

Source: ICD-10-CM title for J02.0 as shown for FY2027 (icd-10codes.com mirror); AAFP Family Practice Management (2020) for E/M levels; CMS transmittal R12OTN1 (2003) and Illinois Department of Public Health waived test list for 87880 with QW.

Three of those choices need a reason, so we take them one at a time. The first is the diagnosis. J02.0 is the specific streptococcal code; J02.9 is the unspecified acute pharyngitis code (ICD-10-CM J02 listing, FY2027). The older version of this post used J02.9 for a positive strep result. That was too vague for the documentation we described, and it is corrected here.

The second is the office visit. The AAFP’s guide to the 2021 office visit rules maps 99212 to straightforward medical decision making, 99213 to low, 99214 to moderate and 99215 to high, and says the level can be chosen by decision making or by total time (AAFP Family Practice Management, 2020). The older post described 99213 as low-to-moderate. It is low. A moderate visit is 99214. Our 99213 CPT code guide goes deeper on that level.

The third is the lab test and the QW modifier. CMS transmittals for newly waived tests state that the code must carry the QW modifier to be recognized as a waived test, and they list 87880 with QW for group A strep tests (CMS transmittal R12OTN1, 2003). The Illinois Department of Public Health lists the same pairing, 87880QW, for a strep A test run on a throat swab (Illinois Department of Public Health). Those documents are older, so the practice should confirm the current rule with its Medicare contractor and each commercial payer, and confirm that the office holds the right CLIA certificate for the test it runs.

Check before you copy this claim

This example shows a method, not a rule that fits every payer. Payers differ on QW, on E/M pairing edits and on what they want in the note. Treat any example, ours included, as a starting point for your own payer rules.

How does the same visit change when the documentation changes?

The diagnosis code follows what the clinician documents, not the lab strip and not the coder’s guess. The same sore-throat visit can lead to four different diagnosis lines depending on the note. That is why a coder reads the assessment first and asks the clinician when it is unclear.

How the documented assessment changes the diagnosis line in the strep example
What the note says Likely diagnosis line What to do
Streptococcal pharyngitis, test positive J02.0 Streptococcal pharyngitis Code it, and keep the lab result with the note
Acute pharyngitis, no cause stated J02.9 Acute pharyngitis, unspecified Code it only if the clinician truly did not name a cause; do not default to it for convenience
Pharyngitis due to another named organism J02.8 Acute pharyngitis due to other specified organisms Check the code notes for a second code that names the organism
Sore throat only, no diagnosis reached A symptom code, not J02 Code the symptom when no related definitive diagnosis has been established

Source: ICD-10-CM J02 titles (FY2027, icd-10codes.com mirror); ICD-10-CM Official Guidelines FY2027, sections I.B.4 and I.B.18 (CDC/NCHS).

The last row rests on the official guidelines. They allow symptom codes when a related definitive diagnosis has not been established, and they say it is appropriate to report signs and symptoms in place of a definitive diagnosis (ICD-10-CM Official Guidelines for Coding and Reporting, FY2027, sections I.B.4 and I.B.18).

There is a second reason to code the specific diagnosis when it is documented. The unspecified code tells the payer less. In a medical necessity review, a vague diagnosis next to a lab test gives the reviewer less to work with than a specific one.

“If a coder has to guess between two diagnosis codes, the note is the problem, not the coder. We would rather send a short query to the physician than send a vague claim.”

— Awais Afzal, Healthcare Operations & Data Analyst

How do the same steps work for a visit with a procedure or a chronic condition?

The method does not change: diagnosis first, then each service, then the supporting detail. What changes is the detail you must check. Two common variations are a visit that includes a procedure and a visit for a chronic condition with complications.

A visit that also includes a procedure

When a significant, separate evaluation happens on the same day as a procedure, the E/M line often needs a modifier, and the note must show the evaluation was separate. We do not list a procedure code and modifier pairing here because the rules depend on the procedure and the payer. Our comparison of modifiers 25 and 59 explains when each applies.

A visit for a chronic condition with complications

Diabetes shows why specificity matters. The official guidelines say the diabetes codes are combination codes that include the type of diabetes and the body system affected, and that the default is type 2 when the type is not stated (ICD-10-CM Official Guidelines FY2027, section I.C.4.a). The classification also reads the word “with” as “associated with” or “due to” and presumes a causal relationship between the linked conditions (section I.A.15). A coder who picks a generic diabetes code when the note names a complication loses that detail. See our guide to diabetes ICD-10 codes for the code families.

Specific diagnoses also matter for risk adjustment in Medicare Advantage. We have a separate guide to HCC coding for that topic, so we do not repeat the model details here.

Primary care sees all three patterns every week: lab-in-office visits, procedures on the same day and chronic follow-ups. If that describes your practice, our family practice billing page shows how we think about that mix.

Where do coding mistakes turn into denials and audit risk?

Most coding errors come from a mismatch between the note and the code, not from a typo. In its FY2025 report CMS put the Medicare Fee-for-Service improper payment rate at 6.55%, about $28.83 billion, for claims reviewed from July 1, 2023 to June 30, 2024 (CMS CERT program). CMS describes CERT as a review of whether sampled claims were paid properly under Medicare coverage, coding and payment rules. Improper payments include more than coding mistakes, so the figure shows the scale of the problem, not the share caused by coders.

Four patterns appear again and again in the examples above:

  • A diagnosis code that is less specific than the note supports.
  • An E/M level picked from habit instead of the documented decision making.
  • A modifier added without a note that supports it, or left off when it was needed.
  • A lab or supply line that was coded without checking the payer’s rule for it.
Four-step coding review: read note, pick diagnosis, add services, check payer rules
A four-step review that catches the mistakes in the list above before a claim goes out. Source: RCM Finder.

Catching these before submission is cheaper than appealing them later. A claim scrubbing process applies payer edits to a claim before it leaves, and a coding audit samples finished claims to find patterns. They work best together. If you also want the broader picture of what makes a claim clean, read our clean claims guide.

How should a practice use examples like these?

Use them as training material and as an audit checklist, not as a lookup table. A practice that wants to find its own weak spots should code a small sample of recent visits the way we coded the strep visit, then compare the result to what was billed. The gaps point to a template, a training need or a payer rule. If you want help with the billing side, our medical billing services include coding support, and our team works inside your existing EHR (for example PrognoCIS, eClinicalWorks or athenahealth).

Roles matter too. Coding turns documentation into codes; billing turns codes into paid claims. Our billing versus coding guide explains where one ends and the other begins.

See where your own claims differ from the note

Send us a sample of recent visits and we will show you how they code against the documentation. The audit is free.

Get a Free Practice Audit

Our recommendations

  1. Code from the assessment, then check the lab. We would start every coding review at the clinician’s assessment. If the lab result and the assessment disagree, send a query before the claim goes out.
  2. Keep a short sheet for your five most common visit types. List the usual diagnosis, service and modifier decisions for each, with the payer exceptions beside them. Update it every January and whenever a payer announces a change.
  3. Ask for the more specific diagnosis when the note allows it. Do not default to an unspecified code when the clinician named a cause. A short template prompt for the cause often solves it.
  4. Pick the E/M level from the note, not from habit. Review a sample of visit levels each quarter against the documented decision making. A practice that bills one level for most visits should find out why.
  5. Write down your payer rule for each in-office test. Record whether the payer wants a modifier such as QW and what certificate the office holds. This is a one-time task that prevents repeat denials.
  6. Audit a small sample monthly. Review ten to twenty finished claims against the notes. Small, regular reviews find drift sooner than a yearly audit.

Bottom line

Medical coding examples teach best when they show the reason behind each code. Read the assessment, code the diagnosis as specifically as the note allows, add each service, and check the payer’s rules before the claim goes out. If denials keep returning on lines like these, our denial management services work them by cause, and you can talk to our team or request a free practice audit.

Frequently asked questions

What is an example of medical coding?

A primary care visit for a sore throat is a common example. The diagnosis (streptococcal pharyngitis) is coded in ICD-10-CM as J02.0, the visit is coded in CPT with an E/M code such as 99213 if the note supports low decision making, and the rapid strep test is coded 87880. Payers read the three together.

What are the three main code sets in medical coding?

ICD-10-CM codes the diagnosis and is published by the CDC. CPT codes services and procedures and is maintained by the American Medical Association. HCPCS Level II is maintained by CMS and covers items outside CPT, such as durable medical equipment and ambulance services. Most outpatient claims use ICD-10-CM and CPT; some add HCPCS.

Is J02.9 or J02.0 correct for strep throat?

It depends on the documentation. J02.0 is streptococcal pharyngitis and fits a note that documents strep as the cause. J02.9 is acute pharyngitis, unspecified, and fits a note that names no cause. A positive lab result alone should prompt a query to the clinician, not a guess. Always follow the current code notes.

Is 99213 low or moderate complexity?

99213 maps to low medical decision making. 99214 maps to moderate, and 99215 to high. Since 2021 the level can be chosen by medical decision making or total time on the date of the visit. Some payers add their own edits, so check the payer policy as well as the AMA guidelines.

Do I need the QW modifier on a rapid strep test?

QW marks a test that is waived under CLIA. CMS transmittals list 87880 with QW for group A strep tests, but those documents are dated. Whether QW is required depends on the test, your CLIA certificate and the payer. Confirm the current rule with your Medicare contractor and each commercial payer before you bill.

Can I use examples like these to code real claims?

Use them to learn the method, not to copy a claim. Each real claim must follow the actual note, the current code set and the payer’s rules. A certified coder or your billing team should confirm the codes. Our scenario is constructed for teaching and is not a real patient.

Get your free practice audit

Tell us about your practice. We will contact you using the details you give.

  • A review of your recent claims, denials and A/R aging
  • Where your front desk and prior authorizations slow payment
  • A prioritized fix list you keep, whether or not you hire us

Pricing is quoted after the audit, based on your volume and the services you choose. Prefer to talk? Call +1 (302) 556-2288.

RCMFinder Master Intake Form

Sources

  1. ICD-10-CM FY2027 files and Official Guidelines directory — CDC / National Center for Health Statistics (2026)
  2. ICD-10-CM Official Guidelines for Coding and Reporting FY2027 — CDC / National Center for Health Statistics (2026)
  3. CMS HCPCS general information — HHS
  4. J02 Acute pharyngitis (FY2027) — icd-10codes.com (mirror of the ICD-10-CM release) (2026)
  5. J02.0 Streptococcal pharyngitis (FY2027) — icd-10codes.com (mirror of the ICD-10-CM release) (2026)
  6. Office visit coding 2021 (Family Practice Management) — American Academy of Family Physicians (2020)
  7. Transmittal R12OTN1, new CLIA waived tests — CMS (2003)
  8. CPT codes for waived tests — Illinois Department of Public Health
  9. Comprehensive Error Rate Testing (CERT) — CMS (2025)

Disclaimer: This article is educational and is not legal, coding, billing or compliance advice. CPT codes are owned by the AMA, and code sets, payer policies and federal rules change and vary by payer. The visit described is a constructed teaching scenario, not a real patient. Verify current requirements with the official code sets, your payers and a certified coder before you bill.

Awais Afzal, Healthcare Operations & Data Analyst

Awais has spent more than 16 years in healthcare digital marketing and clinical operations management. He builds data-driven revenue cycle blueprints for medical practices and leads product development of the RCM Finder portal. More about our team.

Picture of Awais Afzal

Awais Afzal

Awais Afzal is a healthcare entrepreneur and performance marketing specialist with over 16 years of experience in healthcare digital marketing and clinical operations management. As the driving force behind RCM Finder, Awais specializes in developing data-driven revenue cycle blueprints that help high-ticket medical practices scale operations and maximize cash flow.

Stop Leaving Money on the Table. Get Your Free RCM Audit.

Let our team of certified billing experts uncover the exact coding errors and workflow bottlenecks costing your practice thousands in hidden denials.