> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Claims Management & Submission — User Guide

> The Claims Management module enables billing staff to generate CMS-1500 (837P) and UB-04 (837I) claims from approved charges, validate them through pre-submiss…

## Overview

The Claims Management module (PM-08) enables billing staff to generate CMS-1500 (837P) and UB-04 (837I) claims from approved charges, validate them through pre-submission scrubbing, manage the claim lifecycle, and track denials with CARC/RARC codes.

**Access:** Navigate to **Practice Management → Claims** in the sidebar.\
**Permission:** `pm.claims.view` (view), `pm.claims.create` (generate), `pm.claims.submit` (submit to payer).

***

## Generating Claims from Charges

1. Navigate to `/pm/claims` and click **Generate Claims**.
2. The dialog displays all **approved charges** that are not yet linked to a claim.
3. Select charges to include — they are automatically grouped by patient.
4. Provide the **Billing Provider NPI** and select the **Payer**.
5. Click **Generate** to create draft claims with linked claim lines.

Each charge maps to one claim line. The charge status transitions to `billed` and the `claim_id` foreign key is set.

***

## Claim Scrubbing

Before submission, claims go through pre-submission validation:

| Rule                                      | Severity |
| ----------------------------------------- | -------- |
| Billing provider NPI required (10 digits) | Error    |
| Payer required                            | Error    |
| Patient required                          | Error    |
| At least 1 claim line                     | Error    |
| Primary diagnosis code required           | Error    |
| Filing deadline not expired               | Error    |
| Each line: CPT code required              | Error    |
| Each line: units > 0                      | Error    |
| Each line: charge amount > 0              | Error    |
| Each line: service date required          | Error    |
| Each line: ≥1 diagnosis pointer           | Error    |
| Duplicate modifiers on a line             | Warning  |

Click **Run Scrub** on the claim detail page to validate. Claims with errors cannot be submitted.

***

## Claim Lifecycle

```text theme={null}
draft → scrubbed → submitted → accepted → paid → adjusted
                           ↘ denied → appealed → paid/denied
                           ↘ void
```

| Status          | Description                                |
| --------------- | ------------------------------------------ |
| Draft           | Generated from charges, awaiting scrubbing |
| Scrubbed        | Passed validation, ready for submission    |
| Submitted       | Sent to clearinghouse/payer                |
| Accepted        | Payer acknowledged receipt (999)           |
| Paid            | Fully adjudicated and paid (835)           |
| Partial Payment | Partially paid, remainder pending          |
| Denied          | Denied by payer                            |
| Appealed        | Under appeal after denial                  |
| Void            | Voided (frequency code 8)                  |
| Adjusted        | Post-payment adjustment applied            |

Use the **Status Menu** on the claim detail page to transition between valid states.

***

## Filing Deadline Tracking

AHCCCS requires claims within **365 days** of the date of service. The filing deadline is automatically calculated from the earliest service date on the claim.

**Visual indicators on the claim list:**

* 🟡 **Amber** — fewer than 30 days remaining
* 🔴 **Red** — deadline expired

Expired claims are flagged during scrubbing and cannot be submitted without override.

***

## Managing Denials (CARC/RARC)

When a claim is denied, denial codes are stored using industry-standard CARC (Claim Adjustment Reason Codes) and RARC (Remittance Advice Remark Codes).

**Group codes:**

| Code | Meaning                               |
| ---- | ------------------------------------- |
| CO   | Contractual Obligation (write-off)    |
| PR   | Patient Responsibility (balance bill) |
| OA   | Other Adjustment                      |
| PI   | Payer Initiated                       |

Denial codes are visible on the claim detail page. Add notes with type "Denial" or "Appeal" to document follow-up actions.

***

## Secondary/Tertiary Claims

After the primary payer adjudicates, create a secondary claim:

1. From the paid/denied claim, use **Generate Secondary** (frequency code `1`).
2. The secondary claim references the original via `original_claim_id`.
3. Submit to the secondary payer with the primary's EOB data.

AHCCCS (Medicaid) is always the payer of last resort.

***

## Void/Replacement Claims

| Frequency Code | Purpose                    |
| -------------- | -------------------------- |
| 1              | Original submission        |
| 7              | Replacement of prior claim |
| 8              | Void of prior claim        |

To void a submitted claim, transition status to `void` and set frequency code `8`. For replacement, create a new claim with frequency code `7` referencing the original.

***

## Claim Detail Page

The claim detail page (`/pm/claims/:claimId`) provides:

* **Header:** Claim number, status badge, patient, payer, dates, total charge
* **Lines Tab:** CPT codes, modifiers, units, amounts, charge links
* **Scrub Results Tab:** Run on-demand scrubbing, view errors/warnings
* **Notes Tab:** Chronological notes (scrub errors, denials, appeals, corrections)

***

## Permissions

| Permission         | Description                  |
| ------------------ | ---------------------------- |
| `pm.claims.view`   | View claims list and detail  |
| `pm.claims.create` | Generate claims from charges |
| `pm.claims.update` | Edit draft claims, add notes |
| `pm.claims.submit` | Submit claims to payer       |

***

## Integration with PM-07 (Charges)

* Claims are generated from **approved** charges (`status = 'approved'`, `claim_id IS NULL`)
* Each claim line stores `charge_id` linking back to the source charge
* When a claim is generated, linked charges transition to `billed` status
* Charges linked to a claim cannot be voided without first voiding the claim

***

## Future: PM-15 Clearinghouse Integration

Currently, "Submit" transitions the claim status but does not transmit to a clearinghouse. When PM-15 is implemented:

* Submission will generate 837P/837I X12 transactions
* The `clearinghouse_trace_id` will be populated
* Status polling will auto-update claims based on 277CA responses
* ERA (835) processing will auto-post payments via PM-09
