Skip to main content

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.

Version: 1.0.0
Last Updated: 2026-02-20
Spec: PM-08 Claims Management & Submission

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:
RuleSeverity
Billing provider NPI required (10 digits)Error
Payer requiredError
Patient requiredError
At least 1 claim lineError
Primary diagnosis code requiredError
Filing deadline not expiredError
Each line: CPT code requiredError
Each line: units > 0Error
Each line: charge amount > 0Error
Each line: service date requiredError
Each line: ≥1 diagnosis pointerError
Duplicate modifiers on a lineWarning
Click Run Scrub on the claim detail page to validate. Claims with errors cannot be submitted.

Claim Lifecycle

draft → scrubbed → submitted → accepted → paid → adjusted
                           ↘ denied → appealed → paid/denied
                           ↘ void
StatusDescription
DraftGenerated from charges, awaiting scrubbing
ScrubbedPassed validation, ready for submission
SubmittedSent to clearinghouse/payer
AcceptedPayer acknowledged receipt (999)
PaidFully adjudicated and paid (835)
Partial PaymentPartially paid, remainder pending
DeniedDenied by payer
AppealedUnder appeal after denial
VoidVoided (frequency code 8)
AdjustedPost-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:
CodeMeaning
COContractual Obligation (write-off)
PRPatient Responsibility (balance bill)
OAOther Adjustment
PIPayer 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 CodePurpose
1Original submission
7Replacement of prior claim
8Void 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

PermissionDescription
pm.claims.viewView claims list and detail
pm.claims.createGenerate claims from charges
pm.claims.updateEdit draft claims, add notes
pm.claims.submitSubmit 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