> ## 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.

# Integration Contract

> Spec: specs/pm/specs/PM-08-EN-13-jurisdiction-aware-filing-deadlines.md Feature ID: PM-08-EN-13 Core: PM Status: ✅ Complete

**Spec:** `specs/pm/specs/PM-08-EN-13-jurisdiction-aware-filing-deadlines.md`\
**Feature ID:** PM-08-EN-13\
**Core:** PM\
**Status:** ✅ Complete

***

## Summary

PM-08 filing deadline calculation and PM-26 compliance reporting consume jurisdiction-specific billing configuration from PF-96 profiles to remove hardcoded Arizona constants while preserving Arizona parity behavior.

***

## Integration Pattern

* **Publisher Core:** PF (jurisdiction profile data ownership)
* **Consumer Core:** PM (filing deadline calculation and compliance reporting)
* **Pattern:** Direct configuration dependency (PM reads PF-96 jurisdiction profile values via `pf_resolve_jurisdiction_profile()` \[SECURITY DEFINER], per `docs/architecture/integrations/API_CONTRACTS.md` § PF-96 and `docs/architecture/integrations/PF-96-medicaid-state-compliance-configuration-INTEGRATION.md`)

No direct CL import paths are introduced as this integration concerns PM and PF only.

***

## Data Contract (Read)

PM expects the resolved profile to provide:

* `billing.filing_deadline_days` — Number of days from date of service within which a claim must be filed (AZ default: 365)
* `billing.compliance_window_hours` — Hours within which initial appointment must be scheduled after screening (AZ default: 72)

If a field is absent, fallback behavior follows PF-96 default profile guidance (365 days / 72 hours).

***

## Consumer Integration Points

| Consumer                            | What It Reads                     | How It Integrates                                         |
| ----------------------------------- | --------------------------------- | --------------------------------------------------------- |
| `calculateFilingDeadline()` utility | `billing.filing_deadline_days`    | Callers pass value from `useBillingRules()` hook          |
| `pm-26-compliance-report` edge fn   | `billing.compliance_window_hours` | `getJurisdictionProfile()` from `_shared/jurisdiction.ts` |
| PM-26 export filename               | Profile `display_name`            | Generic naming instead of `ahcccs-compliance-*`           |

***

## Security and Tenant Isolation

* Profile reads must be scoped by `organization_id` (and `site_id` when supplied).
* No PHI payload is required for profile resolution.
* Filing and compliance calculations remain auditable through existing PM-08/PM-26 audit paths.

***

## Backward Compatibility

* Arizona organizations remain behaviorally equivalent to legacy PM-08/PM-26 logic.
* No breaking schema changes are introduced by this enhancement.
* Existing PM-08 and PM-26 tests should remain green with Arizona fixture parity.

***

## PF-96 API Contract

### Request (Frontend)

```typescript theme={null}
const { data: billingRules } = useBillingRules();
// Returns: { filing_deadline_days: number; compliance_window_hours: number; ... }
```

### Request (Edge Function)

```typescript theme={null}
const profile = await getJurisdictionProfile(supabaseClient, orgId, siteId);
const deadlineDays = profile.billing?.filing_deadline_days ?? 365;
```

### Fallback Semantics

If the jurisdiction profile is unavailable or missing the requested field, consumers fall back to Arizona defaults (365 days / 72 hours). This ensures backward compatibility during PF-96 rollout.

***

## Security & Audit

* Profile reads are scoped by `organization_id` (and `site_id` when supplied) via `pf_resolve_jurisdiction_profile()` (SECURITY DEFINER).
* No PHI payload is required for profile resolution.
* Filing and compliance calculations remain auditable through existing PM-08/PM-26 audit paths.
* Deadline overrides are logged to `pf_audit_logs` with action `filing_deadline_override`.

***

## Validation Checklist

* [ ] Arizona parity: 365-day filing deadline, 72-hour compliance window preserved.
* [ ] Non-Arizona profile: at least one fixture with different values tested.
* [ ] Edge function `pm-26-compliance-report` uses `getJurisdictionProfile()` correctly.
* [ ] `calculateFilingDeadline()` receives value from `useBillingRules()` (not hardcoded).
* [ ] PM-08 and PM-26 regression suites pass with Arizona fixtures.

***

## Related Specs

* `specs/pm/specs/PM-08-claims-management-submission.md`
* `specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md`
* `docs/architecture/integrations/PM-07-EN-13-jurisdiction-aware-billing-rules-INTEGRATION.md`
