Check Medicare coverage for a code and diagnosis
Does a Medicare local coverage document list this diagnosis as supporting this procedure code in this state? With how the answer was reached and the CMS page to check.
| Plan | Pro (403 plan-upgrade-required on Free and Builder). as_of, the answer on a past date, is Team |
| Datasets | Medicare coverage support (CMS Medicare Coverage Database), ICD-10-CM (every plan) |
| Calls per answer | 1, plus 1 if you check the diagnosis code first |
| Limits | Each account can look up a limited number of different code and diagnosis pairs a day (5,000 on Pro, 20,000 on Team); repeats don't count |
1. Check the diagnosis code (any plan)
Send the full billable ICD-10-CM code. A category such as B35 matches only where a document
lists the category itself, so check first that the code is billable:
curl https://api.healthcare.dev/v1/codes/icd10cm/B35.1 \
-H "Authorization: Bearer $HDEV_API_KEY" | jq '.data | {code, display, billable, status}'2. Ask for coverage support
curl "https://api.healthcare.dev/v1/coverage/medicare?code=11720&dx=B35.1&state=TX&view=compact" \
-H "Authorization: Bearer $HDEV_API_KEY"{
"data": {
"code": "11720",
"dx": "B35.1",
"state": "TX",
"disclaimer": "Reference data, not a coverage determination.",
"coverage": {
"answer": "supported",
"confidence": 1,
"derivation": "source_stated",
"evidence": [
{
"url": "https://www.cms.gov/medicare-coverage-database/view/article.aspx?articleid=56640&ver=16",
"anchor": "h3Icd10SupportHeader"
}
],
"as_of": "2026-10-19T06:55:00.000Z"
},
"basis": "documents_agree"
}
}Leave out view=compact (the default is full) to get results: one entry per LCD or billing
article that lists the code, each with its own answer, basis and document.
TypeScript
import { HealthcareDev, PlanUpgradeRequiredError } from "@healthcare.dev/sdk";
const hdev = new HealthcareDev();
try {
const { data } = await hdev.coverage.medicare({ code: "11720", dx: "B35.1", state: "TX" });
const { answer, derivation, confidence, evidence } = data.coverage;
console.log(answer, derivation, confidence, evidence[0]?.url);
for (const r of data.results ?? []) console.log(r.document.id, r.coverage.answer, r.basis);
console.log(data.disclaimer); // show it with the answer
} catch (err) {
if (err instanceof PlanUpgradeRequiredError) console.log(`Needs the ${err.requiredPlan} plan`);
else throw err;
}Python
from healthcare_dev import HealthcareDev
hdev = HealthcareDev()
cov = hdev.coverage.medicare(code="11720", dx="B35.1", state="TX")["data"]
c = cov["coverage"]
print(c["answer"], c["derivation"], c["confidence"], [e["url"] for e in c["evidence"]])
for r in cov.get("results", []):
print(r["document"]["id"], r["coverage"]["answer"], r["basis"])
print(cov["disclaimer"])Ask an agent
Does Medicare support HCPCS/CPT code 11720 for diagnosis B35.1 in Texas? Tell me the answer, how it was reached (derivation and confidence), and link the CMS document section to read. Remind me this isn't a coverage determination.
The agent uses check_medicare_coverage (and lookup_code for the diagnosis).
Read the answer
coverage.answer is one of three:
supported: a document lists the diagnosis among the codes that support medical necessity for this code.not_supported: a document lists it among the codes that don't, or says unlisted diagnoses don't support the code and this one isn't listed.unclear: the documents don't settle it (narrative criteria only, extra conditions, lists not tied to this code), or they disagree. No document listing the code at all is alsounclear, with emptyresults: there is no local policy for it.
Every answer says how it was reached:
derivation:source_statedmeans the CMS document states it in its published code lists and we only read the list (everysupportedandnot_supported).derivedmeans we concluded it from what the document says, without the document stating it outright (everyunclear).reviewedmeans a person checked it.confidence: from 0 to 1.1when the document states the answer,0forunclear. Don't act on an answer below your own threshold without reading the evidence.evidence: the document's page in the Medicare Coverage Database and the section (anchor) to read. We serve facts and links, never the policy text.as_of: when CMS published the export the answer was read from.
What it is not
Reference data, not a coverage determination. A listed diagnosis doesn't guarantee payment: the service must still be reasonable and necessary, meet the LCD's criteria, and be supported by the medical record. It is not prior authorization, a Medicare Advantage plan's criteria (see MA internal criteria) or a payment amount. CPT codes are served as numbers only, never with their descriptions.
Next: get pushed when a coverage document changes, in Keep your data fresh.
Verify a provider
Before you schedule, refer or pay: does the NPI exist, is it active, is it enrolled in Medicare, has it opted out, does OIG list an exclusion, and do the sources disagree.
Drug safety status
For an NDC: the RxNorm concept, whether FDA lists a current shortage, any recall FDA hasn't terminated, and the label's boxed warning, each with its source and release.