Overview
Automated claim validation for medical necessity, billing compliance, and frequency limits.
The Procedure Adjudication API serves as an intelligent, real-time gatekeeper for medical claims. It automatically evaluates procedure codes (CPT/CDT) against patient diagnoses (ICD-10) and historical data to ensure clinical accuracy and billing compliance.
By integrating this API, organizations can prevent denials, ensure medical necessity, and adhere to strict coding standards before a claim ever reaches a payer.
Use cases
Pre-claim validation
Automatically scrub claims for errors prior to submission, reducing claim denials.
Real-time coding assistance
Provide immediate feedback to medical coders, flagging conflicting codes or missing modifiers.
Clinical decision support
Alert providers at the point of care if a scheduled procedure lacks supporting diagnosis.
Audit & compliance
Retrospectively analyze claims data to identify patterns of non-compliance.
Data sources
We ground our adjudication logic in industry-standard and authoritative sources:
CMS NCCI
The gold standard for bundling edits (PTP) and frequency limits (MUE).
ICD-10-CM & CPT
Official coding manuals, guidelines, and relationship mappings.
Clinical Policy
Rules derived from standard medical policies (LCD/NCD) and literature.
Violation types
We categorize claim issues into specific rule types. The API response returns these codes, allowing your system to route errors to the correct workflow.
1. Medical necessity (PLE)
Medical necessity
This check validates the clinical relationship between the diagnosis and the procedure. It answers: "Is this procedure medically justified by this condition?"
- Description: Procedure not justified by diagnoses.
- Example scenario: A provider bills for a Chest X-Ray but the only diagnosis on the claim is Foot Pain.
{
"rule": "PLE",
"level": "critical",
"description": "Procedure not justified by diagnoses",
"cpts": ["71045"],
"detail": "Procedure 71045 is not justified by the provided diagnoses",
"ref_ids": ["claim-line-1"]
}2. Frequency limits (MUE)
Medically Unlikely Edits (MUE) prevent over-billing by enforcing quantity limits based on anatomical or policy maximums.
Daily limits (MUE1)
Daily limits
Flags claims where the units of service exceed what is allowed for a single date of service.
- Description: Procedure quantity exceeds daily limit.
- Example scenario: Billing 3 units of an Appendectomy (which can only happen once).
{
"rule": "MUE1",
"level": "critical",
"description": "Procedure quantity exceeds daily limit",
"cpts": ["44950"],
"detail": "Total quantity of 3 exceeds limit of 1",
"ref_ids": ["claim-line-2"]
}Cross-claim daily limits (MUE2)
Cross-claim daily limits
Similar to MUE1, but also considers previous procedures from older claims in the patient's history.
- Description: Procedure quantity exceeds daily limit when considering current claim and historical claims.
- Requirements: You must provide the
historyarray in the request for this check to function. - Note: Procedures with no date provided will be skipped for this check.
{
"rule": "MUE2",
"level": "critical",
"description": "Procedure quantity exceeds daily limit when considering current claim and historical claims",
"cpts": ["44950"],
"detail": "Total quantity of 2 (claim: 1, history: 1) exceeds limit of 1"
}3. Bundling integrity (PTP)
Procedure-to-Procedure (PTP) edits identify pairs of codes that should not be reported together. These rules, enforced by the National Correct Coding Initiative (NCCI), prevent improper payments by defining when a service is considered "integral" to or "mutually exclusive" with another more comprehensive service performed at the same site.
Key principles
- Mutually exclusive: Procedures that achieve the same result or are clinically impossible to perform together.
- Integral procedures: A "separate procedure" or superficial service that is included in a more complex surgical procedure.
- Comprehensive vs. component: Identifies when a specific service is deemed a component of a larger procedure. The component code is typically denied when billed alongside the comprehensive code.
Hard stops (PTP0)
Hard stops
Codes that are mutually exclusive and can never be reported together on the same date of service.
- Description: Procedures cannot be billed together (modifier not allowed).
- Action: One of the codes must be removed.
{
"rule": "PTP0",
"level": "critical",
"description": "Procedures cannot be billed together (modifier not allowed)",
"cpts": ["99215", "99205"],
"detail": "Procedures 99215 and 99205 can not be performed together on the same date of service",
"ref_ids": ["claim-line-3", "claim-line-4"]
}Soft stops (PTP1)
Soft stops
Codes that are typically bundled but may be allowed if performed on separate anatomical sites or distinct sessions, usually requiring a specific modifier (e.g., -59, -25).
- Description: Procedures cannot be billed together (modifier allowed with documentation).
- Action: Review documentation. If appropriate, apply a modifier to bypass the edit.
{
"rule": "PTP1",
"level": "warning",
"description": "Procedures cannot be billed together (modifier allowed with documentation)",
"cpts": ["17000", "17003"],
"detail": "Procedures 17000 and 17003 can not be performed together on the same date of service, except with valid documentation"
}Missing dates (info)
Potential conflicts
When procedure dates are missing, the API cannot definitively confirm a PTP violation. These potential conflicts are flagged as info alerts.
- Reason: One or more procedures in the pair lack a date of service.
- Action: Check dates to confirm if the services were performed on the same day.
{
"rule": "PTP0",
"level": "info",
"description": "Procedures cannot be billed together (modifier not allowed)",
"cpts": ["99215", "99205"],
"detail": "Procedures 99215 and 99205 would not be accepted if performed on the same date",
"ref_ids": ["claim-line-3", "claim-line-4"]
}Criticality & workflows
We categorize every violation into a severity level. This allows you to filter noise and route issues to the right person.
Critical
Denial Risk: High
Target audience:
Warning
Compliance Alert
Target audience:
Info
Informational
Target audience:
Endpoint
POST /adjudicate
Data requirements
To maximize adjudication accuracy, ensure your request includes:
- Procedures: The CPT / CDT codes, dates, and units for the current claim.
- Diagnoses: The ICD-10-CM codes justifying the procedures.
- History: A list of past procedures. This is critical for MUE2 (cross-claim daily limit) checks. Without history, the API cannot detect if a patient has previously received procedures that would exceed daily limits when combined with the current claim.
Configuration
You can fine-tune the strictness of the API using the config object in your request.
Filter by level
Control which violations are returned based on their severity. This is useful if you want to build different views for different users (e.g., showing only Critical errors to a physician).
| Level | Effect |
|---|---|
info | Returns ALL violations (Critical + Warning + Info). |
warning | Default. Returns Critical and Warning violations. |
critical | Returns ONLY Critical violations. Hides coder-level warnings (like PTP1) and info alerts. |
Request example:
{
"procedures": [...],
"diagnoses": [...],
"config": {
"level": "critical"
}
}How is this guide?