Last Updated: 2026-03-02 (manual follow-up: FA journal entry guidance, deleted_at, pending contracts updated)
Status: 📋 Planned
Spec: PM-33 Capitation & PMPM Revenue Reconciliation
Constitution Reference: Section 1.2 (Core Independence), Section 1.3 (Integration Patterns)
Overview
PM-33 adds capitation contract management, roster tracking (enrollment/dis-enrollment), monthly period generation, and payment reconciliation for PMPM contracts. It integrates with PM-01 (patient/member identity for roster events), PM-09 (payment posting), PM-11 (RCM dashboard — capitation revenue and utilization), PM-23 (contract terms reference), and FA (revenue recognition viacapitation_payment_received event).
Integration Points (from spec)
Data Source Tables (PM-33)
Event Contract: capitation_payment_received
Publisher: PM (pm_capitation_reconciliations on payment post)Subscriber: FA (AR / revenue recognition)
Status: 📋 Pending — EVENT_CONTRACTS.md entry to be created as a generate-tasks task. Draft payload:
member_id_external or any PHI. organization_id is required for FA tenant isolation.
FA Journal Entry Guidance (GAAP ASC 606)
Capitation revenue is recognized ratably over the service period (not upon cash receipt). The FA consumer ofcapitation_payment_received should post the following journal entry:
Period matching: FA must use
period_id (→ pm_capitation_periods.period_start_date / period_end_date) to post revenue to the correct accounting period. Payments received outside the service month (early or late) must still credit the revenue account for the period covered, not the cash receipt date — confirm with CFO/Controller.
Deferred revenue consideration: If MCO pays capitation in advance of the service month, FA may need a deferred revenue liability entry until the period begins. Confirm with FA team whether advance capitation payments occur in practice.
FA team confirmation required (PENDING_CONTRACTS.md): FA team must confirm the chart of accounts structure (account codes for MCO capitation revenue, payer-specific AR) before EVENT_CONTRACTS.md entry is finalized.
Platform Layer Usage
- PM-11: Reads
pm_capitation_periods(expected_revenue, received_revenue, status) andpm_encounters(encounter count vs. capitation amount) for dashboard widgets. No new event contracts; same-core data access. - PF-30 Permissions:
pm.capitation.viewandpm.capitation.manageseeded via migration; checked viauseHasPermissionin UI. @/platform/csv: Bulk import pattern for CSV roster upload; column mapping derived frompm_capitation_roster_eventsschema.
Integration Matrix
Pending Contracts
Security Notes
- All four PM-33 tables are RLS-protected with
pm_has_org_access(organization_id, auth.uid()). - UPDATE policies include
WITH CHECKpreventingorganization_idmodification. member_id_externalis PHI; encrypted at rest via pgcrypto; decrypt only viapm_decrypt_member_id()SECURITY DEFINER function.capitation_payment_receivedevent must never include PHI in payload.