Healthcare

Extract CMS-1500 claim forms to structured JSON

The CMS-1500 is the standard paper claim form providers use to bill Medicare, Medicaid, and most commercial payers. Its 33 numbered boxes pack patient, insured, diagnosis, and service-line data into a dense red-ink grid, and forms arrive printed, stamped, handwritten, or scanned. Sensible converts CMS-1500 forms into structured JSON for claims intake and adjudication.

claims intake | payer adjudication | revenue cycle

Validated JSON

Schema-enforced output; every field matches your contract

Source coordinates

Every value links back to page + bounding box for audit

Per-document pricing

Predictable cost. No token-volatility surprises

Trusted by teams turning documents into production data

What makes CMS-1500 forms hard to extract

The CMS-1500 has a fixed layout, which makes it a strong candidate for positional extraction. The difficulty is everything around the layout: a tight boxed grid where labels sit in the margins, a repeating service-line table in Box 24, and scan quality that ranges from clean PDFs to faxed and handwritten copies. Layout-based rules pin the consistent boxes; LLM parsing handles the messy inputs.

01

Dense Boxed Grid

Thirty-three numbered boxes sit inches apart, with field labels printed in the margins rather than next to their values. Box 24 alone splits into lettered sub-columns (24A through 24J). Anchored region rules read each box by its position on the form, so Box 2 stays the patient name and Box 1a stays the insured ID across every claim.

02

Box 24 Service Lines

Box 24 holds up to six service lines, each with a date of service, place of service, CPT/HCPCS code plus modifiers, diagnosis pointer, charge, units, and rendering NPI. Sensible reads the table as structured rows, keeping each line's code tied to its charge and diagnosis pointer instead of flattening the grid into loose text.

03

Print, Stamp, and Handwriting

Some CMS-1500s come off a billing system as clean PDFs. Others are typed into the red form, stamped, signed by hand in Box 31, or faxed until the boxes blur. Hybrid extraction combines positional rules for the clean forms with LLM parsing for degraded scans, and flags low-confidence fields for review rather than guessing.

Managed services

Don't want to build it? We'll write your configs from your samples.

Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.

What's included

01Plan.Engineers review your samples and pick the right method

02Build.SenseML configs written from your samples

03Deploy.Same engine as self-serve, ready for production

04Adjust.We update configs when formats shift or new edge cases appear

05Integrate.Help with custom integration into your downstream systems

Fields we extract

Every claims pipeline maps the CMS-1500 to its own schema, so we build the config around your fields rather than a fixed list. These are the boxes claims teams pull most often; we map whatever else your intake or adjudication workflow needs.

01

Patient & insured

Insurance type (Box 1), insured's ID (1a), patient name (2), patient DOB and sex (3), insured's name (4), patient relationship (6), insured's policy/group number (11)

02

Service lines (Box 24)

Date of service (24A), place of service (24B), CPT/HCPCS code and modifiers (24D), diagnosis pointer (24E), charges (24F), units (24G), rendering provider NPI (24J)

03

Provider, billing & totals

Referring provider and NPI (17, 17b), diagnosis codes (21, ICD-10 A–L), federal TIN (25), total charge (28), service facility (32), billing provider name and NPI (33)

config.json

SenseML

{ /* SenseML: CMS-1500 claim extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "patient_name", "description": "patient name, box 2, patient last first MI" },
{ "id": "insured_id", "description": "insured ID number, box 1a, member ID" },
{ "id": "total_charge", "description": "total charge, box 28, total" },
{ "id": "diagnosis_codes", "description": "diagnosis codes, box 21, ICD-10 A through L" }
// + service lines and provider fields, mapped to your schema
]
}
}
]
}

Supported claim form variations

Sensible processes CMS-1500 forms across payers and submission channels. Fingerprints identify the form revision (02-12 or the older 08-05) so the right configuration runs, and new variations can be configured in hours. The extraction logic is explicit in SenseML, not buried in prompt tuning.

By payer type

Medicare, Medicaid, TRICARE, commercial carriers, Medicare Advantage plans, and the older HCFA-1500 layout

By submission format

System-printed PDFs, typed red-form originals, handwritten claims, faxed and scanned copies, and image-based EDI companion documents

Common Questions

Answers about form revisions, Box 24 service-line extraction, and handling handwritten or scanned claims.

Can Sensible read handwritten and faxed CMS-1500 claims?

Yes. Hybrid extraction combines positional rules for clean system-printed PDFs with LLM parsing for typed red-form originals, stamped or hand-signed forms, and faxed scans where the boxes blur. Low-confidence fields are flagged for review rather than guessed.

How does Sensible handle Box 24 service lines?

Box 24 holds up to six service lines, each with a date of service, place of service, CPT/HCPCS code and modifiers, diagnosis pointer, charge, units, and rendering NPI. Sensible reads the table as structured rows, keeping each line's code tied to its charge and diagnosis pointer instead of flattening the grid.

What fields does Sensible extract from a CMS-1500?

Patient and insured identity, payer, diagnosis codes (Box 21), the Box 24 service lines, provider NPIs, federal TIN, and the Box 28 total charge are all extracted. Custom fields can be added in SenseML to match your claims intake or adjudication schema.

Which CMS-1500 revisions and payers does Sensible support?

Sensible processes CMS-1500 forms across Medicare, Medicaid, TRICARE, commercial carriers, and Medicare Advantage plans. Fingerprints identify the form revision, either the 02-12 or the older 08-05 HCFA-1500 layout, so the right config runs.

Start free

Turn your next CMS-1500 into JSON.

Free 14-day trial. No credit card required. Start extracting in minutes.