Status: ✅ Implemented
Last Updated: 2026-02-22
Last Verified: 2026-02-22
Spec: PM-08 Claims Management & Submission
Constitution Reference: Section 1.2 (Core Independence), Section 1.3 (Integration Patterns)
Overview
PM-08 owns claim generation from charges (837P/837I), pre-submission scrubbing, submission via clearinghouse or direct payer, status tracking, denial management (CARC/RARC), and secondary/tertiary and void/replacement claims. Key tables:pm_claims, pm_claim_linesRLS: Full CRUD policies on both tables (tenant-isolated via
organization_id). DELETE restricted to org_admin.Scrubbing engine:
src/cores/pm/utils/claim-scrubbing.ts — validates NPI, diagnosis codes, service dates, filing deadline, line-level CPT/units/POS.Event publisher:
src/cores/pm/hooks/useClaimMutation.ts
Integration Points
Event Contracts
claim_submitted (PM-08 → PM-15, PF-10, PF-04)
Status: ✅ ImplementedLast Verified: 2026-02-22
Channel:
cl_pm_eventsPublisher:
src/cores/pm/hooks/useClaimMutation.ts (via publishEvent)DB registration:
fw_workflow_events row exists (owning_core: pm, category: operational)
Published when a claim transitions to submitted status.
claim_status_changed (PM-08 → PM-11, PF-10, FA)
Status: ✅ ImplementedLast Verified: 2026-02-22
Channel:
cl_pm_eventsPublisher:
src/cores/pm/hooks/useClaimMutation.ts (via publishEvent)DB registration:
fw_workflow_events row exists (owning_core: pm, category: operational)
Published on any claim status transition.
Valid State Transitions:
Data Contracts
PM-07 → PM-08: Approved Charges Query
Status: ✅ ImplementedLast Verified: 2026-02-22 PM-08 generates claims from approved, unlinked charges:
pm_claim_lines row:
After claim creation, the source charge’s
claim_id is back-populated.
PM-08 → PM-09: Claims for Payment Posting
Status: ✅ ImplementedLast Verified: 2026-02-22 PM-09 reads claims and lines to post ERA payments:
pm_claims columns via .update():
PM-08 Scrubbing: Pre-Submission Validation
Status: ✅ ImplementedLast Verified: 2026-02-22
Location:
src/cores/pm/utils/claim-scrubbing.ts