Hank, back to console
_CODESETS

Sign in to look up codes

HANK_CODESETS is access-controlled. Sign in with your Hank account to run CPT / ICD / HCPCS / anesthesia lookups, browse crosswalks, and connect agents over MCP.

Browse the API docs →

No account yet? Get one at console.hank.ai. MCP endpoint: https://api.hank.ai/v1/codesets/mcp/ (needs an access token; full setup is on the MCP tab once you're in).

Look up any code

Every code system we cover - type a code, see everything we know about it.

Generic lookup

Unified profile

CPT detail

ICD detail

HCC detail

Modifier detail

RVU rows

Denial triage

Start with the code on the remittance. A CARC gives the reason the line was adjusted, a RARC gives the remark that explains it, and the Medicaid crosswalk shows which state edits produce that national code. X12 code descriptions need an X12 license.

National denial code

State Medicaid edit

Risk score (RAF)

Give one member's risk categories or diagnoses plus demographics. The answer itemises every term that built the score: disease categories after hierarchy trumping, the demographic factor, and each interaction. Give HCC numbers, ICD-10-CM codes, or both.

MS-DRG grouping

Give one inpatient encounter. The grouper returns the MS-DRG, its relative weight, the severity tier, and the secondary diagnoses that drove it. The payment figure is a national estimate, not a priced claim.

OPPS / APC grouping

Give the HCPCS lines on one outpatient claim. Each line comes back with its status indicator, its APC, and what happened to it: paid, discounted, packaged into another line, or paid from a different fee schedule. Write a line as code, or as code:units:YYYY-MM-DD when units or a line date matter.

Dataset catalog & status

Every code set, enrichment section, scope and compute operation this deployment can answer for, what it is made of, how much of it is loaded, what its license lets you do with it, and when the next version is expected.

HANK Crosswalk - Surgical ↔ Anesthesia

Look up by:

Anesthesia base units

Validate HANK crosswalk

RBCS browser

CPT groups

Group definitions are edited in Tools > CPT Groups (admin).

Scope from natural-language text

Codeset freshness & updates

Live state of every registered dataset - the same view as hcs update status. Warnings (alarms) surface at the top; the grid shows due-ness, the applied version, and last check/apply per dataset. Recheck all probes sources for changes; Run due now refreshes what's due; the per-row Run force-refreshes one dataset. Triggers run on the updater service and this view refreshes as they complete.

Updater run history

Every updater tick (most recent first) - what it checked, applied, failed or blocked, the gate/seed outcomes, and how long it took. Click a run to see its per-dataset actions and alarms.

Rule check

Guidance KRAC coding-guidance corpus

This database is the source of truth for coding guidance. Rows are content-addressed; retiring sets an EndYear window (ICD years are fiscal: Oct 1 rollover), never deletes. Every edit rides the proposal queue below for expert review.

Browse the corpus

look a key up directly, or search when you don't know it

Proposal review queue

Guidance editors

emails allowed to approve/deny proposals (admins are implicit)

RAG push guidance → vector stores

Pushing guidance into the OpenAI / Gemini file-search stores is a deliberate MANUAL step on our own interval (no scheduler). This console shows, per store, when it was last pushed and how many corpus changes have landed since, and warns while any store carries unpushed changes. Pushes update the existing (pinned) store ids in place, so KRAC's store-id settings never change. See docs/RAG_PUSH.md.

Stores & drift

Push history

DB viewer

Select a table

Schema
Rows

SQL console (read-only)

MCP server (for agents)

These codesets are exposed as Model Context Protocol tools: live CPT / ICD / HCPCS / modifier lookups for any MCP-capable agent (ChatGPT, Claude Desktop, Claude Code, Cursor, OpenAI Agents, or your own client). The server is token-gated; set it up below.

Live tool catalog

ScrapeGuard

Anti-scraping detection across the REST + MCP API. Admin-only; the same data is consumable by the parent console.

Settings

Live - no redeploy, no coverage reset. Env vars stay the persistent default (a change here reverts on restart).

Who's scraping - flagged principals, by risk score

Activity

The organizations this instance has served since it started. The record is kept in memory only: it holds counts, labels and times, never a code value or a token, and it clears when the service restarts. Billing lives in the control plane.

Observed organizations

Crosswalk the Hank Crosswalk — CPT to ASA

This table is the source of truth, not a build artifact. Edits here take effect on the very next lookup — nothing is rebuilt from a spreadsheet. Rows are retired by date, never deleted, and every change is attributed to whoever made it.

Browse the crosswalk

look a CPT up directly, or search codes / ASA / comments

Add or edit a mapping

applies immediately — no rebuild, no deploy

A global row is the Hank-wide default. A customer id scopes the mapping to that customer only, and wins over global for them. Editing a retired row brings it back.

CPT Groups the grouping master: CPT ranges to named groups

This table is the source of truth, not a build artifact. Edits here change group membership everywhere: scope expansion, code profiles, guidance group keys, and RAG routing. Rows are retired by date, never deleted, and every change is attributed to whoever made it.

Browse the groups

search a group or friendly name; one row per CPT range Download CSV

Add or edit a group row

applies immediately, no rebuild or deploy

A row defines one CPT range for a group, or an extras / include-only row (leave the range blank). Preview shows exactly which codes each affected group gains or loses before you save. Editing a row keeps its identity; use New row to start a fresh one.

Export download a SQLite bundle

Dump codesets to a self-contained SQLite file for a system that reads the library directly rather than the API. Every bundle carries codeset_meta, so you can always tell which vintage you are holding. Hank-internal only.

Standard bundles

published per data version

The core bundle is what legacy library consumers used locally: the active-code core plus RVU values and the ASA anesthesia crosswalks. The updater republishes it automatically on every data refresh, so this normally redirects straight to the published copy. If that cache is cold it builds on demand instead and can take a few seconds before the file starts arriving.

Custom export

built on demand — takes a few seconds
Code types (check to include)
Loading the registry…
Sections (check to include)
Loading the registry…

Licensing

Codesets owns its corpus licensing. Each corpus defaults to the registry classification; override it (e.g. a negotiated deal → make it public), and grant licensed corpora per customer. The control plane only supplies identity.

Pending access requests - approve writes the grant + entitles the org's next call

Corpora - license-protected? (override the registry default)

Per-customer grants

Grant (or explicitly deny) a customer organization access to a licensed corpus. A deny overrides the env-var fallback; clearing reverts to it.